工具/软件:
尊敬的 TI 团队:
我正在设计一个 多角色应用 在上 CC2340R5 串联电阻 BLE5-Stack 。 该设备同时发挥作用 中心 和 在一起 、并成功地与另一个通信 CC2340R5 BLE 器件 充当外设的角色。 此外、多角色模块还可以成功与移动设备连接。
MTU 大小 设置为255-4
。
POSIX 线程栈大小为0x400
堆大小为0x4D50
问题:
我正在使用从一个外围器件(另一个 CC2340R5)向我的多角色中央器件发送通知 100字节的数据 。 中央接收成功 55个数据包 。 然而,在那之后,中心 停止接收数据 。 时钟函数 更新数据 在上 GATT 写入特性 外设的可用性(四处发送 50字节 )、我遇到了以下问题:
我看到了一个NULL
回报:
bool Central_sendGattWrite(uint8_t *pData, uint16_t len, uint16_t ConnHandle) { attPrepareWriteReq_t req; status_t status = FAILURE; BLEAppUtil_entityId_t getSelfEntity; getSelfEntity = BLEAppUtil_getSelfEntity(); req.pValue = GATT_bm_alloc(ConnHandle, ATT_PREPARE_WRITE_REQ, len, NULL); if (req.pValue != NULL) { req.handle = writeHandle - 1 req.len = len; memcpy(req.pValue, pData, len); status = GATT_WriteLongCharValue(ConnHandle, &req,/*ICall_getEntityId*/ getSelfEntity); //GATT_WriteNoRsp if (status != SUCCESS) { GATT_bm_free((gattMsg_t*) &req, ATT_PREPARE_WRITE_REQ/*ATT_WRITE_REQ*/); UART2_write(uart, "fail\n",4, 0); UART2_write(uart, &status,1, 0); } }else { UART2_write(uart, "\nBM_Allocfail",13, 0); } return status; }
我已经测试了另一个场景、其中包括 中心 将数据发送到 在一起 连接 GATT 写入特性 并期望 A 通过通知回复 每一次 1秒 。 会发生以下情况:
-
系统最初工作正常、但是 30秒后 、 通知接收停止 。
-
执行另一个任务时会发生什么 GATT 写入 如果返回失败状态0x16、则使用 GATT_WriteLongCharValue 进行操作
status = GATT_WriteLongCharValue(ConnHandle, &req,getSelfEntity);
如果对导致问题的原因以及如何解决问题有任何建议或见解、我将不胜感激。