TREL - النظام الأساسي

تشمل هذه الوحدة تجريد النظام الأساسي لرابط تغليف راديو Thread (TREL) باستخدام نظام أسماء النطاقات (DNS-SD) وبروتوكول UDP/IPv6.

ملخّص

تحديدات النوع

otPlatTrelPeerInfo typedef
يُمثِّل معلومات TREL المشابهة التي تم اكتشافها باستخدام تصفُّح DNS-SD على اسم الخدمة "_trel._udp".

الدوال

otPlatTrelDisable(otInstance *aInstance)
void
لإيقاف طبقة النظام الأساسي TREL.
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
void
تهيئة طبقة النظام الأساسي TREL وتفعيلها.
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
void
هذه دالة رد اتصال من طبقة النظام الأساسي للإبلاغ عن معلومات نظير TREL تم اكتشافه.
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
void
عبارة عن معاودة الاتصال من النظام الأساسي للإشعار بحزمة TREL UDP مستلَمة.
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
void
يسجِّل خدمة جديدة للإعلان عنها باستخدام DNS-SD [RFC6763].
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
void
تطلب إرسال حزمة TREL UDP إلى وجهة معينة.

الهياكل

otPlatTrelPeerInfo

يُمثِّل معلومات TREL المشابهة التي تم اكتشافها باستخدام تصفُّح DNS-SD على اسم الخدمة "_trel._udp".

تحديدات النوع

otPlatTrelPeerInfo

struct otPlatTrelPeerInfo otPlatTrelPeerInfo

يُمثِّل معلومات TREL المشابهة التي تم اكتشافها باستخدام تصفُّح DNS-SD على اسم الخدمة "_trel._udp".

الدوال

otPlatTrelDisable

void otPlatTrelDisable(
  otInstance *aInstance
)

لإيقاف طبقة النظام الأساسي TREL.

بعد هذه المكالمة، يجب أن توقف طبقة النظام الأساسي تصفّح DNS-SD على اسم الخدمة " _trel._udp"، ويتوقف عن الإعلان عن خدمة TREL DNS-SD (من otPlatTrelRegisterService()) ويجب أن يغلق مقبس UDP المُستخدَم لتلقّي رسائل TREL.

[في] مثيل OpenThread.

otPlatTrelEnable

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

تهيئة طبقة النظام الأساسي TREL وتفعيلها.

في هذا الاستدعاء، يجب أن تنفّذ طبقة النظام الأساسي ما يلي:

1) يجب أن تفتح طبقة منصة TREL مقبس UDP للاستماع إلى رسائل TREL واستلامها من النظراء. يتم ربط المقبس برقم منفذ مؤقت يتم اختياره بواسطة طبقة النظام الأساسي. يجب عرض رقم المنفذ في aUdpPort. يرتبط المقبس أيضًا بواجهات الشبكة التي سيتم دعم TREL عليها. يجب أن يبقى المقبس والمنفذ المحدد صالحين أثناء تفعيل TREL.

2) يجب أن تبدأ طبقة النظام الأساسي تصفح DNS-SD مستمرًا على اسم الخدمة "_trel._udp" داخل نطاق التصفح المحلي لاكتشاف الأجهزة الأخرى التي تدعم TREL. وسيؤدي التصفُّح الجاري إلى إنتاج نوعَين مختلفَين من الأحداث: أحداث "إضافة" وأحداث "إزالة". عند بدء التصفح، من المفترض أن ينتج حدث "إضافة" لكل نظير TREL موجود حاليًا على الشبكة. كلما انقطع اتصال نظير TREL بلا اتصال بالإنترنت، يجب إنشاء حدث "إزالة". ومع ذلك، فإن أحداث "الإزالة" غير مضمونة. عند اكتشاف مثيل خدمة TREL، يجب بدء طلب بحث حالي جديد لـ DNS-SD لسجلّ AAAA على اسم المضيف المُشار إليه في سجلّ SRV للمثيل الذي تم اكتشافه. إذا تم اكتشاف عدة عناوين للمضيف من الإصدار 6 من بروتوكول الإنترنت لأحد التطبيقات المشابهة، يجب الإبلاغ عن أحد العناوين ذات النطاق الأعلى من بين جميع العناوين (إذا كان هناك عناوين متعددة في النطاق نفسه، يجب تحديد أحد العناوين بشكل عشوائي).

