تنفيذ واجهات برمجة تطبيقات طبقة تجريدية النظام الأساسي

عرض المصدر على GitHub

لا يعتمد معيار OpenThread على نظام التشغيل أو المنصة، ويستخدم طبقة تجريدية ضيّقة للمنصة (PAL). يحدِّد PAL ما يلي:

بنية النقل
  • واجهة المنبّه لموقّت يعمل بدون توقف مع المنبّه
  • واجهات الناقل (UART وSPI) لتبادل رسائل واجهة سطر الأوامر وSpinel
  • واجهة اللاسلكي للتواصل وفقًا لمعيار IEEE 802.15.4-2006
  • إجراءات الإعداد الخاصة بمجموعة دول الخليج
  • الانتروبي لإنشاء أرقام عشوائية حقيقية
  • خدمة الإعدادات لتخزين الإعدادات غير القابلة للفقدان
  • واجهة تسجيل لإرسال رسائل سجلّ OpenThread
  • إجراءات الإعداد الخاصة بالنظام

يجب تنفيذ جميع واجهات برمجة التطبيقات استنادًا إلى حزمة دعم الإنشاء (BSP) لطبقة HAL الأساسية.

يجب وضع ملفات واجهة برمجة التطبيقات في الأدلة التالية:

النوع الدليل
تنفيذ PAL الخاص بالمنصة /openthread/examples/platforms/platform-name
ملفات الرأس - واجهة برمجة التطبيقات لمساحة التخزين غير القابلة للفقدان /openthread/examples/platforms/utils
جميع ملفات الرأس الأخرى /openthread/include/openthread/platform
حزمة دعم HAL /openthread/third_party/platform-name

المنبّه

بيان واجهة برمجة التطبيقات:

/openthread/include/openthread/platform/alarm-milli.h

توفّر Alarm API خدمات أساسية للتوقيت والتنبيهات لتنفيذ وظائف الموقّت في الطبقة العليا.

هناك نوعان من خدمات التنبيهات، الملي ثانية والجزء من الثانية. يجب استخدام المللي ثانية لنظام أساسي جديد للأجهزة. تكون المللي ثانية اختيارية.

UART

بيان واجهة برمجة التطبيقات:

/openthread/examples/platforms/utils/uart.h

تنفِّذ واجهة برمجة تطبيقات UART عملية الاتصال الأساسية بين المنافذ التسلسلية من خلال واجهة UART.

على الرغم من أنّ الإضافات OpenThread CLI وNCP تعتمد على واجهة UART للتفاعل مع الجانب المضيف، فإنّ استخدام واجهة برمجة التطبيقات UART هو اختياري. ومع ذلك، حتى إذا كنت لا تخطّط لاستخدام هذه الإضافات على مثال منصّة الأجهزة الجديدة، ننصحك بشدة بإضافة إمكانية استخدامها لعدة أسباب:

  • تكون واجهة برمجة التطبيقات مفيدة للتحقّق من أنّ المنفذ يعمل بشكل صحيح.
  • تستخدم أداة التشغيل الآلي Harness واجهة UART للتحكّم في OpenThread لأغراض الاختبار والاعتماد.

إذا كانت منصة الأجهزة المستهدَفة تتيح استخدام وحدة USB CDC بدلاً من UART، يُرجى التأكّد مما يلي:

  • تثبيت برنامج تشغيل USB CDC الصحيح على جانب المضيف
  • استبدِل تنفيذ UART API ببرنامج تشغيل USB CDC (مع BSP) على جانب OpenThread، باستخدام نماذج الدوالّ نفسها.

راديو

بيان واجهة برمجة التطبيقات:

/openthread/include/openthread/platform/radio.h

تحدِّد واجهة برمجة التطبيقات Radio API جميع الوظائف الضرورية التي تستدعيها الطبقة العليا من IEEE 802.15.4 MAC. يجب أن تكون شريحة الراديو متوافقة تمامًا مع مواصفات IEEE 802.15.4-2006‏ بتردد 2.4 غيغاهرتز.

بسبب ميزة "استهلاك الطاقة المنخفض" المحسّنة، يتطلب بروتوكول OpenThread من جميع المنصات تنفيذ ميزة "الإطار التلقائي في انتظار المعالجة" (النقل غير المباشر) تلقائيًا، ويجب أيضًا تنفيذ جدول مطابقة عنوان المصدر في ملف المصدر radio.h.

ومع ذلك، إذا كان مثال منصة الأجهزة الجديدة محدودًا من حيث الموارد، يمكن تعريف جدول عناوين الاطِّلاع على المصدر على أنّه طوله صفر. اطّلِع على Auto Frame Pending (الإطار التلقائي في انتظار المراجعة) للحصول على مزيد من المعلومات.

Misc/Reset

بيان واجهة برمجة التطبيقات:

/openthread/include/openthread/platform/misc.h

توفّر واجهة برمجة التطبيقات Misc/Reset طريقة لإعادة ضبط البرنامج على الشريحة، و الاستعلام عن سبب إعادة الضبط الأخيرة.

الإنتروبيا

بيان واجهة برمجة التطبيقات:

/openthread/include/openthread/platform/entropy.h

