HAL ของ Wi-Fi

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

  • HAL ของผู้ให้บริการ: แพลตฟอร์ม HAL สำหรับคำสั่งเฉพาะของ Android ไฟล์ AIDL อยู่ใน hardware/interfaces/aidl และไฟล์ HIDL อยู่ใน hardware/interfaces/wifi/1.x
  • Supplicant HAL: แพลตฟอร์ม HAL สำหรับ wpa_supplicant ไฟล์ AIDL อยู่ใน hardware/interfaces/supplicant/aidl และไฟล์ HIDL อยู่ใน hardware/interfaces/supplicant/1.x
  • Hostapd HAL: แพลตฟอร์ม HAL สำหรับ hostapd ไฟล์ AIDL อยู่ใน hardware/interfaces/hostapd/aidl และไฟล์ HIDL อยู่ใน hardware/interfaces/hostapd/1.x

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 ของผู้ขอ

Supplicant HAL มีอินเทอร์เฟซสำหรับโปรแกรมเดรัม 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 Flag การสร้างที่อยู่ใน 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 อ้างอิงจะมีการกําหนดค่าสําหรับชุดค่าผสมหลายรายการที่เปิดใช้งานได้ด้วย Flag การสร้าง (เดิม) โปรดดูวิธีการกำหนดค่าที่หัวข้อต่างๆ ดังนี้