我编写了一个可通过 simple_central .c 中的菜单访问的小函数
/*********************************************************************
* @fn SimpleCentral_enableNotif
*
* @brief Enable Notifications
*
* @param index - NOT USED
*
* @return always true
*/
bool SimpleCentral_enableNotif(uint8_t index) {
uint8_t connIndex = SimpleCentral_getConnIndex(scConnHandle);
status_t status;
attWriteReq_t req;
req.pValue = GATT_bm_alloc(scConnHandle, ATT_WRITE_REQ, 2, NULL);
if (req.pValue != NULL) {
req.handle = connList[connIndex].charHandle;
req.len = 2;
req.pValue[0] = LO_UINT16(GATT_CLIENT_CFG_NOTIFY);
req.pValue[1] = HI_UINT16(GATT_CLIENT_CFG_NOTIFY);
req.sig = 0;
req.cmd = 0;
status = GATT_WriteCharValue(scConnHandle, &req, selfEntity);
if (status != SUCCESS) {
GATT_bm_free((gattMsg_t*) &req, ATT_WRITE_REQ);
}
}
return (true);
}
在 遇到 BLE_DISC_State_char 并且已设置 charHandle 后调用此函数。 我从函数中获取状态= 0x00、但在 SimpleCentral_processGATTMsg 中、我最终会遇到写入错误(0x03)。 我对启用这些通知非常困惑。 它们在我的 iPhone 中央应用程序上工作、因此我知道外设设置正确、订阅后会推送通知。
此示例 非常有用、非常接近我所做的工作。 那么、我假设它与句柄有关、我是否需要找到要通过的 CCCD? 以及如何实现?
SDK 5.20.00.52