TREL - פלטפורמה

המודול הזה כולל את ההפשטה של הפלטפורמה עבור קישור לשרשור רדיו (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
זוהי פונקציית קריאה חוזרת (callback) משכבת הפלטפורמה לדיווח על מידע דומה של TREL.
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
void
הפונקציה הזו היא קריאה חוזרת (callback) מהפלטפורמה כדי להודיע על חבילת 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()) ו-MUST לסגור את שקע ה-UDP שמשמש לקבלת הודעות TREL.

[in] מופע של OpenThread.

otPlatTrelEnable

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

הפונקציה הזו מאותחלת ומפעילה את שכבת הפלטפורמה של TREL.

בשיחה הזו, שכבת הפלטפורמה חייבת לבצע את הפעולות הבאות:

1) שכבת TREL של משטחים חייבת לפתוח שקע UDP כדי להאזין להודעות TREL ולקבל אותן מעמיתים. השקע קשור למספר יציאה זמני שנקבע על ידי שכבת הפלטפורמה. יש להחזיר את מספר היציאה ב-aUdpPort. ה-socket קשור גם לממשקי רשת שבהם יש תמיכה ב-TREL. ה-socket והיציאה שנבחרה צריכים להישאר תקפים בזמן שהתכונה TREL מופעלת.

2) בשכבת הפלטפורמה חייב להתבצע גלישה רציפה של DNS-SD בשם השירות "_trel._udp" בדומיין הגלישה המקומי, כדי לגלות מכשירים אחרים שתומכים ב-TREL. הדפדוף הרצוף ייצור שני סוגי אירועים: אירועי "הוספה" ואירועי "הסרה". עם התחלת העיון, עליו להפיק אירוע "add" עבור כל עמית TREL שקיים כעת ברשת. בכל פעם שעמית TREL עובר למצב אופליין, יש ליצור אירוע "הסרה". עם זאת, אירועים מסוג "הסרה" אינם מובטחים. כאשר מתגלה מופע של שירות TREL, יש להתחיל שאילתת DNS-SD חדשה עבור רשומת AAAA בשם המארח שצוין ברשומת ה-SRV של המופע שהתגלה. אם יתגלו כתובות IP מרובות של מארחים מסוג עמית, אחת מהכתובות בעלות ההיקף הגבוה ביותר מבין כל הכתובות חייבת להיות מדווחת (אם יש כתובות מרובות באותו היקף, יש לבחור כתובת אחת באופן אקראי).

פלטפורמת TREL צריכה להראות חזרה את פרטי האפליקציות שהתגלו באמצעות התקשרות חזרה ב-otPlatTrelHandleDiscoveredPeerInfo(). חובה להפעיל את הקריאה החוזרת (callback) כאשר מתגלה עמית חדש, כאשר יש שינוי ברשומה קיימת (למשל, רשומת TXT חדשה או מספר יציאה חדש או כתובת IPv6 חדשה), או כאשר העמית מוסר.

פרטים
פרמטרים
[in] aInstance
המופע של OpenThread.
[out] aUdpPort
מצביע להחזיר את מספר היציאה שנבחר לפי שכבת פלטפורמה.

otPlatTrelHandleDiscoveredPeerInfo

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

זוהי פונקציית קריאה חוזרת (callback) משכבת הפלטפורמה לדיווח על מידע דומה של TREL.

פרטים
פרמטרים
[in] aInstance
המופע של OpenThread.
[in] aInfo
מצביע לפרטי העמית של TREL.

otPlatTrelHandleReceived

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

הפונקציה הזו היא קריאה חוזרת (callback) מהפלטפורמה כדי להודיע על חבילת TREL UDP שהתקבלה.

פרטים
פרמטרים
[in] aInstance
מבנה מופע OpenThread.
[in] aBuffer
מאגר שמכיל את המטען הייעודי (payload) של ה-UDP שהתקבל.
[in] aLength
אורך מטען ייעודי (UDP) (מספר הבייטים).

otPlatTrelRegistrationService

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 לא נשמר לאחר החזרת הפונקציה הזו. אסור ששכבת הפלטפורמה תשמור את הסמן, ובמקום זאת תעתיק את התוכן במידת הצורך.

פרטים
פרמטרים
[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 ב-API הוא מקוד המקור, והוא זמין ב-GitHub. למידע נוסף או כדי לתרום לתיעוד שלנו, יש לעיין בקטע משאבים.