Wi-Fi HAL

Khung Wi-Fi có 3 giao diện HAL Wi-Fi được biểu thị bằng 3 giao diện khác nhau. Đố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 AIDL ổn định. Trước đây, các giao diện này được xác định bằng HIDL.

HAL của nhà cung cấp

Vendor HAL 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.

Android trước HIDL (tức là trước Android 8.0) đã sử dụng một cơ chế HAL hiện được gọi là HAL cũ. Mã nguồn Android hiện cung cấp một chế độ triển khai mặc định của AIDL hoặc HIDL bằng cách 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 ứng dụng yêu cầu

HAL của Supplicant 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 năng đồng thời sử dụng 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 (đồng thời hai băng tần) làm một mục kết hợp rõ ràng.

Định dạng quy cách về tính đồng thời rất linh hoạt và chung chung. Nó có thể biểu thị những tổ hợp mà khung này 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 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 cầu nối (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: