TREL - 平台
本單元包含使用 DNS-SD 和 UDP/IPv6 的 Thread 無線電封裝連結 (TREL) 平台抽象化機制。
摘要
Typedefs |
|
---|---|
otPlatTrelPeerInfo
|
typedefstruct otPlatTrelPeerInfo
代表透過服務名稱「_trel._udp」瀏覽 DNS-SD 所找到的 TREL 對等點資訊。 |
函式 |
|
---|---|
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._udp」瀏覽 DNS-SD 所找到的 TREL 對等點資訊。 |
Typedefs
otPlatTrelPeerInfo
struct otPlatTrelPeerInfo otPlatTrelPeerInfo
代表透過服務名稱「_trel._udp」瀏覽 DNS-SD 所找到的 TREL 對等點資訊。
函式
otPlatTrelDisable
void otPlatTrelDisable( otInstance *aInstance )
停用 TREL 平台層。
在此呼叫之後,平台層「必須」停止在服務名稱「_trel._udp」上進行 DNS-SD 瀏覽、停止向 otPlatTrelRegisterService()
發布 TREL DNS-SD 服務,並「必須」關閉用來接收 TREL 訊息的 UDP 通訊端。
[in] a 執行個體:OpenThread 執行個體。
otPlatTrelEnable
void otPlatTrelEnable( otInstance *aInstance, uint16_t *aUdpPort )
初始化並啟用 TREL 平台層。
在此呼叫中,平台層「必須」執行下列作業:
1) TREL 平台層「必須」開啟 UDP 通訊端,以便監聽及接收來自對等點的 TREL 訊息。通訊端會繫結至平台層選擇的暫時通訊埠號碼。您「必須」以 aUdpPort
傳回通訊埠編號。通訊端也會繫結到支援 TREL 的網路介面。TREL 啟用時,通訊端和所選連接埠應保持有效狀態。
2) 平台層「必須」持續瀏覽本機瀏覽網域中的「_trel._udp」服務名稱,以找出其他支援 TREL 的裝置。進行中的瀏覽會產生兩種事件:「新增」事件和「移除」事件。瀏覽開始時,網路應為每個目前在網路上的 TREL 對等點產生「add」事件。當 TREL 對等點離線時,則應產生「移除」事件。但我們不保證會「移除」事件。找到 TREL 服務執行個體時,應針對找到的執行個體 SRV 記錄中指定的主機名稱,對 AAAA 記錄執行新的執行中 DNS-SD 查詢。如果為同一個對等點找到多個主機 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 中,服務執行個體名稱所屬的網域會顯示為「local」,而且在非 mDNS 本機 DNS-SD 服務中用於註冊服務的網域。
對這個函式的後續呼叫會更新先前的服務。用於更新 TXT 記錄資料和/或通訊埠號碼。
從這個函式傳回後,aTxtData
緩衝區不會保留。平台層「不得」保留指標,必須視需要複製內容。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
otPlatTrelSend
void otPlatTrelSend( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr )
要求將 TREL UDP 封包傳送至指定目的地。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
資源
OpenThread API 參考資料主題源自原始碼,請前往 GitHub 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源。