您好!
我使用的是 在两 个 CC2640R2F Launchpad 上运行的示例项目 ble5_multi_role 项目和 ble5_simple_peripheral 项目、multi_role 充当客户端、而外设充当服务器。
我的 SDK 版本是 1.35.00.33。
连接后、我使用 Launchpad 上的键对外设上的特征执行读取/写入操作。
但是、当我尝试自动执行此过程时、在某些情况下会失败。
例如、我尝试在发现特征后立即执行写入、即:
if ((pMsg->method =ATT_READ_BY_TYPE_RSP)&&
(pMsg->msg.readByTypeRsp.numPairs >0)
{
//存储句柄
discInfo[connIndex].charHdl = build_uint16 (pMsg->msg.readByTypeRsp.pDataList[0]、
pMsg->msg.readByTypeRsp.pDataList[1]);
//在此处执行写入操作
MR_doGattRw (0);//无其他连接,因此索引为0
}
写入尝试失败、 我在外设侧看不到任何更改。
但是、如果我在同一个位置启动时钟、即
if ((pMsg->method =ATT_READ_BY_TYPE_RSP)&&
(pMsg->msg.readByTypeRsp.numPairs >0)
{
//存储句柄
discInfo[connIndex].charHdl = build_uint16 (pMsg->msg.readByTypeRsp.pDataList[0]、
pMsg->msg.readByTypeRsp.pDataList[1]);
Util_startClock (testingClock);
}
延时5秒、然后在超时时执行写入、写入将完成。
我试验了几个延迟值、即1s、2s 和5s。 我发现写入成功的时间为2秒和5秒、但失败的时间为1秒。
发生什么事了?