TREL - プラットフォーム
このモジュールには、DNS-SD と UDP/IPv6 を使用した Thread Radio Encapsulation Link(TREL)のためのプラットフォーム抽象化が含まれています。
概要
Typedef |
|
---|---|
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 ピア情報を表します。 |
Typedef
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] 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 ピアについて「add」イベントが生成されます。TREL ピアがオフラインになるたびに、「remove」イベントを生成する必要があります。ただし、「remove」イベントは保証されません。TREL サービス インスタンスが検出されると、AAAA レコードに対する新しい DNS-SD クエリが、検出されたインスタンスの SRV レコードで示されたホスト名で開始されます。ピアに複数のホスト IPv6 アドレスが見つかった場合、すべてのアドレスの中で最も高いスコープを持つアドレスを報告しなければなりません(同じスコープに複数のアドレスがある場合は、ランダムに 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」など)が生成されます。
サービス インスタンス名が表示されるドメインは、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 で入手できるソースコードに由来しています。 詳細について、またはドキュメントへの投稿については、リソースをご覧ください。