WiFi信号强度--SIGNAL_POLL
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相关推荐
- mac地址扫描源码_iNet Network Scanner扫描网络,及时反馈WiFi信号强度!
想要好用的Mac网络扫描工具?iNet Network Scanner mac版是一款Macos上一款不错的Mac网络扫描软件,为您提供有关您Mac网络和您的Mac连接到设备的所有信息.能够反馈出Wi ...
- 自动刷新获取wifi信号强度,android
我还是挺有必要把这次解决bug的过程记录下来的.转自http://fecbob.pixnet.net/blog/post/39322597-android-%3E-wifi-%3E-%E6%8E%83 ...
- 关于检测手机信号强度,wifi信号强度以及检测周围wifi热点的一个小例子
From: http://blog.csdn.net/wanglj0925/article/details/7743182 一.检测手机信号强度 检测手机信号强度需要用到TelephonyManage ...
- Android wifi 信号强度单位 dbm
当利用android wifi模块获取wifi信号强度值时我们通常会得到-20~-80之间的值,单位是dBm.如:-67dBm. 那么什么是dBm呢? dBm 是表示功率绝对值大小的值,是以1mW功率 ...
- 【转】如何检测wifi信号强度? -- 不错
原文网址:http://jingyan.baidu.com/article/90895e0fe9616164ec6b0b88.html 当我们在使用wifi上网时,在某些角落会出现无wifi信号,或是 ...
- win10无线信号强度测试软件,如何在Win10 1909上确定Wi-Fi信号强度
Wi-Fi网络已经非常普及了,拿出手机或笔记本设备搜索WiFi设备即可连接上网了,但是你知道最大Wi-Fi信号强度在哪个位置吗?怎么检查Wi-Fi信号强度?我们通过任务栏中Wi-Fi图标中的实心条数来 ...
- Mac OS X Lion 系统中检测 WiFi 信号强度
Mac OS X Lion 系统中检测 WiFi 信号强度 很多果迷老觉得在家里用 Wi-Fi 无线上网速度比较慢,但自己又不清楚到底是不是路由器摆放的位置不对.其实,Mac 电脑的 OS X Lio ...
- Android 获取wifi信号强度
先来了解下Android如何获取wifi的信息: WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE); Wif ...
- android WIFI 信号强度检测
前几天开会,领导突然说让我们增加个功能,和手机WIFI信号图标一样,会随着信号强度的强弱来改变.(因为我们这里所有状态栏都是隐藏了的,所以这些小东西都得自己写了). 好了,言归正传.我们来说说如何实现 ...
最新文章
- 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )
- Winform中在使用VS+svn进行协同开发时添加引用时的相对路径和绝对路径的问题
- 众唱点歌机会显示无法连接服务器,目前众多厂商唱多的服务器附加存储缺点分析...
- C#LeetCode刷题之#717-1比特与2比特字符( 1-bit and 2-bit Characters)
- mac苹果ping不通网络
- python mro文件_Python中MRO
- Ubuntu20.04、22.04安装nvidia显卡驱动——超详细、最简单
- 阿里天池大数据之移动推荐算法大赛总结及代码全公布
- 什么是百度竞价包年?竞价包年骗局揭露
- 中式风格装修,彰显东方迷人的魅力
- d3.js操作svg
- 南邮linux编程实验报告,小弟在南邮选了一门令我终生后悔的选修课:linux基础教程,考试不会了!-!...
- redis内存占用过高的问题排查
- 银行提供了整存整取定期存储业务,其存取分为一年、二年、三年、五年,到期凭存单支取本息
- VsCode插件之vscode-icons
- 赛维时代跨境电商店铺锐减-成都扬帆跨境电商
- 【TypeScript】HTML直接引入TypeScript脚本
- 基于FPGA的SD卡的数据读写实现(SD NAND FLASH)
- 用TensorFlow训练一个物体检测器(手把手教学版)
- 豆瓣:“慢公司”,互联网营销
热门文章
- 读书笔记:《眨眼之间》
- vba单元格颜色设置
- 【层级多标签文本分类】Hierarchical Multi-label Text Classification: An Attention-based Recurrent Network Approa
- Ubuntu16.04LTS环境下搭建MQTT服务器以及QT实现MQTT客户端
- 利用SecureCrt实现自动化脚本
- 启动Tomcat报错org.hibernate.cfg.Environment.clinit HHH000206: hibernate.properties not found
- 给别人计算机office作业评语,Office操作题自动评分系统的总体评价
- teechart的addarray_C# TeeChart的一些用法
- 网络版收银系统服务器更新是什么意思,POS收银系统也需要更新的五大理由
- modbusCRC 、CRC-CCITT(0xFFFF) 校验