เฟรมเวิร์ก Wi-Fi มีจุดเข้าถึง HAL ของ Wi-Fi 3 รายการซึ่งแสดงโดยอินเทอร์เฟซ 3 รายการที่แตกต่างกัน สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป อินเทอร์เฟซทั้ง 3 รายการจะพร้อมใช้งานเป็นแพ็กเกจภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL) ที่เสถียร ก่อนหน้านี้อินเทอร์เฟซเหล่านี้ได้รับการกำหนดโดยใช้ภาษาที่ใช้นิยามอินเทอร์เฟซสำหรับฮาร์ดแวร์ (HIDL)
- Vendor HAL: จุดเข้าถึง HAL สำหรับคำสั่งเฉพาะของ Android ไฟล์ AIDL อยู่ใน
hardware/interfaces/wifi/aidl - Supplicant HAL: จุดเข้าถึง HAL สำหรับ wpa_supplicant ไฟล์ AIDL อยู่ใน
hardware/interfaces/wifi/supplicant/aidl - Hostapd HAL: จุดเข้าถึง HAL สำหรับ hostapd ไฟล์ AIDL อยู่ใน
hardware/interfaces/wifi/hostapd/aidl
Vendor HAL
Vendor HAL มีคำสั่งเฉพาะของ Android โดยเป็นทางเลือก (ที่ไม่จำเป็น) สำหรับการทำงานในโหมดโครงสร้างพื้นฐานอย่าง Station (STA) และ Soft AP (SAP) แต่จำเป็นสำหรับบริการ Wi-Fi Aware และ Wi-Fi RTT
ใน Android 14 ขึ้นไป อินเทอร์เฟซ Vendor HAL จะกำหนดโดยใช้ AIDL ใน Android 13 และต่ำกว่า อินเทอร์เฟซ Vendor HAL จะกำหนดโดยใช้ HIDL
ก่อน HIDL (ก่อน Android 8.0) Android ใช้กลไก 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
Supplicant HAL
Supplicant HAL มีอินเทอร์เฟซสำหรับ 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 ที่บริดจ์ (ทำงานพร้อมกันแบบ 2 ย่านความถี่) เป็นรายการรวมที่ชัดเจน
รูปแบบข้อกำหนดการทำงานพร้อมกันมีความยืดหยุ่นและเป็นแบบทั่วไป ซึ่งสามารถแสดงชุดค่าผสมที่เฟรมเวิร์กยังไม่รองรับได้ หากต้องการกำหนดค่าชุดค่าผสมที่เฉพาะเจาะจง ให้ใช้แฟล็กบิลด์ WIFI_HAL_INTERFACE_COMBINATIONS แฟล็กนี้อยู่ใน 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 ที่บริดจ์ (ทำงานพร้อมกันแบบ 2 ย่านความถี่) โดยไม่มีอินเทอร์เฟซอื่น ซึ่งแสดงเป็นดังนี้
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
หรือ HAL การอ้างอิงมีการกำหนดค่าสำหรับชุดค่าผสมหลายอย่าง ซึ่งเปิดใช้งานได้ด้วยแฟล็กบิลด์ (เดิม) ดูวิธีการกำหนดค่าได้ที่