1. 信号强度算法

WifiManager.java

    /** Anything worse than or equal to this will show 0 bars. */
private static final int MIN_RSSI = -100;
/** Anything better than or equal to this will show the max bars. */
private static final int MAX_RSSI = -55;
/**
* Calculates the level of the signal. This should be used any time a signal
* is being shown.
*
* @param rssi The power of the signal measured in RSSI.
* @param numLevels The number of levels to consider in the calculated
*            level.
* @return A level of the signal, given in the range of 0 to numLevels-1
*         (both inclusive).
*/
public static int calculateSignalLevel(int rssi, int numLevels) {
/* in general, numLevels is 4  */
if (rssi <= MIN_RSSI) {
return 0;
} else if (rssi >= MAX_RSSI) {
return numLevels - 1;
} else {
float inputRange = (MAX_RSSI - MIN_RSSI);
float outputRange = (numLevels - 1);
return (int)((float)(rssi - MIN_RSSI) * outputRange / inputRange);
}
}

2. WiFi Command流程

3. wpa_supplicant启动流程

4. WifiService启动流程

5. SIGNAL_POLL调用流程

eloop_run->..
wpa_supplicant_ctrl_iface_receive-> //接收并处理来自framework的command
wpa_supplicant_ctrl_iface_process-> (SIGNAL_POLL)
wpa_supplicant_signal_poll->
wpa_drv_signal_poll  (struct wpa_supplicant *wpa_s,struct wpa_signal_info *si)->
wpa_driver_signal_poll  (void *priv, struct wpa_signal_info *si)->
wpa_driver_wext_driver_cmd(priv, RSSI_CMD, buf, sizeof(buf))或  //driver_cmd_wext.c
wpa_driver_wext_driver_cmd(priv, LINKSPEED_CMD, buf, sizeof(buf))->
struct iwreq iwr;
iwr.u.data.pointer = buf;
iwr.u.data.length = buf_len;
ioctl(drv->ioctl_sock, SIOCSIWPRIV, &iwr);
在Kernel中对应函数:
cfg80211_wext_setpriv (wext-compat.c)
RSSI_CMD:
cfg80211_wireless_stats (获取当前已连接AP的信号强度等信息)
对于上面的LINKSPEED_CMD,如果ioctl不成功,则调用ioctl(drv->ioctl_sock, SIOCGIWRATE, &wrq)
在Kernel中对应函数:
cfg80211_wext_giwrate (获取当前已连接AP的发送速度)
//每个AP对应的信息
struct station_info {
u32 filled;
u32 connected_time;
u32 inactive_time;
u32 rx_bytes;
u32 tx_bytes;
u16 llid;
u16 plid;
u8 plink_state;
s8 signal;  //信号强度
s8 signal_avg;
struct rate_info txrate;  //发送速度
struct rate_info rxrate;
u32 rx_packets;
u32 tx_packets;
u32 tx_retries;
u32 tx_failed;
u32 rx_dropped_misc;
struct sta_bss_parameters bss_param;
int generation;
};

WiFi信号强度--SIGNAL_POLL相关推荐

  1. mac地址扫描源码_iNet Network Scanner扫描网络,及时反馈WiFi信号强度!

    想要好用的Mac网络扫描工具?iNet Network Scanner mac版是一款Macos上一款不错的Mac网络扫描软件,为您提供有关您Mac网络和您的Mac连接到设备的所有信息.能够反馈出Wi ...

  2. 自动刷新获取wifi信号强度,android

    我还是挺有必要把这次解决bug的过程记录下来的.转自http://fecbob.pixnet.net/blog/post/39322597-android-%3E-wifi-%3E-%E6%8E%83 ...

  3. 关于检测手机信号强度,wifi信号强度以及检测周围wifi热点的一个小例子

    From: http://blog.csdn.net/wanglj0925/article/details/7743182 一.检测手机信号强度 检测手机信号强度需要用到TelephonyManage ...

  4. Android wifi 信号强度单位 dbm

    当利用android wifi模块获取wifi信号强度值时我们通常会得到-20~-80之间的值,单位是dBm.如:-67dBm. 那么什么是dBm呢? dBm 是表示功率绝对值大小的值,是以1mW功率 ...

  5. 【转】如何检测wifi信号强度? -- 不错

    原文网址:http://jingyan.baidu.com/article/90895e0fe9616164ec6b0b88.html 当我们在使用wifi上网时,在某些角落会出现无wifi信号,或是 ...

  6. win10无线信号强度测试软件,如何在Win10 1909上确定Wi-Fi信号强度

    Wi-Fi网络已经非常普及了,拿出手机或笔记本设备搜索WiFi设备即可连接上网了,但是你知道最大Wi-Fi信号强度在哪个位置吗?怎么检查Wi-Fi信号强度?我们通过任务栏中Wi-Fi图标中的实心条数来 ...

  7. Mac OS X Lion 系统中检测 WiFi 信号强度

    Mac OS X Lion 系统中检测 WiFi 信号强度 很多果迷老觉得在家里用 Wi-Fi 无线上网速度比较慢,但自己又不清楚到底是不是路由器摆放的位置不对.其实,Mac 电脑的 OS X Lio ...

  8. Android 获取wifi信号强度

    先来了解下Android如何获取wifi的信息: WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE); Wif ...

  9. android WIFI 信号强度检测

    前几天开会,领导突然说让我们增加个功能,和手机WIFI信号图标一样,会随着信号强度的强弱来改变.(因为我们这里所有状态栏都是隐藏了的,所以这些小东西都得自己写了). 好了,言归正传.我们来说说如何实现 ...

最新文章

  1. 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )
  2. Winform中在使用VS+svn进行协同开发时添加引用时的相对路径和绝对路径的问题
  3. 众唱点歌机会显示无法连接服务器,目前众多厂商唱多的服务器附加存储缺点分析...
  4. C#LeetCode刷题之#717-1比特与2比特字符( 1-bit and 2-bit Characters)
  5. mac苹果ping不通网络
  6. python mro文件_Python中MRO
  7. Ubuntu20.04、22.04安装nvidia显卡驱动——超详细、最简单
  8. 阿里天池大数据之移动推荐算法大赛总结及代码全公布
  9. 什么是百度竞价包年?竞价包年骗局揭露
  10. 中式风格装修,彰显东方迷人的魅力
  11. d3.js操作svg
  12. 南邮linux编程实验报告,小弟在南邮选了一门令我终生后悔的选修课:linux基础教程,考试不会了!-!...
  13. redis内存占用过高的问题排查
  14. 银行提供了整存整取定期存储业务,其存取分为一年、二年、三年、五年,到期凭存单支取本息
  15. VsCode插件之vscode-icons
  16. 赛维时代跨境电商店铺锐减-成都扬帆跨境电商
  17. 【TypeScript】HTML直接引入TypeScript脚本
  18. 基于FPGA的SD卡的数据读写实现(SD NAND FLASH)
  19. 用TensorFlow训练一个物体检测器(手把手教学版)
  20. 豆瓣:“慢公司”,互联网营销

热门文章

  1. 读书笔记:《眨眼之间》
  2. vba单元格颜色设置
  3. 【层级多标签文本分类】Hierarchical Multi-label Text Classification: An Attention-based Recurrent Network Approa
  4. Ubuntu16.04LTS环境下搭建MQTT服务器以及QT实现MQTT客户端
  5. 利用SecureCrt实现自动化脚本
  6. 启动Tomcat报错org.hibernate.cfg.Environment.clinit HHH000206: hibernate.properties not found
  7. 给别人计算机office作业评语,Office操作题自动评分系统的总体评价
  8. teechart的addarray_C# TeeChart的一些用法
  9. 网络版收银系统服务器更新是什么意思,POS收银系统也需要更新的五大理由
  10. modbusCRC 、CRC-CCITT(0xFFFF) 校验