Wi-Fi HAL

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

HAL ของผู้ให้บริการ

HAL ของผู้ให้บริการมีคำสั่งเฉพาะของ Android ไม่บังคับ (ไม่จำเป็น) สำหรับโหมดสถานีโครงสร้างพื้นฐาน (STA) และ Soft AP (SAP) เพื่อให้ทำงานได้ อย่างไรก็ตาม จำเป็นสำหรับบริการ Wi-Fi Aware และ Wi-Fi RTT

ใน Android 14 ขึ้นไป อินเทอร์เฟซ HAL ของผู้ให้บริการจะกำหนดโดยใช้ AIDL ใน Android 13 และต่ำกว่า อินเทอร์เฟซ 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

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

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