有時需要透過主機裝置(MCU非手機)獲取從裝置的廣播資訊例如廣播包,MAC地址,掃描應答包等
以下的程式片段及功能實現是在WCH的CH59X的observer例程上實現的;
1、獲取廣播包
所有的函式在庫函式中都可以找到,具體實現函式如下:
case GAP_DEVICE_INFO_EVENT: { ObserverAddDeviceInfo(pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType); //獲取廣播資訊 advtype_flag = pEvent->deviceInfo.eventType; // PRINT("廣播型別:%d\n",advtype_flag); if(advtype_flag == 0) { len=pEvent->deviceInfo.dataLen; // PRINT("廣播資料:"); for(uint8_t i=0 ;i<len;i++) { advdata[i]= pEvent->deviceInfo.pEvtData[i]; //PRINT("%02x",advdata[i]); PRINT("%c",advdata[i]); } PRINT("\n"); } } break;
這裡的判斷(if(advtype_flag == 0))是對廣播型別的篩選,有幾種不同的廣播型別;這裡篩選了第一種普通廣播:
2、MAC地址
if(pEvent->discCmpl.numDevs > 0) { int i, j; // Increment index of current result (with wraparound) for(j = 0; j < pEvent->discCmpl.numDevs; j++) { PRINT("Device %d : ", j); for(i = 0; i < 6; i++) { PRINT("%x ", pEvent->discCmpl.pDevList[j].addr[i]); } PRINT("\n"); } }
個人學習分享;如有問題請指正
轉載請保留出處;