Android系統硬體抽象層原理與實現之WIFI

2021-08-02 18:40:24 字數 1168 閱讀 5843

整個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協議,它允許移動...