> 文档中心 > 全志XR806芯片 如何获取ap的rssi值?

全志XR806芯片 如何获取ap的rssi值?

1.问题背景
在网络设备上,很多开发者要把当前的网络质量反馈到用户上,以便用户了解当前网络环境,当网速慢或联网失败时做出及时的网络环境调整。

2.问题描述
如何获取目标ap的信号强度

3.解决办法
(1)当连接到ap时获取当前ap的信号强度值,通过以下方式来获取rssi和dbm的值:

ret = wlan_ext_request(g_wlan_netif, WLAN_EXT_CMD_GET_SIGNAL, (int)(&signal));printf("signal = %d! noise = %d!\r\n", (signal.noise + (signal.rssi/2)), signal.noise);

(2)获取附近ap的rssi值和dbm值,可以通过扫描结果来获取,其中获取ap信息结构体wlan_sta_ap里面的rssi成员代表rssi值,level代表dbm值。

wlan_ssid_t    ssid;uint8_t bssid[6];uint8_t channel;uint16_tbeacon_int;int     freq;int     rssi;     /* unit is 0.5db */int     level;    /* signal level, unit is dbm */int     wpa_flags;int     wpa_cipher;int     wpa_key_mgmt;int     wpa2_cipher;int     wpa2_key_mgmt;} wlan_sta_ap_t;

注意:获取的信号强度信息时需要进行一次扫描动作才能刷新缓存结果,所以获取信息之前需要调用wlan_ap_scan_once()函数扫描,并且等待扫描成功后,信号强度信息才会刷新。

原贴链接:https://bbs.aw-ol.com/topic/745
全志在线开发者交流企鹅群(客服机器人24小时在线解答):498263967
资源获取、问题讨论可以到全志在线开发者社区进行:https://www.aw-ol.com/
全志及开发者最新动态可以关注全志在线微信公众号