经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 计算机硬件 » 查看文章
CH57x/CH58x/CH59x获取从机广播信息
来源:cnblogs  作者:小舟从此逝_1  时间:2024/5/31 17:46:26  对本文有异议

有时需要通过主机设备(MCU非手机)获取从设备的广播信息例如广播包,MAC地址,扫描应答包等

以下的程序片段及功能实现是在WCH的CH59X的observer例程上实现的;

1、获取广播包

所有的函数在库函数中都可以找到,具体实现函数如下:

  1. case GAP_DEVICE_INFO_EVENT:
  2. {
  3. ObserverAddDeviceInfo(pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType);
  4. //获取广播信息
  5. advtype_flag = pEvent->deviceInfo.eventType;
  6. // PRINT("广播类型:%d\n",advtype_flag);
  7. if(advtype_flag == 0)
  8. {
  9. len=pEvent->deviceInfo.dataLen;
  10. // PRINT("广播数据:");
  11. for(uint8_t i=0 ;i<len;i++)
  12. {
  13. advdata[i]= pEvent->deviceInfo.pEvtData[i];
  14. //PRINT("%02x",advdata[i]);
  15. PRINT("%c",advdata[i]);
  16. }
  17. PRINT("\n");
  18. }
  19. }
  20. break;

这里的判断(if(advtype_flag == 0))是对广播类型的筛选,有几种不同的广播类型;这里筛选了第一种普通广播:

 2、MAC地址

  1. if(pEvent->discCmpl.numDevs > 0)
  2. {
  3. int i, j;
  4. // Increment index of current result (with wraparound)
  5. for(j = 0; j < pEvent->discCmpl.numDevs; j++)
  6. {
  7. PRINT("Device %d : ", j);
  8. for(i = 0; i < 6; i++)
  9. {
  10. PRINT("%x ", pEvent->discCmpl.pDevList[j].addr[i]);
  11. }
  12. PRINT("\n");
  13. }
  14. }

个人学习分享;如有问题请指正

转载请保留出处;

原文链接:https://www.cnblogs.com/frontier/p/18224222

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号