يجب أن ترسل منصة TREL إشارة إلى معلومات التطبيقات المشابهة التي تم اكتشافها باستخدام معاودة الاتصال بـ otPlatTrelHandleDiscoveredPeerInfo(). يجب استدعاء رد الاتصال هذا عند اكتشاف نظير جديد، أو في حال حدوث تغيير في إدخال حالي (على سبيل المثال، سجل TXT جديد أو رقم منفذ جديد أو عنوان IPv6 جديد)، أو عند إزالة التطبيق المشابه.

التفاصيل
المَعلمات
[in] aInstance
مثيل OpenThread.
[out] aUdpPort
مؤشر لإرجاع رقم المنفذ المحدد حسب طبقة النظام الأساسي.

otPlatTrelHandleDiscoveredPeerInfo

void otPlatTrelHandleDiscoveredPeerInfo(
  otInstance *aInstance,
  const otPlatTrelPeerInfo *aInfo
)

هذه دالة رد اتصال من طبقة النظام الأساسي للإبلاغ عن معلومات نظير TREL تم اكتشافه.

التفاصيل
المَعلمات
[in] aInstance
مثيل OpenThread.
[in] aInfo
مؤشر يشير إلى معلومات التطبيق المشابهة في TREL.

otPlatTrelHandleReceived

void otPlatTrelHandleReceived(
  otInstance *aInstance,
  uint8_t *aBuffer,
  uint16_t aLength
)

عبارة عن معاودة الاتصال من النظام الأساسي للإشعار بحزمة TREL UDP مستلَمة.

التفاصيل
المَعلمات
[in] aInstance
بنية النسخة الافتراضية OpenThread
[in] aBuffer
يشير هذا المصطلح إلى مخزن مؤقت يحتوي على حمولة بيانات UDP التي تم استلامها.
[in] aLength
طول حمولة بيانات UDP (عدد وحدات البايت).

otPlatTrelRegisterService

void otPlatTrelRegisterService(
  otInstance *aInstance,
  uint16_t aPort,
  const uint8_t *aTxtData,
  uint8_t aTxtLength
)

يسجِّل خدمة جديدة للإعلان عنها باستخدام DNS-SD [RFC6763].

اسم الخدمة هو "_trel._udp". يجب أن يستخدم النظام الأساسي اسم المضيف الخاص به، وعند دمجه مع اسم الخدمة واسم نطاق DNS-SD المحلي، سيؤدّي ذلك إلى الحصول على اسم مثيل الخدمة الكامل، على سبيل المثال "example-host._trel._udp.local.".

سيكون النطاق الذي يظهر ضمنه اسم مثيل الخدمة هو "local" (local) بالنسبة إلى mDNS، وسيكون أي نطاق يتم استخدامه لتسجيل الخدمة في حال وجود خدمة DNS-SD محلية بخلاف mDNS.

يؤدي استدعاء لاحق لهذه الدالة إلى تعديل الخدمة السابقة. ويتم استخدامه لتعديل بيانات سجلّ TXT و/أو رقم المنفذ.

لا يستمر المخزن المؤقت aTxtData بعد الرجوع من هذه الدالة. يجب ألا تحتفظ طبقة النظام الأساسي بالمؤشر ويتم نسخ المحتوى إذا لزم الأمر بدلاً من ذلك.

التفاصيل
المَعلمات
[in] aInstance
مثيل OpenThread.
[in] aPort
رقم المنفذ المطلوب تضمينه في سجلّ SRV للخدمة المُعلَن عنها.
[in] aTxtData
مؤشر يشير إلى بيانات سجلّ TXT (المُرمَّزة) لتضمينها في الخدمة المُعلَن عنها.
[in] aTxtLength
طول aTxtData (عدد وحدات بايت).

otPlatTrelSend

void otPlatTrelSend(
  otInstance *aInstance,
  const uint8_t *aUdpPayload,
  uint16_t aUdpPayloadLen,
  const otSockAddr *aDestSockAddr
)

تطلب إرسال حزمة TREL UDP إلى وجهة معينة.

التفاصيل
المَعلمات
[in] aInstance
بنية النسخة الافتراضية OpenThread
[in] aUdpPayload
مؤشر لحمولة UDP.
[in] aUdpPayloadLen
طول حمولة البيانات (عدد وحدات بايت).
[in] aDestSockAddr
عنوان مقبس الوجهة.

المراجِع

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