Other Parts Discussed in Thread: SYSCONFIG
"Thread:SysConfig"中讨论的其他器件
您好!
背景:
rtLS_responser_CC26X2R1_LAUNCHXL_tirtos7_ticlang
rtLS_Coordinator_CC26X2R1_LAUNCHXL_tirtos7_ticlang
SDK 6.20.00.29
修改了工程以在 Adv 数据(在 GAP_DEVICE_INIT_DONE_EVENT 内)内嵌入 MAC 地址、例如:
// AiRISTA added advertData[19] = pPkt->devAddr[0]; advertData[20] = pPkt->devAddr[1]; advertData[21] = pPkt->devAddr[2]; advertData[22] = pPkt->devAddr[3]; advertData[23] = pPkt->devAddr[4]; advertData[24] = pPkt->devAddr[5];
问题-在 RC_EVT_ADV_REPORT 事件处理程序中、当我们检查堆栈报告的 MAC 地址与 ADV 数据中的相应字节匹配时、确实偶尔会出现差异、因为 BLE 堆栈报告的 MAC 与 Adv 数据中的 MAC 不同。 我们检查 Mac 的最后3个字节,因为前三个字节从不改变我们的设备,我们可以看到下面的行偶尔打印...
case RC_EVT_ADV_REPORT:
{
GapScan_Evt_AdvRpt_t* pAdvRpt = (GapScan_Evt_AdvRpt_t*) (pMsg->pData);
uint8_t status;
if (pAdvRpt->addr[2] != pAdvRpt->pData[21] || pAdvRpt->addr[1] != pAdvRpt->pData[20] || pAdvRpt->addr[0] != pAdvRpt->pData[19])
AiRISTA_DEBUG_SendDataToBackend_String("*** MISMATCH1 ***");
日志:
MAC 不匹配时、您可以看到偶尔会打印"MISMATCH1"。
此时、我们有两个广告标签、主 Adv 间隔为100ms、定期 Adv 间隔为100ms、此时协调器同步到这两个标签、同时还接收 IQ 样本。 我们的问题是、如果 Adv Data 与实际源 BLE Mac 混淆、这是否可能导致 IQ 样本在两个标签之间混在一起? 如果发生这种情况、那么在计算时、角度显然将是错误的
最后3条 MAC 为:
29c2 80和12 12 12 12
正常状态下的行与此类似(请注意"29c280、29c280"-来自 BLE 的 Mac 与来自 Adv 数据的 Mac -相同)
"2023-01-04 00:23:24:314"、$AdvRpt、2981883、273676829c280、29c280、80、-46、26、0、0、1、87
不匹配的行(注意事项"29c280、12121212"- BLE MAC 为29c280、Adv 数据中的 MAC 为121212)
2023-01-04 00:23:24:515",*** MISMATCH1 ***$AdvRpt, 2981883,2736768,29c280,1212,80,-68213,0,1,87
下面的代码用于打印这些代码行、以帮助您了解我们正在查看的内容:
char id_rx[12]; char id_tx[12]; char ble_tx[7]; char ble_tx_adv[7]; char interval[7]; char rssi[5]; itoa(AIRISTA_LOC_ID, id_rx,10); itoa(((pAdvRpt->addr[2]<<16) + (pAdvRpt->addr[1]<<8) + pAdvRpt->addr[0]), id_tx, 10); itoa(((pAdvRpt->addr[2]<<16) + (pAdvRpt->addr[1]<<8) + pAdvRpt->addr[0]), ble_tx, 16);//THIS IS MAC FROM BLE STACK itoa(((pAdvRpt->pData[21]<<16) + (pAdvRpt->pData[20]<<8) + pAdvRpt->pData[19]), ble_tx_adv, 16); //THIS IS MAC FROM Adv Data itoa(pAdvRpt->periodicAdvInt,interval,10); itoa(pAdvRpt->rssi,rssi,10); //2022/09/26 - change the @ to $ sign before AdvRpt //strcpy(buffer, "@AdvRpt,"); strcpy(buffer, "$AdvRpt,"); strcat(buffer,id_rx); strcat(buffer, ","); strcat(buffer, id_tx); strcat(buffer, ","); strcat(buffer, ble_tx); strcat(buffer, ","); strcat(buffer, ble_tx_adv); strcat(buffer, ","); strcat(buffer, interval); strcat(buffer, ","); strcat(buffer, rssi); strcat(buffer, ",");

















