TREL - پلت فرم
این ماژول شامل انتزاع پلتفرم برای پیوند رادیویی ریسمانی (TREL) با استفاده از DNS-SD و UDP/IPv6 است.
خلاصه
Typedefs | |
---|---|
otPlatTrelPeerInfo | typedefstruct otPlatTrelPeerInfo نشان دهنده یک اطلاعات همتا 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" کشف شده است. |
Typedefs
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] aInstance نمونه 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 نمونه کشف شده شروع شود. اگر چندین آدرس IPv6 میزبان برای یک همتا کشف شود، یکی با بالاترین دامنه در بین همه آدرسها باید گزارش شود (اگر چندین آدرس در یک محدوده وجود داشته باشد، باید به طور تصادفی انتخاب شود).
پلت فرم TREL باید اطلاعات همتای کشف شده را با استفاده از پاسخ تماس otPlatTrelHandleDiscoveredPeerInfo()
ارسال کند. هنگامی که یک همتا جدید کشف می شود، زمانی که تغییری در یک ورودی موجود (به عنوان مثال، رکورد TXT جدید یا شماره پورت جدید یا آدرس IPv6 جدید)، یا زمانی که همتا حذف می شود، باید این فراخوانی فراخوانی شود.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
otPlatTrelHandleDiscoveredPeerInfo
void otPlatTrelHandleDiscoveredPeerInfo( otInstance *aInstance, const otPlatTrelPeerInfo *aInfo )
این یک تابع فراخوانی از لایه پلتفرم برای گزارش اطلاعات کشف شده TREL است.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
otPlatTrelHandleReceived
void otPlatTrelHandleReceived( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength )
یک تماس برگشتی از پلتفرم برای اطلاع از بسته دریافتی TREL 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.".
دامنه ای که در آن نام نمونه سرویس ظاهر می شود، برای mDNS "محلی" خواهد بود و هر دامنه ای است که برای ثبت سرویس در مورد سرویس DNS-SD محلی غیر mDNS استفاده می شود.
تماس بعدی با این تابع، سرویس قبلی را به روز می کند. برای به روز رسانی داده های رکورد TXT و/یا شماره پورت استفاده می شود.
بافر aTxtData
پس از بازگشت از این تابع باقی نمی ماند. لایه پلت فرم نباید نشانگر را نگه دارد و در صورت نیاز محتوا را کپی کند.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
|
otPlatTrelSend
void otPlatTrelSend( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr )
یک بسته TREL UDP را درخواست می کند تا به یک مقصد معین ارسال شود.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
|
منابع
موضوعات مرجع OpenThread API از کد منبع موجود در GitHub سرچشمه می گیرند. برای اطلاعات بیشتر، یا مشارکت در اسناد ما، به منابع مراجعه کنید.