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 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据