Android Wi-Fi 获取RSSI的代码流程

已连上和没连上AP的RSSI的获取不一样。对于已连接的AP,代码调用流程如下:


    fetchRssiAndLinkSpeedNative()
      |WifiNative.signalPoll()
         |//send "SIGNAL_POLL" to wpa_supplicant
            |wpa_supplicant_signal_poll()
               |wpa_drv_signal_poll()
                  |nl80211_signal_poll()
                     |nl80211_get_link_signal()
                        |nl80211_cmd()//send NL80211_CMD_GET_STATION command to 80211cfg
                           |nl80211_get_station()
                              |wlan_hdd_cfg80211_get_station()
                                 |wlan_hdd_get_rssi()
                                    |sme_GetRssi()
                                       |csrGetRssi()
                                          |//send eWNI_SME_GET_RSSI_REQ
                                             |csrUpdateRssi()
                                                |WLANTL_GetRssi()
                                                   |pRssi = pClientSTA->rssiAvg//pClientSTA->rssiAvg is updated in WLANTL_HSGetRSSI()
      |sendRssiChangeBroadcast()//send WifiManager.RSSI_CHANGED_ACTION intent
    //below function is called when receiving each frame (including data frame)
    WLANTL_RxFrames() or WLANTL_RxCachedFrames()
      |WLANTL_HSHandleRXFrame()
         |WLANTL_HSGetRSSI()

你可能感兴趣的:(Android,Wi-Fi)