工具/软件:
尊敬的 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);
如果对导致问题的原因以及如何解决问题有任何建议或见解、我将不胜感激。