TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640的multi_role历程的句柄获取问题

   

multi_role_processGATTDiscEvent(){
//….
 // If we're discovering characteristics
    else if (discInfo[connIndex].discState == BLE_DISC_STATE_CHAR)
    {
      // Characteristic found
      MyUart_Printf(true, INFOR_FORMAT,"readByTypeRsp:%x %d %d",pMsg->method,
      pMsg->msg.readByTypeRsp.numPairs, connIndex);
      if ((pMsg->method == ATT_READ_BY_TYPE_RSP) &&
          (pMsg->msg.readByTypeRsp.numPairs > 0))
      {
        // Store handle
        discInfo[connIndex].charHdl = BUILD_UINT16(pMsg->msg.readByTypeRsp.pDataList[3],
                                                   pMsg->msg.readByTypeRsp.pDataList[4]);
        Display_print0(dispHandle, MR_ROW_STATUS1, 0, "Simple Svc Found");
        MyUart_Printf(true, INFOR_FORMAT,"Simple Svc Found,%d %x", connIndex, discInfo[connIndex].charHdl);
      }
    }
}
以上代码中,在获取handle的时候为什么是从pMsg->msg.readByTypeRsp.pDataList数组中的3,4中取值,在这个地方这个数组的内容定义是怎么样的
Annie Liu:

请问这是来自处理传入的ATT_READ_BY_TYPE_RSP packet 吗?

您可以在蓝牙核心规范中找到ATT_READ_BY_TYPE_RSP packet 的定义:BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 3, Part F, 3.4.4.2 Read By Type Response:

由于multi_role应用程序对characteristic 1感兴趣,因此必须查看position 3和4。我同意这有点复杂,可以用较少的硬编码方式完成。

如果您对如何读取不同服务的传入数据包感到困惑,我建议您设置一个断点并在运行时查看整个数据包。

赞(0)
未经允许不得转载:TI中文支持网 » CC2640的multi_role历程的句柄获取问题
分享到: 更多 (0)