11.2. مكدّس BLE

مثل الشبكات، يُبنى Bluetooth Low Energy كمكدّس من الطبقات، تحل كل واحدة منها مشكلة واحدة وتعرض تجريدًا نظيفًا للطبقة الأعلى منها. الأسماء أدناه مأخوذة مباشرة من مواصفات Bluetooth Core وتظهر في واجهات aioble و bluetooth.

A vertical stack of five labelled boxes. From bottom to top: Physical (radio), Link Layer, GAP, GATT, Application. An arrow on the right points up the stack labelled "what we build". An arrow on the left points down the stack labelled "what is provided".

مكدّس Bluetooth Low Energy. تسلّم كل طبقة تجريدًا أنظف للطبقة التالية، وهو نفس النمط الذي يستخدمه مكدّس الشبكات.

الطبقة الفيزيائية. نقل البِتات بين جهازين عبر راديو 2.4 جيجاهرتز. اختيار القناة، والتعديل، وقدرة الإرسال. مهمة الكاميرا أن تكون مشغّلة؛ والرقاقة تتولى الباقي.

طبقة الوصلة. نقل الحزم بين جهازين اتفقا على التحدث مع بعضهما. تضيف عناوين الأجهزة بحيث يمكن توجيه كل حزمة إلى جار واحد، وتجدول أحداث الراديو الدورية التي يتكون منها الاتصال، وتتولى إعادة إرسال أي حزمة لم يؤكّد المستقبِل استلامها.

ملف تعريف الوصول العام (GAP). طبقة الاكتشاف والاتصال. تعرّف أربعة أدوار -- مذيع، ومراقب، وطرفية، ومركزي -- وبروتوكول الإعلان / المسح الذي يتيح لجهازين العثور على بعضهما في المقام الأول، إضافة إلى إجراء فتح اتصال بينهما وإغلاقه. هنا تعيش العناوين، وحمولات الإعلان، ومعاملات الاتصال، والاقتران.

ملف تعريف السمات العام (GATT). طبقة البيانات. يقع فوق اتصال GAP مفتوح ويعرض قاعدة بيانات صغيرة من نوع مفتاح/قيمة: يستضيف أحد الجانبين شجرة من القيم المسماة تُدعى الخصائص، ويقرأها الجانب الآخر أو يكتبها أو يشترك فيها. هنا تتدفق بايتات التطبيق الفعلية.

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

11.2.1. كيف تتراكم الطبقات في وقت التشغيل

يطابق النمط مكدّس الشبكات:

  • تذهب بايتات التطبيق إلى قيمة خاصية.

  • يغلّف GATT ذلك بترويسة تحدد الخاصية التي تنتمي إليها البايتات.

  • يبقي GAP اتصالًا مفتوحًا يعمل بحيث يكون لدى GATT مكان يرسل إليه.

  • تغلّف طبقة الوصلة كل ذلك في حزمة، موجّهة إلى عنوان جهاز النظير، وتجدول حدث راديو لإرسالها.

  • تحوّل الطبقة الفيزيائية الحزمة إلى دفعة قصيرة من راديو 2.4 جيجاهرتز.

تكاد الطبقة الفيزيائية وطبقة الوصلة تكونان غير مرئيتين من Python -- إذ تتولاهما الرقاقة وبرنامج الراديو الثابت. ومن GAP فأعلى، يحصل كود Python في الكاميرا على دور أكبر.

11.2.2. طبقتان تتجاوزهما واجهة API المواجهة للمستخدم بهدوء

تسمّي مواصفات Bluetooth طبقتين إضافيتين تقعان بين طبقة الوصلة و GAP/GATT: واجهة المضيف والمتحكم (HCI) -- البروتوكول الذي يستخدمه المعالج المركزي للمضيف لقيادة رقاقة راديو منفصلة -- و L2CAP -- المُجمِّع الذي يقسم اتصال طبقة الوصلة الواحد إلى عدة قنوات منطقية.

لا شيء من الاثنين مرئي في واجهة aioble، لكن لا يختفي أي منهما. يقع HCI داخل منفذ BLE وهو غير مرئي ما لم تكن هناك بنية مخصصة من MicroPython قيد التشغيل، و L2CAP هو الناقل الذي يعمل GATT فوقه. يمكن للتطبيق الذي يريد تدفقات بايتات خام أن يطالب بقناة L2CAP خاصة به (قنوات L2CAP).