有时需要通过主机设备(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");
- }
- }
个人学习分享;如有问题请指正
转载请保留出处;