整個wifihal實現都很簡單,都是對wpa_supplicant的操作和使用,如果需要自己實現
wifi hal可以參考wifi.c來實現wifi.h中所定義的介面,並且設定驅動的路徑、名稱、模組
的名稱等引數,
具體操作都將由wpa_supplicant來完成。
其中wifi.h定義了android系統中wifi硬體抽象層介面,wifi.h定義
//裝載wifi驅動
int wifi_load_driver();
//缷載wifi驅動
int wifi_unload_driver();
//
開始、停止supplicant
int wifi_start_supplicant();
int wifi_stop_supplicant();
//
連線supplicant
int wifi_connect_to_supplicant();
//關閉supplicant連線
void wifi_close_supplicant_connection();
int wifi_wait_for_event(char *buf,size_t len);
int wifi_command(const char *command,char *reply, size_t *reply_len);
// dhcp請求
int do_dhcp_request(int *ipaddr, int*gateway, int *mask, int *dns1, int *dns2, int *server, int *lease);
const char *get_dhcp_error_string();
操作介面都很簡單,其中比較重要的是wifi_wait_for_event和wifi_command函式,
前者用於接收wpa_supplicant上報的事件,而後者用於向wpa_supplicant程序傳送命令.
關於Android硬體抽象層
1.為什麼需要硬體抽象層?硬體抽象層是把部分的驅動的工作放到使用者態,這樣做是因為linux遵循gun license 發布的時候需要公開源 而android是遵循apache license,無需公布源 顯然如果把驅動 晶元相關的所有 都對外公開會傷害商家的利益。2.硬體驅動層的基本架構是怎樣的?...
Android 硬體抽象層(HAL)
出發點 保護廠商利益 android的硬體抽象層,簡單來說,就是 對linux核心驅動程式的封裝,向上提供介面,遮蔽低層的實現細節。也就是說,把對硬體的支援分成了兩層,一層放在使用者空間 user space 一層放在核心空間 kernel space 其中,硬體抽象層執行在使用者空間,而linux...
android學習之旅 硬體抽象層
1 為什麼會新增硬體抽象層?如果不新增硬體抽象層,我們在android所用的linux核心中新增和修改 就要遵循gpl協議,將 公開。把對硬體的驅動程式的 公開,會損害移動裝置廠商的利益,因為這相當於暴露了硬體的實現細節和引數。所以android源 是遵循apache license協議,它允許移動...