توفّر واجهة برمجة التطبيقات Entropy API أداة إنشاء أرقام عشوائية حقيقية (TRNG) للطبقة العلوية، والتي تُستخدَم للحفاظ على أصول الأمان لشبكة OpenThread بالكامل. يجب أن تضمن واجهة برمجة التطبيقات إنشاء رقم عشوائي جديد لكل دعوة وظيفة. تشمل أصول الأمان المتأثرة بوحدة TRNG ما يلي:

  • مفتاح تشفير AES CCM العشوائي
  • عدم الاستقرار العشوائي المتأخر
  • العنوان الموسَّع للأجهزة
  • الفترة العشوائية الأولية في موقّت الزيادة التدريجية
  • معرّفات الرموز المميّزة/الرسائل في بروتوكول CoAP

يُرجى العِلم أنّ العديد من المنصات قد دمجت أداة إنشاء أرقام عشوائية، وعرضت واجهة برمجة التطبيقات في حزمة BSP. في حال عدم توافق منصة الأجهزة المستهدفة مع مولد الأرقام العشوائية، ننصحك بالاستفادة من ميزة أخذ عيّنات وحدة محوِّل التحويل التناظري إلى رقمي (ADC) لمحاولة توليد رقم عشوائي بطول ثابت. احصل على عيّنات على مدار عدّة دورات إذا كان ذلك ضروريًا لاستيفاء متطلبات مولد الأرقام العشوائية (uint32_t).

عند ضبط المَعلمة MBEDTLS_ENTROPY_HARDWARE_ALT على 1، يجب أن تقدّم واجهة برمجة التطبيقات هذه أيضًا طريقة لإنشاء المقياس العشوائي للأجهزة المستخدَم في مكتبة mbedTLS.

مساحة التخزين غير القابلة للفقدان

بيانات واجهة برمجة التطبيقات:

/openthread/include/openthread/platform/flash.h

أو

/openthread/include/openthread/platform/settings.h

يمكن استيفاء متطلبات مساحة التخزين غير القابلة للفقدان من خلال تنفيذ إحدى واجهتَي برمجة التطبيقات المُدرَجتين أعلاه. تنفِّذ Flash API برنامج تشغيل وحدة تخزين فلاش، في حين تقدِّم واجهة برمجة التطبيقات Settings API وظائف لتنفيذ عملية فلاش أساسية في الطبقة العليا.

توفّر واجهات برمجة التطبيقات هذه للطبقة العليا ما يلي:

  • حجم مساحة التخزين غير القابلة للفقدان المتاحة المستخدَمة لتخزين بيانات التطبيق (مثل مجموعة البيانات التشغيلية النشطة/في انتظار المراجعة، ومَعلمات الشبكة الحالية وملف تعريفي الأجهزة المضمَّنة لإعادة الربط بعد إعادة الضبط)
  • عمليات قراءة حالة الفلاش وكتابتها ومحوها وطلبات البحث عنها

استخدِم OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE في ملف الإعدادات الأساسية لمثال المنصة لتحديد واجهة برمجة التطبيقات التي يجب أن تستخدمها المنصة. في حال ضبطه على 1، يجب تنفيذ Flash API. وبخلاف ذلك، يجب تنفيذ واجهة برمجة التطبيقات Settings API.

يجب ضبط هذا الإعداد في ملف /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h.

التسجيل

بيان واجهة برمجة التطبيقات:

/openthread/include/openthread/platform/logging.h

تُنفِّذ Logging API وظيفة تسجيل الأخطاء وتصحيحها في OpenThread، مع توفُّر مستويات متعدّدة من مخرجات تصحيح الأخطاء. هذه الواجهة اختيارية إذا لم يكن لديك خطة لاستخدام تسجيل OpenThread على مثال منصة الأجهزة الجديدة.

إنّ المستوى الأعلى والأكثر تفصيلاً هو OPENTHREAD_LOG_LEVEL_DEBG، الذي يطبع جميع معلومات الحِزم الأوّلية وأسطر السجلّات من خلال المنفذ التسلسلي أو على الشاشة الطرفية. اختَر مستوى تصحيح الأخطاء الذي يلبي احتياجاتك على أفضل وجه.

خاصة بالنظام

بيان واجهة برمجة التطبيقات:

/openthread/examples/platforms/openthread-system.h

توفّر واجهة برمجة التطبيقات الخاصة بالنظام بشكل أساسي عمليات الإعداد والإزالة للنظام الأساسي للأجهزة المحدّد. لا تستدعي مكتبة OpenThread واجهة برمجة التطبيقات هذه نفسها، ولكن قد تكون مفيدة لنظامك/نظام التشغيل المتقدّم للوقت الفعلي. يمكنك أيضًا تنفيذ عملية إعداد الوحدات الأخرى (مثل UART وRadio وRandom وMisc/Reset) في ملف المصدر هذا.

يعتمد تنفيذ واجهة برمجة التطبيقات هذه على حالة الاستخدام. إذا كنت تريد استخدام تطبيقات CLI وNCP التي تم إنشاؤها في مثال على نظام أساسي، يجب تنفيذ واجهة برمجة التطبيقات هذه. بخلاف ذلك، يمكن تنفيذ أي واجهة برمجة تطبيقات لدمج مثال برامج تشغيل النظام الأساسي في نظامك/نظام التشغيل المتقدّم للوقت الفعلي.