TREL - แพลตฟอร์ม

โมดูลนี้ประกอบด้วยแพลตฟอร์ม Abstraction สำหรับ Thread Radio Encapsulation Link (TREL) ที่ใช้ DNS-SD และ UDP/IPv6

สรุป

Typedef

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"

Typedef

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 การเรียกดูที่ดำเนินอยู่จะสร้างเหตุการณ์ 2 ประเภทที่แตกต่างกัน ได้แก่ เหตุการณ์ "เพิ่ม" และ "นำออก" เมื่อเริ่มท่องเว็บแล้ว ระบบควรสร้างเหตุการณ์ "add" สำหรับเพียร์ TREL ทุกตัวที่อยู่ในเครือข่าย เมื่อใดก็ตามที่เพียร์ TREL ออฟไลน์ ระบบควรสร้างเหตุการณ์ "remove" อย่างไรก็ตาม ระบบไม่รับประกันการแสดงผลเหตุการณ์ "ลบ" เมื่อพบอินสแตนซ์บริการ TREL การค้นหา DNS-SD อย่างต่อเนื่องใหม่สำหรับระเบียน AAAA ควรเริ่มต้นในชื่อโฮสต์ที่ระบุในระเบียน SRV ของอินสแตนซ์ที่พบ หากพบที่อยู่ IPv6 ของโฮสต์หลายรายการสำหรับเพียร์ จะต้องรายงาน 1 รายการที่มีขอบเขตสูงสุดในที่อยู่ทั้งหมด (หากมีหลายที่อยู่ในขอบเขตเดียวกัน ระบบจะสุ่มเลือก 1 รายการ)

แพลตฟอร์ม 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" สำหรับ 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
ที่อยู่ของซ็อกเก็ตปลายทาง

แหล่งข้อมูล

หัวข้ออ้างอิง API ของ OpenThread จะมาจากซอร์สโค้ดซึ่งพร้อมใช้งานใน GitHub ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล