Khung Wi-Fi có 3 giao diện HAL Wi-Fi do 3 giao diện khác nhau đại diện. Đối với các thiết bị chạy Android 14 trở lên, cả 3 giao diện đều có sẵn dưới dạng các gói Ngôn ngữ định nghĩa giao diện Android (AIDL) ổn định. Trước đây, các giao diện này được xác định bằng Ngôn ngữ định nghĩa giao diện phần cứng (HIDL).
- HAL của nhà cung cấp: Một bề mặt HAL cho các lệnh dành riêng cho Android. Các tệp AIDL nằm trong
hardware/interfaces/wifi/aidl. - HAL của ứng dụng yêu cầu: Một bề mặt HAL cho wpa_supplicant. Các tệp AIDL nằm trong
hardware/interfaces/wifi/supplicant/aidl. - Hostapd HAL: Một giao diện HAL cho hostapd. Các tệp AIDL nằm trong
hardware/interfaces/wifi/hostapd/aidl.
HAL của nhà cung cấp
HAL của nhà cung cấp cung cấp các lệnh dành riêng cho Android. Đây là tuỳ chọn (không bắt buộc) để các chế độ Trạm cơ sở hạ tầng (STA) và Điểm truy cập ảo (SAP) hoạt động. Tuy nhiên, đây là yêu cầu bắt buộc đối với Wi-Fi Aware và các dịch vụ Wi-Fi RTT.
Trong Android 14 trở lên, giao diện HAL của nhà cung cấp được xác định bằng AIDL. Trong Android 13 trở xuống, giao diện HAL của nhà cung cấp được xác định bằng HIDL.
Trước HIDL (tức là trước Android 8.0), Android đã sử dụng một cơ chế HAL có tên là HAL cũ. Mã nguồn Android cung cấp một phương thức triển khai mặc định của AIDL hoặc HIDL. Quy trình triển khai này sử dụng một shim chạy trên HAL cũ.
Các tiêu đề HAL cũ nằm trong hardware/libhardware_legacy/include/hardware_legacy/. Hoạt động triển khai dựa trên HAL cũ nằm trong hardware/interfaces/wifi/aidl/default cho AIDL và hardware/interfaces/wifi/1.x/default cho HIDL.
HAL của Supplicant
HAL của Ứng dụng yêu cầu cung cấp một giao diện cho trình nền wpa_supplicant. Kể từ Android 13, giao diện này sử dụng AIDL cho định nghĩa HAL. Đối với các bản phát hành trước Android 13, các giao diện và phân vùng của nhà cung cấp sẽ dùng HIDL.
Mã nguồn wpa_supplicant nằm trong external/wpa_supplicant_8/wpa_supplicant. Cách triển khai tham chiếu cung cấp một giao diện AIDL, được triển khai trong thư mục con aidl.
Hostapd HAL
Hostapd HAL cung cấp một giao diện cho trình nền hostapd. Kể từ Android 13, giao diện này sử dụng AIDL cho định nghĩa HAL. Đối với các bản phát hành trước Android 13, các giao diện và phân vùng của nhà cung cấp sẽ dùng HIDL.
Mã nguồn hostapd nằm trong external/wpa_supplicant_8/hostapd.
Cách triển khai tham chiếu cung cấp một giao diện AIDL, được triển khai trong thư mục con aidl.
Tính đồng thời của nhiều giao diện Wi-Fi
Các thiết bị Android khác nhau có thể hỗ trợ đồng thời nhiều tổ hợp giao diện Wi-Fi. Các tổ hợp được hỗ trợ được xác định trong HAL và được hiển thị cho khung. Định dạng đặc tả được xác định trong hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl cho AIDL Wi-Fi HAL, android/hardware/interfaces/wifi/1.6/IWifiChip.hal cho Wi-Fi HAL 1.6 và android/hardware/interfaces/wifi/1.0/IWifiChip.hal cho Wi-Fi HAL 1.5 trở xuống.
HAL AIDL (có trên Android 14 trở lên) và HAL Wi-Fi phiên bản 1.6 (có trên Android 13) bổ sung khả năng chỉ định giao diện AP bắc cầu (băng tần kép đồng thời) làm một mục kết hợp rõ ràng.
Định dạng đặc tả đồng thời linh hoạt và chung chung; định dạng này có thể biểu thị các tổ hợp mà khung chưa hỗ trợ. Để định cấu hình một tổ hợp cụ thể, hãy dùng cờ bản dựng WIFI_HAL_INTERFACE_COMBINATIONS. Cờ này nằm trong device/<oem>/<device>/BoardConfig-common.mk.
Ví dụ: một thiết bị có thể hỗ trợ 2 STA và 1 giao diện thuộc loại NAN (Wi-Fi Aware) hoặc P2P (Wi-Fi Direct) (nhưng không hỗ trợ cả hai). Điều này được thể hiện trong device/<oem>/<device>/BoardConfig-common.mk như sau:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
Một ví dụ khác là thiết bị hỗ trợ STA có một AP hoặc AP bắc cầu (băng tần kép đồng thời) mà không có giao diện nào khác. Điều này được biểu thị là:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
Ngoài ra, HAL tham chiếu có các cấu hình cho một số tổ hợp có thể được kích hoạt bằng cờ bản dựng (cũ). Để biết hướng dẫn về cách định cấu hình, hãy xem: