طبقة تجريد الأجهزة (HAL) لـ Wi-Fi

يتضمن إطار عمل Wi-Fi ثلاثة أسطح HAL لـ Wi-Fi ممثلة بثلاث واجهات مختلفة. بالنسبة إلى الأجهزة التي تعمل بالإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث، تتوفر الواجهات الثلاث كحزم 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) للمورّد

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

في Android 14 والإصدارات الأحدث، يتم تحديد واجهة 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، تستخدم الواجهة 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 لواجهة برمجة التطبيقات (AIDL) لواجهة HAL الخاصة بشبكة Wi-Fi، android/hardware/interfaces/wifi/1.6/IWifiChip.hal لواجهة HAL 1.6 الخاصة بشبكة Wi-Fi، android/hardware/interfaces/wifi/1.0/IWifiChip.hal لواجهة HAL 1.5 الخاصة بشبكة Wi-Fi والإصدارات الأقدم.

يتيح واجهة برمجة التطبيقات 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 المرجعي إعدادات لعدة مجموعات يمكن تفعيلها باستخدام علامات الإنشاء (القديمة). للاطّلاع على تعليمات الإعداد، يُرجى الاطّلاع على: