android wifi framework與wpa_supplicant的交互

android frmework直接與wpa_supplicant進行交互,使用aidl或者hidl

二、事件

framework注冊事件的地方:

packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaIfaceCallbackImpl.java

class SupplicantStaIfaceCallbackImpl extends ISupplicantStaIfaceCallback.Stub {

????????public void onStateChanged(int newState, byte?bssid, int id, ArrayList<Byte> ssid..);

????????public void onDisconnected(byte[/* 6 */] bssid, boolean locallyGenerated, int reasonCode);

????????private void handleAssocRejectEvent(AssocRejectEventInfo assocRejectInfo)

}

注冊此事件的地方

packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java

這兒還需要進一步看是調用的哪個?這兒有v1、v2等

private boolean trySetupStaIfaceV1_4(String ifaceName,ISupplicantStaIface iface)? {

????????SupplicantStaIfaceHalCallbackV1_4 callbackV14 =

????????????????new SupplicantStaIfaceHalCallbackV1_4(ifaceName);

????????if (!registerCallbackV1_4(getStaIfaceMockableV1_4(iface), callbackV14)) {

????????????????throw new RemoteException("Init StaIface V1_4 failed.");

????????}

????????/* keep this in a store to avoid recycling by garbage collector. */

????????mISupplicantStaIfaceCallbacks.put(ifaceName, callbackV14);

????????return true;

}

setupIface->setupStaIface->vendor_setupIface(new SupplicantStaIfaceHalCallback)

setupStaIface->trySetupStaIfaceV1_1->trySetupStaIfaceV1_2->....

hidl定義callback和接口的地方

hardware/interfaces/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal?

ISupplicantStaIfaceCallback在v1.1里有onDisconnected回調,后續的v1.2->v1.3->v1.4 的ISupplicantCallback.hal 都繼承前面的版本

zheli

這里還有連接wifi失敗時的ReasonCode、StatusCode、還有連接State

ReasonCode常見的有:

DEAUTH_LEAVING = 3、UNSPECIFIED = 1、INVALID_IE = 13、STA_LEAVING = 36、TIMEOUT = 39

State常見的有:

DISCONNECTED = 0、AUTHENTICATING = 4等

hardware/interfaces/wifi/supplicant/1.0/ISupplicantIface.hal

ISupplicantIface.hal 里有listNetworks、addNetwork接口

hardware/interfaces/wifi/supplicant/1.0/ISupplicantStaIface.hal

ISupplicantStaIface.hal里有定義接口?

registerCallback(ISupplicantStaIfaceCallback callback)、reassociate、disconnect、setPowerSave、getMacAddress、setBtCoexistenceMode、setCountryCode等

hardware/interfaces/wifi/supplicant/1.0/ISupplicantCallback.hal

ISupplicantCallback.hal里有onInterfaceCreated、onInterfaceRemoved接口

wpa_supplicant接口事件注冊的地方

以連接失敗為例:

external/wpa_supplicant_8/wpa_supplicant/hidl/1.4/hidl_manager.h

這里include了很多hidl生成的.h文件,可以在out目錄下查看

hidl_manager.h

#include <android/hardware/wifi/supplicant/1.0/ISupplicantCallback.h>

#include <android/hardware/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.h>

#include <android/hardware/wifi/supplicant/1.0/ISupplicantP2pNetworkCallback.h>

#include <android/hardware/wifi/supplicant/1.4/ISupplicantStaIfaceCallback.h>

#include <android/hardware/wifi/supplicant/1.0/ISupplicantStaNetworkCallback.h>

#include <android/hardware/wifi/supplicant/1.4/ISupplicantStaNetworkCallback.h>

在out目錄下類似:

./soong/.intermediates/hardware/interfaces/wifi/supplicant/1.4/

android.hardware.wifi.supplicant@1.4_genc++_headers/gen/android/hardware/wifi/、supplicant/1.4/ISupplicantStaIfaceCallback.h

external/wpa_supplicant_8/wpa_supplicant/hidl/1.4/hidl_manager.cpp

void HidlManager::notifyDisconnectReason(struct wpa_supplicant *wpa_s) {

????????callWithEachStaIfaceCallback(

????????????????&ISupplicantStaIfaceCallback::onDisconnected,? wpa_s->disconnect_reason);

}

如果連接密碼失敗,可以看下大致的如下路徑 :

events.wpa_supplicant_event_disassoc_finish? (wpa_supplicant/events.c)

notify.wpas_notify_disconnect_reason->? (wpa_supplicant/notify.c)

hidl.wpas_hidl_notify_disconnect_reason->? (wpa_supplicant/hidl/1.4/hidl.cpp)

hidl_manager->notifyDisconnectReason

events.c

static void wpa_supplicant_event_disassoc_finish () {

????????if (could_be_psk_mismatch(wpa_s, reason_code, locally_generated)) {

????????????????wpa_msg(wpa_s, MSG_INFO, "WPA: 4-Way Handshake failed - ""pre-shared key may be incorrect");

????????????????wpas_auth_failed(wpa_s, "WRONG_KEY");

????????????????wpas_notify_disconnect_reason(wpa_s);

????????}

}

????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66286.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66286.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66286.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python爬蟲報錯日記

python爬蟲報錯日記 類未定義 原因&#xff1a;代碼檢查沒有問題**&#xff0c;位置錯了**&#xff0c;測試代碼包含在類里…… UnicodedecodeError錯誤 原因&#xff1a;字符沒有自動轉換成utf-8格式 KeyError&#xff1a;“href” 原因&#xff1a;前面運行正常&#x…

[ Spring ] Install Nacos on Ubuntu24

文章目錄 Download Nacos Package and UnzipConfigure NacosConfigure JAVA_HOME for Bash FileConfigure Default User and PasswordStartup NacosVisit Admin Webpage Download Nacos Package and Unzip https://github.com/alibaba/nacos/releases/download/3.0.0-alpha/na…

Swift語言的多線程編程

Swift語言的多線程編程 在現代軟件開發中&#xff0c;多線程編程是提高應用性能和響應速度的重要手段。尤其是在 iOS 和 macOS 開發中&#xff0c;由于用戶界面(UI)的交互性和復雜性&#xff0c;合理利用多線程可以極大地提升用戶體驗。本文將深入探討 Swift 語言中的多線程編…

第34天:Web開發-PHP應用鑒別修復AI算法流量檢測PHP.INI通用過濾內置函數

#知識點 1、安全開發-原生PHP-PHP.INI安全 2、安全開發-原生PHP-全局文件&單函數 3、安全開發-原生PHP-流量檢測&AI算法 一、通用-PHP.INI設置 參考&#xff1a; https://www.yisu.com/ask/28100386.html https://blog.csdn.net/u014265398/article/details/109700309 …

機器學習之決策樹(DecisionTree)

決策樹中選擇哪一個特征進行分裂&#xff0c;稱之為特征選擇。 特征選擇是找出某一個特征使得分裂后兩邊的樣本都有最好的“歸宿”&#xff0c;即左邊分支的樣本屬于一個類別、右邊分支的樣本屬于另外一個類別&#xff0c;左邊和右邊分支包含的樣本盡可能分屬同一類別&#xff…

進階——十六屆藍橋杯嵌入式熟練度練習(按鍵+LCD)

高亮&#xff08;一&#xff09; 聲明 char buf[21];unsigned char upled0x04;uint8_t key_val;uint8_t key_down,key_up,key_old;uint32_t key_time;uint8_t key_temp,key_flag;uint8_t line_flag; 按鍵代碼 void key_proc(void) { key_valkey_scan();key_downkey_val&…

基于PHP的校園新聞發布管理

摘要 近年來&#xff0c;隨著互聯網技術的迅速發展&#xff0c;人們獲取新聞的渠道也變得越來越多樣化&#xff0c;已經不再拘束于傳統的報紙、期刊、雜志等紙質化的方式&#xff0c;而是通過網絡滿足了人們獲得第一手新聞的愿望&#xff0c;這樣更加有助于實現新聞的規范化管…

MySQL程序之:使用DNS SRV記錄連接到服務器

在域名系統&#xff08;DNS&#xff09;中&#xff0c;SRV記錄&#xff08;服務位置記錄&#xff09;是一種資源記錄&#xff0c;它使客戶端能夠指定指示服務、協議和領域的名稱。DNS查找該名稱會返回一個回復&#xff0c;其中包含該領域中提供所需服務的多個可用服務器的名稱。…

代碼合并沖突解決push不上去的問題

環境&#xff1a;【IntelliJ IDEA】 【Gerrit】 1、錯誤信息 代碼合并&#xff0c;迭代1合并到迭代2&#xff0c;解決沖突后&#xff0c;依然push不上去&#xff0c;報錯信息如下&#xff1a; remote: Processing changes: refs: 1 remote: Processing changes: refs…

opencv projectPoints函數 computeCorrespondEpilines函數 undistortPoints函數

