TREL - 平台

本單元包含使用 DNS-SD 和 UDP/IPv6 的 Thread 無線電封裝連結 (TREL) 平台抽象化機制。

摘要

Typedefs

otPlatTrelPeerInfo typedef
代表透過服務名稱「_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 位址) 有所變更,或是已移除對等點,則「必須」叫用此回呼。

詳細說明
參數
[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」。

在 mDNS 中,服務執行個體名稱所屬的網域會顯示為「local」,而且在非 mDNS 本機 DNS-SD 服務中用於註冊服務的網域。

對這個函式的後續呼叫會更新先前的服務。用於更新 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 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源