TREL - แพลตฟอร์ม
โมดูลนี้ประกอบด้วยแพลตฟอร์ม Abstraction สำหรับ Thread Radio Encapsulation Link (TREL) ที่ใช้ DNS-SD และ UDP/IPv6
สรุป
Typedef |
|
---|---|
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" |
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 ใหม่) หรือเมื่อนำเพียร์ออก
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
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"
โดเมนที่มีชื่ออินสแตนซ์บริการปรากฏจะเป็น "local" สำหรับ mDNS และเป็นโดเมนใดก็ตามที่ใช้สำหรับการจดทะเบียนบริการในกรณีที่เป็นบริการ DNS-SD ในเครื่องที่ไม่ใช่ mDNS
การเรียกใช้ฟังก์ชันนี้ในครั้งต่อๆ ไปจะอัปเดตบริการก่อนหน้า ใช้สำหรับอัปเดตข้อมูลระเบียน TXT และ/หรือหมายเลขพอร์ต
บัฟเฟอร์ aTxtData
ไม่หายไปหลังจากแสดงผลจากฟังก์ชันนี้ โดยเลเยอร์แพลตฟอร์มต้องไม่เก็บเคอร์เซอร์ไว้ แต่คัดลอกเนื้อหาแทน หากจำเป็น
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
otPlatTrelSend
void otPlatTrelSend( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr )
ขอให้ส่งแพ็กเก็ต TREL UDP ไปยังปลายทางที่ระบุ
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
แหล่งข้อมูล
หัวข้ออ้างอิง API ของ OpenThread จะมาจากซอร์สโค้ดซึ่งพร้อมใช้งานใน GitHub ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล