请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2640R2F 主题中讨论的其他器件:CC2541
工具/软件:TI-RTOS
使用 simplelink_cc2640r2_sdk_1_40_00_45并在服务上创建读取/指示字符、指示大小限制为20、而读取大小限制为251。
它是否符合 BLE 标准、或者这是 SDK 1.40版的已知限制?
是否在 simplelink_cc2640r2_sdk_1_50_00_71或 simplelink_cc2640r2_sdk_1_50_00_58中对此进行了修复?
请参见 gattServApp_SendNotiInd 的实现以及粗体行
/********* *@fn gattServApp_SendNotiInd * *@简要发送 ATT 通知/指示。 * *@param connHandle -要使用的连接句柄。 *@param cccValue -客户端特征配置值。 *@param Authenticated -是否需要经过身份验证的链接。 *@param pAttr -指向属性记录的指针。 *@param taskId -要通知确认的任务。 *@param pfnReadAttrCB -读取回调函数指针。 * **@return SUCCESS or FAILURE */ static bStatus_t gattServApp_SendNotitInd (uint16 connHandle、uint8 cccValue、 uint8已认证、gattAttribute_t *pAttr、 uint8 taskId、pfnGATTReadAttrCB_t pfnReadAttrCB) {attHandleValueNoti_t Notti; uint16 字节;bStatus_t status;//如果属性值长于(ATT_MTU-3)八位字节,则//仅可以 发送此 MTU 值的第一个(len_attributes -3)八位字节。// NOTI.pValue =(uint8 *) GATT_BM_alloc (connHandle、ATT_Handle_Value_Noti、 GATT_MAX_MTU,&len ); if ( Noti.pValue != NULL ) { 状态=(*pfnReadAttrCB)(connHandle、pAttr、oti.pValue、&oti.len、 0、len、GATT_LOCAL_READ); 如果(status == Success) { oti.handle = pAttr->句柄; if (cccValue & GATT_CLIENT_CFG_NOTIY) { 状态= GATT_Notification (connHandle、&Noti、Authenticated); } else // GATT_CLIENT_CFG_Indicate { STATUS = GATT_Indication (connHandle、(attHandleValueInd_t *)和通知、 已验证,taskId ); } } if ( status !=成功) { GATT_BM_FREE ((gattMsg_t *)&NOTI、ATT_Handle_Value_NOTI); } } 否则 { 状态= bleNoResources; } 返回(状态); }