Lớp trừu tượng phần cứng (HAL) cho Wi-Fi

Khung Wi-Fi có 3 bề mặt Wi-Fi HAL đượ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ả ba giao diện đều có sẵn dưới dạng 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: Một giao diện HAL cho các lệnh dành riêng cho Android. Các tệp AIDL nằm trong hardware/interfaces/aidl, còn các tệp HIDL nằm trong hardware/interfaces/wifi/1.x.
  • HAL cung cấp: Bề mặt HAL cho wpa_suppli CHO Các tệp AIDL nằm trong hardware/interfaces/supplicant/aidl và các tệp HIDL nằm trong hardware/interfaces/supplicant/1.x.
  • HAL HostaPD: Nền tảng HAL cho hostaPD. Các tệp AIDL nằm trong hardware/interfaces/hostapd/aidl và các tệp HIDL nằm trong hardware/interfaces/hostapd/1.x.

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. Bạn không bắt buộc phải sử dụng (không bắt buộc) để các chế độ Trạm cơ sở hạ tầng (STA) và AP mềm (SAP) hoạt động. Tuy nhiên, bạn bắt buộc phải sử dụng tính năng này cho dịch vụ Wi-Fi AwareWi-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 hiện được gọi là HAL cũ. Mã nguồn Android hiện cung cấp cách triển khai AIDL hoặc HIDL mặc định bằng cách sử dụng miếng đệm chạy trên HAL cũ.

Các tiêu đề HAL cũ nằm trong hardware/libhardware_legacy/include/hardware_legacy/. Phương thức triển khai dựa trên HAL cũ nằm trong hardware/interfaces/wifi/aidl/default đối với AIDL và hardware/interfaces/wifi/1.x/default đối với HIDL.

HAL (Lớp trừu tượng phần cứng) bổ sung

Supplicant HAL cung cấp giao diện cho trình nền wpa_supplicant. Kể từ Android 13, giao diện sẽ sử dụng AIDL cho định nghĩa HAL. Đối với các bản phát hành trước Android 13, giao diện và các phân vùng của nhà cung cấp sẽ sử dụng HIDL.

Mã nguồn wpa_supplicant nằm trong external/wpa_supplicant_8/wpa_supplicant. Hoạt động 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

HAL HostaPD cung cấp một giao diện cho trình nền hostaPD. Kể từ Android 13, giao diện sẽ sử dụng AIDL cho định nghĩa HAL. Đối với các bản phát hành trước Android 13, giao diện và các phân vùng của nhà cung cấp sẽ 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 giao diện AIDL được triển khai trong thư mục con aidl.

Đồng thời nhiều giao diện Wi-Fi

Các thiết bị Android khác nhau có thể hỗ trợ nhiều tổ hợp giao diện Wi-Fi cùng một lúc. Các tổ hợp được hỗ trợ được xác định trong HAL và được hiển thị trong khung. Định dạng thông số kỹ thuậ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.

AIDL HAL, có sẵn cho Android 14 trở lên và Wi-Fi HAL phiên bản 1.6, có trong Android 13, thêm khả năng chỉ định giao diện AP cầu nối (đồng thời hai băng tần) làm mục kết hợp rõ ràng.

Định dạng quy cách đồng thời linh hoạt và chung. Phương thức này có thể biểu thị các tổ hợp chưa được khung hỗ trợ. Để định cấu hình một tổ hợp cụ thể, hãy sử 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ợ hai STA và một giao diện của loại NAN (Wi-Fi Aware) hoặc P2P (Wi-Fi Direct) (nhưng không phải cả hai). Điều này được biểu thị 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 với một AP hoặc AP cầu (đồng thời hai băng tần) không có giao diện nào khác. Điều này được biểu thị như sau:

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}

Ngoài ra, HAL tham chiếu 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ấu hình, hãy xem: