BLE Custom Service generated code

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

cross mob
Anonymous
Not applicable

Is there any documentation on creating custom services in psoc-ble??    

   

I am trying to create an interface similar to the TI SensorTag and when I create the custom service with custom characteristics in the profile then generate the application, I don't see any generated code for the custom service.  

   

Am I missing something???

   

 

   

Bill

0 Likes
3 Replies
HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

When I add a custom service, with custom characteristics, I get two files generated: CYBLE_custom.h / CYBLE_custom.c. They contain all the UUID definitions and the structure definitions for your service.

   

Apart from that, there is nothing generated, but I don't see what should be done there? What code do you expect to be generated?

   

In your code, you need to handle the CYBLE_EVT_GATTS_WRITE_REQ event to capture all the writes to your own custom attributes. Maybe you need to write to your attributes and generate notifications - that can be done from the main loop or a timer interrupt. Again, this is nothing that can be generated.

0 Likes
Anonymous
Not applicable

That was helpful, it appears I am making this more complex than it really is.

   

 

   

Can you point me to the api to  write to your attributes and generate notifications, or better yet, some reference code for a custom profile that provides data to a client??

   

 

   

Thanks in advance

   

 

   

Bill

0 Likes
HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

I assume you have read a BLE introduction, so you know how BLE and the attribute handling (GATT profile) works. Maybe read AN91627 (http://www.cypress.com/?rID=102504 ) for an explanation.

   

I actually took the heart rate sensor example project and looked at how its implemented, Creator generates a lot of code for this profile and the service, that has everything you need.

   

To write an attribute, use the CyBle_GattsWriteAttributeValue function. To generate a notification, use CyBle_GattsNotification(). Just look at the API documentation, or how its used in the sample projects.

   

In the end, the standard profiles do the same a custom service would do, its just that they have predefined attributes and UUIDs, and their behaviour is defined. There is nothing special about them... (Cypress just provides a simplified API to use them, but their internals are not that complicated).

0 Likes