البلوتوث

رمز طبقة تجريد الأجهزة (HAL) للبلوتوث على Android

يوفّر نظام التشغيل Android حزمة بلوتوث تلقائية تتوافق مع كلّ من البلوتوث الكلاسيكي والبلوتوث المنخفض الطاقة. باستخدام البلوتوث، يمكن لأجهزة Android إنشاء شبكات منطقة شخصية لإرسال البيانات وتلقّيها مع أجهزة البلوتوث القريبة.

في الإصدار 4.3 من نظام التشغيل Android والإصدارات الأحدث، تتيح حزمة بروتوكولات البلوتوث في Android إمكانية تنفيذ تقنية البلوتوث منخفض الطاقة (BLE). لاستخدام واجهات برمجة تطبيقات BLE بشكل كامل، اتّبِع متطلبات واجهة HCI الخاصة بالبلوتوث على Android. يمكن لأجهزة Android التي تتضمّن مجموعة شرائح مؤهَّلة استخدام تقنية البلوتوث الكلاسيكية أو كلتا التقنيتَين. لا يتوافق BLE مع شرائح تعريف البلوتوث القديمة.

في نظام التشغيل Android 8.0، تكون حزمة بروتوكول البلوتوث مؤهَّلة بالكامل لاستخدام البلوتوث 5. لاستخدام ميزات البلوتوث 5 المتاحة، يجب أن يحتوي الجهاز على مجموعة شرائح مؤهَّلة للبلوتوث 5.

هندسة Android

يتواصل تطبيق البلوتوث مع عملية البلوتوث من خلال Binder. تستخدم عملية البلوتوث واجهة JNI للتواصل مع حزمة البلوتوث، وتتيح للمطوّرين الوصول إلى ملفات تعريف البلوتوث المختلفة. يوضّح هذا الرسم التخطيطي البنية العامة لحزمة بروتوكول Bluetooth:

مخطّط بياني يوضّح طبقات حزمة بروتوكول Bluetooth في Android

الشكل 1. بنية البلوتوث في Android

إطار عمل التطبيق
على مستوى إطار عمل التطبيق، توجد رموز التطبيق التي تستخدم واجهات برمجة التطبيقات android.bluetooth للتفاعل مع أجهزة Bluetooth. داخليًا، يستدعي هذا الرمز عملية Bluetooth من خلال آلية Binder IPC.
تطبيق البلوتوث
يتم تجميع تطبيق البلوتوث، المتوفّر في packages/modules/Bluetooth/android/app، كتطبيق Android، ويتم تنفيذ ملفات تعريف البلوتوث في طبقة إطار عمل Android. يتصل هذا التطبيق بمجموعة برامج البلوتوث من خلال JNI.
JNI
يقع رمز JNI المرتبط بـ android.bluetooth في packages/modules/Bluetooth/android/app/jni. يتم استدعاء رمز JNI إلى حزمة بروتوكول البلوتوث عند حدوث عمليات بلوتوث معيّنة، مثل عند اكتشاف الأجهزة.
حزمة بروتوكولات البلوتوث
يتم توفير حزمة بروتوكولات البلوتوث التلقائية في مشروع Android مفتوح المصدر (AOSP) وتقع في packages/modules/Bluetooth/system. تنفِّذ الحزمة طبقة تجريد الأجهزة (HAL) العامة للبلوتوث وتخصّصها باستخدام الإضافات وتغييرات الإعدادات.
تنفيذ المورّد
تتفاعل أجهزة المورّد مع حزمة بروتوكول البلوتوث باستخدام لغة وصف واجهة الأجهزة (HIDL).

HIDL

تحدِّد HIDL الواجهة بين حزمة Bluetooth وتنفيذ المورِّد. لإنشاء ملفات Bluetooth HIDL، مرِّر ملفات واجهة Bluetooth إلى أداة إنشاء HIDL. توجد ملفات الواجهة في hardware/interfaces/bluetooth.

تطوير حزمة البلوتوث

حزمة بروتوكولات البلوتوث في Android هي حزمة بروتوكولات بلوتوث مؤهَّلة بالكامل. تتوفّر قائمة المؤهلات على موقع Bluetooth SIG الإلكتروني ضمن QDID 169365.

تتوفّر حزمة البلوتوث الأساسية في packages/modules/Bluetooth. يتم التطوير في AOSP، ونرحّب بالمساهمات.

بنية الإصدار 7.x من نظام التشغيل Android والإصدارات الأقدم

تتواصل خدمة نظام البلوتوث مع حزمة برامج البلوتوث من خلال JNI ومع التطبيقات من خلال Binder IPC. توفّر خدمة النظام للمطوّرين إمكانية الوصول إلى العديد من ملفات تعريف البلوتوث. يوضّح هذا الرسم التخطيطي البنية العامة لحزمة بروتوكول البلوتوث:

مخطّط لطبقات بنية البلوتوث في الإصدار 7.x من نظام التشغيل Android والإصدارات الأقدم

الشكل 2. بنية البلوتوث في الإصدار 7.x من نظام التشغيل Android والإصدارات الأقدم

إطار عمل التطبيق
على مستوى إطار عمل التطبيق، توجد رموز التطبيق التي تستخدم واجهات برمجة التطبيقات android.bluetooth للتفاعل مع أجهزة Bluetooth. داخليًا، يستدعي هذا الرمز عملية Bluetooth من خلال آلية Binder IPC.
خدمة نظام البلوتوث
يتم تجميع خدمة نظام البلوتوث، المتوفّرة في packages/apps/Bluetooth، كتطبيق Android، كما أنّها تنفّذ خدمة البلوتوث وملفاته الشخصية في طبقة إطار عمل Android. يستدعي هذا التطبيق طبقة HAL من خلال JNI.
JNI
يقع رمز JNI المرتبط android.bluetooth في packages/apps/Bluetooth/jni. يستدعي رمز JNI طبقة HAL ويتلقّى عمليات ردّ من HAL عند حدوث عمليات بلوتوث معيّنة، مثل اكتشاف الأجهزة.
HAL
تحدّد طبقة تجريد الأجهزة الواجهة العادية التي تستخدمها واجهات برمجة التطبيقات android.bluetooth وعملية البلوتوث، ويجب تنفيذها لكي تعمل أجهزة البلوتوث بشكل صحيح. ملف العناوين الخاص بطبقة تجريد الأجهزة (HAL) للبلوتوث هو hardware/libhardware/include/hardware/bluetooth.h. بالإضافة إلى ذلك، راجِع جميع ملفات hardware/libhardware/include/hardware/bt_*.h.
حزمة بروتوكولات البلوتوث
يتم توفير حزمة Bluetooth التلقائية لك، وهي متوفّرة في system/bt. تنفِّذ الحزمة طبقة تجريد الأجهزة (HAL) العامة للبلوتوث وتخصّصها باستخدام إضافات وتغييرات في الإعدادات.
إضافات المورّدين
لإضافة إضافات مخصّصة وطبقة HCI للتتبُّع، يمكنك إنشاء وحدة libbt-vendor وتحديد هذه المكوّنات.

تنفيذ طبقة HAL

يقع Bluetooth HAL في /hardware/libhardware/include/hardware/bluetooth.h. يحتوي الملف bluetooth.h على الواجهة الأساسية لحزمة بروتوكول البلوتوث، ويجب تنفيذ وظائفه.

تتوفّر الملفات الخاصة بالملف الشخصي في الدليل نفسه. لمعرفة التفاصيل، يُرجى الاطّلاع على مرجع ملف HAL.