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

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

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

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

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

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

النوع الدليل
تنفيذ PAL الخاص بالنظام الأساسي /openthread/examples/platforms/platform-name
ملفات العناوين - واجهة برمجة تطبيقات مساحة تخزين غير ثابتة /openthread/examples/platforms/utils
جميع ملفات العناوين الأخرى /openthread/include/openthread/platform
HAL BSP /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 اختيارية. ومع ذلك، حتى إذا كنت لا تخطط لاستخدام هذه الإضافات على مثال النظام الأساسي للأجهزة الجديد، فإننا نوصي بشدة بإضافة الدعم لبعض الأسباب:

  • سطر الأوامر (CLI) مفيد للتحقق من عمل المنفذ بشكل صحيح
  • تستخدم "أداة التشغيل التلقائي" واجهة UART للتحكم في OpenThread لأغراض الاختبار والاعتماد

إذا كان النظام الأساسي للأجهزة المستهدفة يدعم وحدة USB CDC بدلاً من UART، فتأكد من:

  • تثبيت برنامج تشغيل USB CDC الصحيح على الجانب المضيف
  • استبدال تنفيذ واجهة برمجة تطبيقات UART ببرنامج تشغيل USB CDC (بالإضافة إلى SSP) من جانب OpenThread، باستخدام النماذج الأولية للوظائف

راديو

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

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

تحدد واجهة برمجة تطبيقات اللاسلكي جميع الوظائف اللازمة التي تستدعيها طبقة MAC الأعلى 802.15.4 MAC. يجب أن تكون شريحة الراديو متوافقة تمامًا مع المواصفات 20.6 غيغاهرتز 802.15.4-2006.

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

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

إعدادات متنوعة/إعادة ضبط

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

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

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

الإنتروبيا

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

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

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

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

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

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

مساحة تخزين غير ثابتة

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

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

أو

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

ويمكن تلبية متطلبات التخزين غير المتقلبة من خلال تنفيذ إحدى واجهتي برمجة التطبيقات المدرجة أعلاه. تعمل واجهة برمجة تطبيقات Flash على تنفيذ برنامج تشغيل لتخزين الفلاش، بينما توفر واجهة برمجة التطبيقات للإعدادات وظائف لتنفيذ برنامج الفلاش ضمن الطبقة العليا.

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

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

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

يجب تعيين هذه العلامة في ملف /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h.

جارٍ التسجيل

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

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

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

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

خاص بالنظام

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

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

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

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