PSoC 4.4 CyBle_StartTransmitterTest undefined reference

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
nmay
Level 1
Level 1
5 sign-ins First reply posted First question asked

I have a working BLE project, but need to add test routines for regulatory testing, namely the CyBle_StartReceiverTest and CyBle_StartTransmitterTest. I added calls to these routines and the routines are defined in the generated BLE_Stack.h file, but the source is not found. Also a right click on the BLE icon in the top design produces a datasheet with these routines listed and how they work.

I updated the components to the latest, I've done a clean build in the application and the stack. I've removed the generated file folders in the application. I'm building debug code.

The BLE part is 4.1 and the Component major/minor version is 3/66

I'm building on Windows 64 bit version 1909Screenshot 2021-12-02 121117.png

Environment:
PSoC Creator 4.4 (4.4.0.80)
Culture: English (United States)
OS Version: Microsoft Windows NT 10.0.18363.0
CLR Version: 4.0.30319.42000

Installed CyInstaller Products:
Peripheral Driver Library 3.1.3
Peripheral Driver Library 3.1.5
PSoC Programmer 3.29.1
PSoC Creator 4.4

Loaded Plugins:
Name: Customizer Loader
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Loads component customizers.

Name: Addin Discovery
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Discovers PSoC Creator addins (kits, language packs, etc)

Name: Device Catalog
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Device Catalog Plugin

Name: Documentation
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Adds the topics available in the documentation.

Name: Start Page
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Adds a start page to the framework.

Name: Output Window Plugin
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Adds the output window

Name: SCC Manager
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: The Source Code Control Manager is the central class used for SCC actions within PSoC Creator.

Name: Symbol, Schematic and SchMacro Factory
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: The Symbol and Schematic Factory is used to load, cache, and retrieve symbols and schematics.

Name: Project Manager Plugin
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Adds project management related functionality.

Name: GDE Plugin
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Loads the Symbol and Schematic editors

Name: Language Plugin
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Supports user files in multiple languages

Name: Workspace Factory
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: The Workspace Factory is used to retrieve instances of PSoC Creator workspaces.

Name: Project Factory
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: The Project Factory is used to retrieve instances of PSoC Creator projects.

Name: Toolchain Manager
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: PSoC Creator Toolchain Manager

Name: ARM GCC Generic
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: ARM GNU Generic

Name: ARM MDK Generic
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: ARM MDK Generic

Name: ARM IAR Generic
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: ARM IAR Generic

Name: DP8051 Keil Generic
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: DP8051 Keil Generic

Name: Device Selector
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Adds a dialog that allows the user to select a device.

Name: File Editor Factory Plugin
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Add file editors to the framework.

Name: Transport Framework
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Provides a generic device communication framework for use by other plugins.

Name: Debugger Core
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: The Core Debugger provides an architecture independent framework for the common debug features.

Name: PSoC Debugger
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Provides debugging support for the different PSoC families through a GDB back end.

Name: FM Debugger
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Provides debugging support for FM device families

Name: Device IO Transport
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Provides device IO support for Cypress devices though PSoC Programmer APIs.

Name: Serial Transport
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Provides basic serial device support for the rest of the tool.

Name: Bootloader Host
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Provides a host tool to perform bootloading operations.

Name: Background Elaborator
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: PSoC Creator Background Elaborator.

Name: TypeCache Factory
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: The TypeCache Factory is used to retrieve instances of TypeCaches.

Name: PSoC Fitter
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: PSoC Fitter Plugin

Name: FM Fitter
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: FM Fitter Plugin

Name: DWR Plugin
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Registers resource editors with devices.

Name: DMA Wizard
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Enables quick and correct development of applications that use DMA.

Name: Tuner Plugin
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: Manages custom component tuner executables

Name: Notice Window
Version: 4.4.0.80
Company: Cypress Semiconductor
Description: The Notice Window displays notices (status messages / errors with managed lifetimes).

0 Likes
1 Solution

Hi,

Sorry for the confusion created by my post. In Psoc creator if you right click on the ble component and open datasheet you can see that API's starting with CyBle so you have to use as it is how they have mentioned in the datasheet and no need to drop Cy or use prefix of the component name while using these API's in project.

Please can you share your project where you are facing this issue so that we can reproduce it at our end.

Regards,

Pratiksha V

View solution in original post

0 Likes
8 Replies
PratikshaV
Moderator
Moderator
Moderator
100 solutions authored 5 likes given 250 sign-ins

Hi, 

Please share your complete project where you are facing this issue so that we can reproduce it from our side.

 

Regards,

Pratiksha V

0 Likes

I'm working on a version of the project that I can share. I've also contacted support directly, but have not heard anything back.

0 Likes
PratikshaV
Moderator
Moderator
Moderator
100 solutions authored 5 likes given 250 sign-ins

Hi,

yeah you can share similar project where you are facing this issue if sharing of your project is not possible.

 

Regards,

Pratiksha V

0 Likes
BiBi_1928986
Level 7
Level 7
First comment on blog 500 replies posted 250 replies posted

Hello.

Just a suggestion...
The component in schematic is named BLE (not CyBLE).  But s/w is calling CyBLE...
I'd suggest dropping the Cy in the s/w and just use the BLE... name.

0 Likes

Hi,

That will not cause any issue in this case because all these API's will be predefined in library files so no need to drop Cy while calling these API's in project. 

 

Regards,

Pratiksha V

0 Likes

Hello.

Sorry, but I find your statement confusing.  At first you say is doesn't matter, then you say need to drop Cy.  Which is it?

I agree the API's will be auto-generated, but they will also have the prefix of the component name.  The Cy has to be dropped.

I tested this just now and I get the same error as nmay, "undefined reference".  Conclusion: drop the Cy.

Hopefully nmay will respond with their results.

0 Likes

Hi,

Sorry for the confusion created by my post. In Psoc creator if you right click on the ble component and open datasheet you can see that API's starting with CyBle so you have to use as it is how they have mentioned in the datasheet and no need to drop Cy or use prefix of the component name while using these API's in project.

Please can you share your project where you are facing this issue so that we can reproduce it at our end.

Regards,

Pratiksha V

0 Likes
lock attach
Attachments are accessible only for community members.

Hello.

I stand corrected wrt the BLE component and, shame on Cypress for making the BLE component unique.

From BLE Component datasheet:
Note: All BLE Component API names begin with CyBle_. This is a unique feature of the BLE
Component, and allows only one instance of the Component to be placed in your design.

This deviates from all other components when they are renamed in the schematic.  For example, in my sample project attached, I renamed the TCPWM_1 to GEN.  When built, it throws the "undefined reference" error.  The error goes away when the I use the GEN_ prefix in software.  And that's how all components with API's have behaved in my experience.  Evidently, the BLE component is unique with this aspect.

I also experimented with BLE component re-naming, and it does not matter what the name is in the schematic.  The API's will always use the CyBle_ prefix correctly.  Contrary to your last statement about the component name, I was not successful to use the schematic component name in place of CyBle_ prefix.  Maybe I was doing something wrong?  Maybe this is something you can also try.

Thank you PratikshaV for enlightening me on this component (which I've never used before).

Back to the original question from nmay:
  I guess, somewhere along the way, there is a missing Include file(s), or the directory path to the file(s) is not correct.  I was able to build the BLE Mouse example project and inserted the function call CyBle_StartReceiverTest without any issues.

0 Likes