Skip to main content
DS.4
Senior
November 7, 2022
Solved

Discovery of specific CCDA characteristic descriptors

  • November 7, 2022
  • 1 reply
  • 1091 views

Please support on following:

I am using the STM32WB55 as a BLE client (central).

As I understand there are several types of descriptors.

How do I know the characteristic descriptor I discovered is a Client Characteristic Configuration Descriptor(CCDA), and can be written?

I am using :

aci_gatt_disc_all_char_desc

That generates ACI_ATT_FIND_INFO_RESP_EVENT.

But the event does not hold a 'type' for the descriptor or a field indicating if it can be written. As according to AN5270 it holds : connection handle, format, length and data which i don't believe can help me that much.

I took a quick look into your example for BLE_p2pClient.

I see that the descriptor is found using the ACI_ATT_READ_BY_TYPE_RESP_VSEVT_CODE to discover the CCDA. But this doesn't help me because I do not know the UUID of the CCDA in advance.

case ACI_ATT_READ_BY_TYPE_RESP_VSEVT_CODE:
 
 ...
 
 if(uuid == P2P_NOTIFY_CHAR_UUID)
 
 {
 
#if(CFG_DEBUG_APP_TRACE != 0)
 
 APP_DBG_MSG("-- GATT : NOTIFICATION_CHAR_UUID FOUND - connection handle 0x%x\n", aP2PClientContext[index].connHandle);
 
#endif
 
 aP2PClientContext[index].state = APP_BLE_DISCOVER_NOTIFICATION_CHAR_DESC;
 
 aP2PClientContext[index].P2PNotificationCharHdle = handle;
 
 }
 }
...
 break;

Thanks!

This topic has been closed for replies.
Best answer by Remy ISSALYS

Hello,

The Client Characteristic Config Descriptor (CCCD) UUID is always the same according to BLE_p2pClient example the UUID is equal to 0x2902:

#define CLIENT_CHAR_CONFIG_DESCRIPTOR_UUID (0x2902)

See ACI_ATT_FIND_INFO_RESP_VSEVT_CODE event in the code.

Best Regards

1 reply

Remy ISSALYS
Remy ISSALYSBest answer
Technical Moderator
November 9, 2022

Hello,

The Client Characteristic Config Descriptor (CCCD) UUID is always the same according to BLE_p2pClient example the UUID is equal to 0x2902:

#define CLIENT_CHAR_CONFIG_DESCRIPTOR_UUID (0x2902)

See ACI_ATT_FIND_INFO_RESP_VSEVT_CODE event in the code.

Best Regards