يحتوي إطار عمل Wi-Fi على ثلاث مساحات عرض HAL لشبكة Wi-Fi يتم تمثيلها من خلال ثلاث واجهات مختلفة. بالنسبة إلى الأجهزة التي تعمل بالإصدار 14 من نظام التشغيل Android أو إصدار أحدث، تتوفّر جميع الواجهات الثلاث كحِزم لغة تعريف واجهة Android (AIDL) ثابتة. كانت هذه الواجهات مُعرَّفة سابقًا باستخدام لغة تعريف واجهة الأجهزة (HIDL).
- طبقة تجريد الأجهزة الخاصة بالمورّد: هي واجهة HAL للأوامر الخاصة بنظام Android. تتوفّر ملفات AIDL في
hardware/interfaces/wifi/aidl. - طبقة تجريد الأجهزة (HAL) الخاصة ببرنامج Supplicant: هي واجهة HAL لبرنامج wpa_supplicant. تتوفّر ملفات AIDL في
hardware/interfaces/wifi/supplicant/aidl. - Hostapd HAL: واجهة HAL لبرنامج hostapd. تتوفّر ملفات AIDL في
hardware/interfaces/wifi/hostapd/aidl.
طبقة تجريد الأجهزة الخاصة بالمورّد
توفّر طبقة HAL الخاصة بالمورّد أوامر خاصة بنظام Android. وهو اختياري (غير مطلوب) لكي تعمل محطة البنية الأساسية (STA) ووضعَي نقطة الوصول البرمجية (SAP). ومع ذلك، يجب تفعيلها لاستخدام خدمات Wi-Fi Aware وWi-Fi RTT.
في نظام التشغيل Android 14 والإصدارات الأحدث، يتم تحديد واجهة Vendor HAL باستخدام لغة تعريف واجهة Android (AIDL). في Android 13 والإصدارات الأقدم، يتم تحديد واجهة Vendor 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 واجهة لبرنامج wpa_supplicant الخفي. بدءًا من Android 13، تستخدم الواجهة لغة تعريف واجهة Android (AIDL) لتعريف طبقة تجريد الأجهزة (HAL). بالنسبة إلى الإصدارات السابقة لإصدار Android 13، تستخدم الواجهات وأقسام المورِّد HIDL.
يمكن العثور على رمز المصدر الخاص بـ wpa_supplicant في
external/wpa_supplicant_8/wpa_supplicant. يوفّر التنفيذ المرجعي واجهة AIDL، ويتم تنفيذه في الدليل الفرعي aidl.
Hostapd HAL
توفّر طبقة تجريد الأجهزة (HAL) الخاصة بـ Hostapd واجهة لبرنامج 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
بالنسبة إلى 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، المتوفّرة في الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث، وواجهة Wi-Fi HAL 1.6، المتوفّرة في الإصدار 13 من نظام التشغيل Android، إمكانية تحديد واجهة نقطة وصول مجسّرة (نطاق مزدوج متزامن) كعنصر دمج صريح.
إنّ تنسيق مواصفات التزامن مرن وعام، ويمكنه التعبير عن مجموعات لا يتيحها إطار العمل بعد. لضبط تركيبة معيّنة، استخدِم علامة الإنشاء 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}}
مثال آخر هو جهاز يتيح محطة STA مع نقطة وصول واحدة، أو نقطة وصول مجسّرة (نطاق مزدوج متزامن) بدون واجهات أخرى. ويتم تمثيل ذلك على النحو التالي:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
بدلاً من ذلك، يحتوي HAL المرجعي على إعدادات لعدة مجموعات يمكن تفعيلها باستخدام علامات الإصدار (القديمة). للحصول على تعليمات حول الإعداد، يُرجى الاطّلاع على: