您好!
SDK 中是否有任何允许解析从扫描报告接收到的数据的实用程序?
我将 CC2340配置为中央设备、并扫描在广播数据中使用特定128位 UUID 进行广播的设备。
这是我要发送的广播数据的格式:
uint8_t advData1[] =
{
0x02,
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED | GAP_ADTYPE_FLAGS_GENERAL,
0x11,
GAP_ADTYPE_128BIT_MORE,
0x1d,
0xe9,
0xd9,
0xe7,
0x62,
0x7c,
0x44,
0xad,
0x90,
0xd8,
0x0f,
0xbb,
0x86,
0x1f,
0x73,
0x99,
};
在中央侧、我目前只查找0x11、然后是 GAP_ADTYPE___128bit_more:
case BLEAPPUTIL_ADV_REPORT:
{
bleStk_GapScan_Evt_AdvRpt_t *pScanRpt = &scanMsg->pBuf->pAdvReport;
if (pScanRpt->pData != NULL)
{
uint8_t indx = 0;
while (indx < pScanRpt->dataLen)
{
// index is greater than 1 and 128 Bit UUID
if (indx && pScanRpt->pData[indx] == GAP_ADTYPE_128BIT_MORE) {
// check length field
if(pScanRpt->pData[indx-1] == 0x11 && indx+0x11 <= pScanRpt->dataLen) {
snprintf(sUUID, sizeof(sUUID),"%X",&pScanRpt->pData[indx+1]);
MenuModule_printf(APP_MENU_SCAN_EVENT + 1, 0, "128 Bit UUID: %s", sUUID);
//for(size_t i = indx+1; i < indx+0x10; i++ ) {
// MenuModule_printf(APP_MENU_SCAN_EVENT + 1, 14+i-indx-1, "%x", pScanRpt->pData[i]);
//}
}
}
//
indx++;
}
}
但这不是打印我期望的数据、而且根据我看到的结果、我犹豫是否只做一个完整的 memcmp 来确定匹配项。
因此、我只想检查堆栈中是否有任何实用程序可以用于解析此扫描报告数据并返回指向请求字段值的指针?
穆南