Wi-Fi HAL

يتضمّن إطار عمل Wi-Fi ثلاث مساحات عرض HAL لشبكة Wi-Fi يتم تمثيلها من خلال ثلاث واجهتَين مختلفتَين. بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 14 أو إصدار أحدث، تتوفّر كل الواجهتَين بصفتهما حِزم AIDL مستقرة. تم تحديد هذه الواجهات سابقًا باستخدام HIDL.

  • Vendor 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 الخاصة بالمورّد

يوفّر Vendor HAL أوامر خاصة بنظام التشغيل Android. هذا الخيار اختياري (غير مطلوب) لتشغيل وضعَي "محطة البنية الأساسية" (STA) و"نقطة اتصال البرامج" (SAP). ومع ذلك، يكون هذا الإذن إلزاميًا لخدمات Wi-Fi Aware وخدمات Wi-Fi RTT.

في الإصدار 14 من Android والإصدارات الأحدث، يتم تعريف واجهة HAL الخاصة بالمطوّر باستخدام AIDL. في الإصدار 13 من نظام التشغيل Android والإصدارات الأقدم، يتم تحديد واجهة HAL الخاصة بالمطوِّر باستخدام HIDL.

قبل ظهور HIDL (أي قبل Android 8.0)، كان نظام Android يستخدم آلية HAL تُعرف الآن باسم HAL القديم. يقدّم رمز Android المصدر حاليًا تنفيذًا تلقائيًا لـ AIDL أو HIDL باستخدام عنصر وسيط يعمل على مستوى 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، تستخدم الواجهة لغة تعريف واجهة Android (AIDL) لتعريف HAL. في الإصدارات الأقدم من Android 13، تستخدم الواجهات وأقسام المصنّعين HIDL.

يمكن العثور على رمز المصدر wpa_supplicant في external/wpa_supplicant_8/wpa_supplicant. يقدّم التنفيذ المرجعي واجهة AIDL، التي يتم تنفيذها في الدليل الفرعي aidl.

Hostapd HAL

يقدّم Hostapd HAL واجهة لخادم hostapd. بدءًا من Android 13، تستخدم الواجهة لغة تعريف واجهة Android (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 لواجهة برمجة التطبيقات لبروتوكول 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 والإصدارات الأحدث، و الإصدار 1.6 من واجهة برمجة التطبيقات Wi-Fi HAL، المتوفّر في نظام التشغيل Android 13، تحديد واجهة AP المرتبطة (النطاق المزدوج المتزامن) كعنصر تركيبة صريح.

تنسيق مواصفات المهام المتزامنة مرن وعام. ويمكنه التعبير عن تركيبات غير متوافقة مع الإطار بعد. لضبط مجموعة معيّنة، استخدِم WIFI_HAL_INTERFACE_COMBINATIONS علامة الإنشاء في device/<oem>/<device>/BoardConfig-common.mk.

على سبيل المثال، يمكن أن يتيح الجهاز اثنين من عملاء STA وواجهة واحدة من نوع NAN (Wi-Fi Aware) أو P2P (Wi-Fi Direct) (وليس كليهما). يتم التعبير عن ذلك في device/<oem>/<device>/BoardConfig-common.mk على النحو التالي:

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}

ومن الأمثلة الأخرى على ذلك الجهاز الذي يتيح نقطة اتصال لاسلكية واحدة أو نقطة اتصال لاسلكية متصلة (نطاق مزدوج متزامن) بدون واجهات أخرى. يتم تمثيل ذلك على النحو التالي:

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}

بدلاً من ذلك، يحتوي HAL المرجعي على إعدادات لعدة مجموعات يمكن تفعيلها باستخدام علامات الإنشاء (القديمة). للاطّلاع على تعليمات الإعداد، يُرجى الاطّلاع على: