Wi-Fi HAL

เฟรมเวิร์ก Wi-Fi มีจุดเข้าถึง HAL ของ Wi-Fi 3 รายการซึ่งแสดงโดยอินเทอร์เฟซ 3 รายการที่แตกต่างกัน สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป อินเทอร์เฟซทั้ง 3 รายการจะพร้อมใช้งานเป็นแพ็กเกจภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL) ที่เสถียร ก่อนหน้านี้อินเทอร์เฟซเหล่านี้ได้รับการกำหนดโดยใช้ภาษาที่ใช้นิยามอินเทอร์เฟซสำหรับฮาร์ดแวร์ (HIDL)

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 การอ้างอิงมีการกำหนดค่าสำหรับชุดค่าผสมหลายอย่าง ซึ่งเปิดใช้งานได้ด้วยแฟล็กบิลด์ (เดิม) ดูวิธีการกำหนดค่าได้ที่