Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

TREL - プラットフォーム

このモジュールには、DNS-SD と UDP/IPv6 を使用した Thread Radio Encapsulation Link(TREL)のプラットフォーム抽象化が含まれています。

概要

Typedef

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 ピア情報を表します。

Typedef

otPlatTrelPeerInfo

struct otPlatTrelPeerInfo otPlatTrelPeerInfo

この構造は、サービス名「_trel._udp」で DNS-SD ブラウズを使用して検出された TREL ピア情報を表します。

関数

otPlatTrelDisable(OTPlatTrelDisable)

void otPlatTrelDisable(
  otInstance *aInstance
)

この関数は、TREL プラットフォーム レイヤを無効にします。

この呼び出しの後、プラットフォーム レイヤはサービス名「_trel._udp」に対する DNS-SD ブラウズを停止し、(otPlatTrelRegisterService() から)TREL DNS-SD サービスのアドバタイズを停止し、TREL メッセージの受信に使用される UDP ソケットを閉じる必要があります。

[in] aInstance OpenThread インスタンス。

otPlatTrelEnable

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

この関数は、TREL プラットフォーム レイヤを初期化して有効にします。

この呼び出し時に、プラットフォーム レイヤは次のことを行う必要があります。

1)TREL プラットフォーム レイヤは、ピアから TREL メッセージをリッスンして受信するために UDP ソケットを開く必要があります。ソケットは、プラットフォーム レイヤによって選択されたエフェメラル ポート番号にバインドされます。ポート番号は aUdpPort で返さなければなりません。ソケットは、TREL をサポートするネットワーク インターフェースにもバインドされます。TREL が有効になっている場合は、ソケットと選択したポートが有効なままになります。

2)プラットフォーム レイヤは、TREL をサポートする他のデバイスを検出するために、ローカル ブラウジング ドメイン内のサービス名「_trel._udp」で継続的な DNS-SD ブラウジングを開始しなければなりません。進行中のブラウジングでは、「追加」イベントと「削除」イベントの 2 種類のイベントが生成されます。ブラウズが開始されると、ネットワークに現在存在するすべての TREL ピアに対して「追加」イベントが生成されます。TREL ピアがオフラインになったときには、「remove」イベントを生成する必要があります。ただし、「remove」イベントは保証されません。TREL サービス インスタンスが見つかった場合、AAAA レコードの新しい DNS-SD クエリを、検出されたインスタンスの SRV レコードに示されているホスト名で開始する必要があります。ピアで複数の IPv6 アドレスを持つアドレスが見つかったときは、すべてのアドレスの中でスコープが最も大きいアドレスを報告する必要があります(同じスコープに複数のアドレスがある場合、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)。

mDNS の場合、サービス インスタンス名の表示ドメインは「ローカル」となり、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 で入手可能なソースコードに基づいています。 詳細またはドキュメントへの投稿については、リソースをご覧ください。