Wi-Fi HAL

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

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