opencv projectPoints函數 cv::projectPoints 是 OpenCV 中用于將三維點投影到二維圖像平面的函數。它通常用于計算在相機坐標系下的三維點在圖像坐標系中的位置&#xff0c;考慮了相機的內參和外參。 函數原型 void cv::projectPoints(InputArray objectPoints,InputArray …

從玩具到工業控制--51單片機的跨界傳奇【3】

在科技的浩瀚宇宙中&#xff0c;51 單片機就像一顆獨特的星辰&#xff0c;散發著神秘而迷人的光芒。對于無數電子愛好者而言&#xff0c;點亮 51 單片機上的第一顆 LED 燈&#xff0c;不僅僅是一次簡單的操作&#xff0c;更像是開啟了一扇通往新世界的大門。這小小的 LED 燈&am…

boss直聘 __zp_stoken__ 逆向分析

聲明: 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 有相關問題請第一時間頭像私信聯系我刪…

【日志篇】(7.6) ? 01. 在macOS下刷新FortiAnalyzer固件 ? FortiAnalyzer 日志分析

【簡介】FortiAnalyzer 是 Fortinet Security Fabric 安全架構的基礎&#xff0c;提供集中日志記錄和分析&#xff0c;以及端到端可見性。因此&#xff0c;分析師可以更有效地管理安全狀態&#xff0c;將安全流程自動化&#xff0c;并快速響應威脅。具有分析和自動化功能的集成…

Linux 內核自旋鎖spinlock(一)

文章目錄 前言一、自旋鎖1.1 簡介1.2 API1.2.1 spin_lock/spin_unlock1.2.2 spin_lock_irq/spin_unlock_irq1.2.3 spin_lock_irqsave/spin_unlock_irqstore1.2.4 spin_lock_bh/spin_unlock_bh1.2.5 補充 二、自選鎖原理三、自旋鎖在內核的使用3.1 struct file3.2 struct dentry…

【太古新篇,智馭未來】 SFA系統成功上線

經過雙方團隊的不懈努力與緊密合作&#xff0c;eBest成功幫助香港太古可樂完成了SFA系統的全面上線&#xff01; 太古可樂&#xff0c;作為飲料行業的佼佼者&#xff0c;一直以來以其卓越的品質和深入人心的品牌形象深受消費者喜愛。然而&#xff0c;在快速變化的市場環境中&am…

Web安全|滲透測試|網絡安全

基礎入門(P1-P5) p1概念名詞 1.1域名 什么是域名&#xff1f; 域名&#xff1a;是由一串用點分隔的名字組成的Internet上某一臺計算機或計算機組的名稱&#xff0c;用于在數據傳輸時對計算機的定位標識&#xff08;有時也指地理位置&#xff09;。 什么是二級域名多級域名…

陳萍的設計創新:Kevlin Nexus榮獲倫敦設計獎,展示品牌設計的國際化與持續創新

近日,陳萍憑借其創新設計作品 Kevlin Nexus,成功斬獲 2024 倫敦設計獎。該獎項旨在表彰全球范圍內的優秀設計作品,表彰設計界最完美、最前沿的成就。倫敦設計獎是全球最具權威性和影響力的設計獎項之一,其評選標準以高水準的專業性和嚴格性著稱。作為全球設計界的頂級榮譽,倫敦…

qml DirectionalBlur詳解

1、概述 DirectionalBlur是QML&#xff08;Qt Modeling Language&#xff09;中用于創建方向模糊效果的一種圖形效果類型。它通過對源圖像的像素進行模糊處理&#xff0c;產生一種源項目朝著模糊方向移動的感知印象。這種模糊效果被應用到每個像素的兩側&#xff0c;因此設置方…

【Linux】【Vim】vim編輯器的用法

一、vim簡介 Vim是一款功能強大且高度可定制的文本編輯器&#xff0c;廣泛應用于Linux 和 Unix系統中。 它不僅繼承了vi編輯器的所有特性&#xff0c;還增加了許多新的功能&#xff0c;如語法高亮、代碼折疊、多級撤銷等。 Vim有三種主要的工作模式&#xff1a; 命令模式&am…

構建優雅、高效的 Nodejs 命令行工具 - Archons

目錄 項目簡介安裝基本用法樣例創建一個簡單的命令行工具使用archons上下文創建進度條 最后 項目地址: https://github.com/noctisynth/archons Bug反饋或功能請求&#xff1a;https://github.com/noctisynth/archons/issues 項目簡介 Archons意思是“執政官”&#xff0c;我使…