TREL - منصة

تشمل هذه الوحدة المجرّد الأساسي لـ "موصّل لاسلكي لاسلكي (TREL)" باستخدام نظام أسماء النطاقات (DNS) وSD/IPv6.

الملخّص

مواقد الخط

otPlatTrelPeerInfo مَعلمة typetype
تمثل هذه البنية معلومات نظراء 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.

[in] مثال مثيل OpenOpen.

otPlatTrelEnable

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

تعمل هذه الدالة على إعداد طبقة النظام الأساسي TREL وتفعيلها.

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

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

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

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

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

otPlatTrelHandleDiscoveredPeerInfo

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

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

التفاصيل
المعلَمات
[in] aInstance
مثيل Openthread.
[in] aInfo
مؤشر إلى معلومات النظراء من TREL.

otPlatTrelHandle المستلمة

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

وهذه الوظيفة عبارة عن استدعاء من النظام الأساسي لإشعار بحزمة TREL UDP المُستلَمة.

التفاصيل
المعلَمات
[in] aInstance
بنية المثال المفتوح.
[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" (نظام أسماء النطاقات المحلي) لنظام أسماء النطاقات (mDNS)، وسيكون أي نطاق يتم استخدامه لتسجيل الخدمة في حال استخدام خدمة نظام أسماء نطاقات محلية لا تستخدم نظام أسماء النطاقات (DNS)-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
بنية المثال المفتوح.
[in] aUdpPayload
مؤشر حمولة UDP.
[in] aUdpPayloadLen
طول البيانات الأساسية (عدد وحدات البايت).
[in] aDestSockAddr
عنوان مقبس الوجهة.

المراجع

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