เฟรมเวิร์ก Wi-Fi มี HAL ของ Wi-Fi 3 รายการซึ่งแสดงโดยอินเทอร์เฟซ 3 รายการที่แตกต่างกัน สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป อินเทอร์เฟซทั้ง 3 รายการพร้อมใช้งานเป็นแพ็กเกจ AIDL ที่เสถียร ก่อนหน้านี้อินเทอร์เฟซเหล่านี้กำหนดโดยใช้ HIDL
- HAL ของผู้ให้บริการ: พื้นผิว HAL สำหรับคำสั่งเฉพาะของ Android ไฟล์ AIDL อยู่
ใน
hardware/interfaces/wifi/aidl
- HAL ของ Supplicant: พื้นผิว HAL สำหรับ wpa_supplicant ไฟล์ AIDL อยู่ใน
hardware/interfaces/wifi/supplicant/aidl
- Hostapd HAL: พื้นผิว HAL สำหรับ hostapd ไฟล์ AIDL อยู่ใน
hardware/interfaces/wifi/hostapd/aidl
HAL ของผู้ให้บริการ
HAL ของผู้ให้บริการมีคำสั่งเฉพาะของ Android ไม่บังคับ (ไม่จำเป็น) สำหรับโหมดสถานีโครงสร้างพื้นฐาน (STA) และ Soft AP (SAP) เพื่อให้ทำงานได้ อย่างไรก็ตาม บริการ Wi-Fi Aware และ Wi-Fi RTT จำเป็นต้องใช้
ใน Android 14 ขึ้นไป อินเทอร์เฟซ HAL ของผู้ให้บริการจะกำหนดโดยใช้ AIDL ใน Android 13 และต่ำกว่า อินเทอร์เฟซ HAL ของผู้ให้บริการจะกำหนดโดยใช้ HIDL
Android เวอร์ชันก่อน HIDL (ก่อน Android 8.0) ใช้กลไก HAL ซึ่งปัจจุบันเรียกว่า HAL เดิม ปัจจุบันซอร์สโค้ด Android มีการใช้งาน AIDL หรือ HIDL เริ่มต้น โดยใช้ Shim ที่ทำงานอยู่บน HAL เดิม
ส่วนหัว HAL เดิมจะอยู่ใน
hardware/libhardware_legacy/include/hardware_legacy/
การใช้งาน HAL เดิม
จะอยู่ใน hardware/interfaces/wifi/aidl/default
สำหรับ AIDL
และ hardware/interfaces/wifi/1.x/default
สำหรับ HIDL
HAL ของผู้ขอ
HAL ของ Supplicant มีอินเทอร์เฟซสำหรับ Daemon wpa_supplicant ตั้งแต่ Android 13 เป็นต้นไป อินเทอร์เฟซจะใช้ AIDL สำหรับคำจำกัดความ HAL สำหรับรุ่นก่อน Android 13 อินเทอร์เฟซและพาร์ติชันของผู้ให้บริการจะใช้ HIDL
ซอร์สโค้ด wpa_supplicant อยู่ใน
external/wpa_supplicant_8/wpa_supplicant
การใช้งานอ้างอิง
มีอินเทอร์เฟซ AIDL ซึ่งใช้งานในไดเรกทอรีย่อย aidl
Hostapd HAL
Hostapd HAL มีอินเทอร์เฟซสำหรับ Daemon hostapd ตั้งแต่ Android 13 เป็นต้นไป อินเทอร์เฟซจะใช้ AIDL สำหรับคำจำกัดความ HAL สำหรับรุ่นก่อน Android 13 อินเทอร์เฟซและพาร์ติชันของผู้ให้บริการจะใช้ HIDL
ซอร์สโค้ด hostapd อยู่ใน external/wpa_supplicant_8/hostapd
การใช้งานอ้างอิงมีอินเทอร์เฟซ AIDL ซึ่งใช้งานในไดเรกทอรีย่อย aidl
การทำงานพร้อมกันแบบหลายอินเทอร์เฟซของ Wi-Fi
อุปกรณ์ Android แต่ละเครื่องรองรับการใช้งานอินเทอร์เฟซ Wi-Fi ร่วมกันได้แตกต่างกัน
พร้อมกัน ระบบจะกำหนดชุดค่าผสมที่รองรับไว้ใน HAL และจะแสดงต่อเฟรมเวิร์ก
รูปแบบข้อกำหนดจะกำหนดไว้ใน
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
สำหรับ AIDL Wi-Fi HAL,
android/hardware/interfaces/wifi/1.6/IWifiChip.hal
สำหรับ Wi-Fi HAL 1.6 และ
android/hardware/interfaces/wifi/1.0/IWifiChip.hal
สำหรับ Wi-Fi HAL 1.5 และ
ต่ำกว่า
AIDL HAL ซึ่งพร้อมใช้งานสำหรับ Android 14 ขึ้นไป และ Wi-Fi HAL เวอร์ชัน 1.6 ซึ่งพร้อมใช้งานใน Android 13 เพิ่มความสามารถในการระบุอินเทอร์เฟซ AP ที่บริดจ์ (พร้อมกันแบบดูอัลแบนด์) เป็นรายการรวมที่ชัดเจน
รูปแบบข้อกำหนดการทำงานพร้อมกันมีความยืดหยุ่นและเป็นแบบทั่วไป ซึ่งสามารถแสดง
การผสมผสานที่เฟรมเวิร์กยังไม่รองรับ หากต้องการกำหนดค่าชุดค่าผสมที่เฉพาะเจาะจง ให้ใช้แฟล็ก WIFI_HAL_INTERFACE_COMBINATIONS
build ที่อยู่ใน device/<oem>/<device>/BoardConfig-common.mk
เช่น อุปกรณ์อาจรองรับ STA 2 รายการและอินเทอร์เฟซ 1 รายการของประเภท NAN
(Wi-Fi Aware)
หรือ P2P
(Wi-Fi Direct)
(แต่ไม่ใช่ทั้ง 2 ประเภท) ซึ่งแสดงใน
device/<oem>/<device>/BoardConfig-common.mk
ดังนี้
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
อีกตัวอย่างหนึ่งคืออุปกรณ์ที่รองรับ STA ที่มี AP เดียว หรือ AP ที่บริดจ์ (ดูอัลแบนด์พร้อมกัน) โดยไม่มีอินเทอร์เฟซอื่น ซึ่งแสดงเป็น ดังนี้
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
หรือ HAL อ้างอิงมีการกำหนดค่าสำหรับการผสมผสานหลายอย่าง ซึ่งเปิดใช้งานได้ด้วยแฟล็กบิลด์ (เดิม) ดูวิธีการกำหนดค่าได้ที่