dai_zixuan 2018-08-17 14:18 采纳率: 50%
浏览 1707
已采纳

关于及时刷新wifi列表

在项目中遇到一个疑惑,一台嵌入式设备的wifi模块,修改任意一个wifi站点的名字,
看wifi列表能不能及时刷新出新的wifi名,直接测的结果很正常,最多五秒就能刷新出
来。可是当telnet进去后,打开wpa_cli,每隔6秒才会收到一次
“CTRL-EVENT-SCAN-RESULTS”,且需要收到五次以上才能“scan_result”出新的wifi名,中途多次“scan”都不起作用,也就是最少30秒才能在wpa_cli下刷出新的wifi。

直接测的结果应该依赖于用wpa_cli测得的结果,可是为什么两者的结果却相反呢?
请大神们指点迷津,此外,这和wifi状态机有何关系,wifi状态机又是如何实现的呢?
能不能用通俗易懂的语言讲一下wifi状态机的原理,无论从哪方面回答,有帮助即可,
感激不尽

  • 写回答

2条回答 默认 最新

  • 小白龙945 2018-08-18 02:27
    关注

    更好我是搞wifi的,和你解释下原理
    1. wifi 有个扫描间隔,目前设置是7s,在7s内重新设置扫描,命令是能够发送到kernel的,但是kernel有一个判断机制,7s内的重复扫描直接被return了,不会触发硬件去扫描
    底层扫描wifi的原理是 scan 命令通过netlink发送时,先填充扫描信道,而扫描信道又和国家码有关系,需一一理清
    2. 需要收到五次以上才能“scan__result”出新的wifi名,这个属于一个bug,在framework中收到CTRL-EVENT-SCAN-RESULTS是,就应该更新wifi列表的
    3. 查看《深入理解Android:WiFi模块 NFC和GPS卷》
    4. wpa_cli 的详细内容可以看开源的,可以下载查看,在wpa_cli中有命令不去依靠上层界面显示来获取wifi 连接列表

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog