メッシュ診断

このモジュールには、Mesh Diagnostics の定義と関数が含まれています。

概要

Mesh Diagnostics API には OPENTHREAD_CONFIG_MESH_DIAG_ENABLEOPENTHREAD_FTD が必要です。

Typedef

otMeshDiagChildEntry typedef
otMeshDiagQueryChildTable() の子エントリに関する情報を表します。
otMeshDiagChildInfo typedef
otMeshDiagDiscoverTopology() を使用して Thread メッシュで検出された子に関する情報を表します。
otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext) typedef
void(*
MTD の子とその IPv6 アドレスのリストに関する情報を提供するために otMeshDiagQueryChildrenIp6Addrs() が使用するコールバックを表します。
otMeshDiagChildIterator typedef
ルーターの子のリストを反復処理する不透明なイテレータです。
otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext) typedef
void(*
ポインタの型は、検出されたルーターに関する情報を提供するために otMeshDiagDiscoverTopology() が使用するコールバックを表します。
otMeshDiagDiscoverConfig typedef
検出対象のアイテムを示すメッシュ トポロジを検出するときに使用する構成のセットを表します。
otMeshDiagIp6AddrIterator typedef
ルーターの IPv6 アドレスのリストを反復処理する不透明イテレータ。
otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext) typedef
void(*
子テーブルのエントリに関する情報を提供するために otMeshDiagQueryChildTable() が使用するコールバックを表します。
otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext) typedef
void(*
ネイバー ルーター テーブルのエントリに関する情報を提供するために otMeshDiagQueryRouterNeighborTable() が使用するコールバックを表します。
otMeshDiagRouterInfo typedef
otMeshDiagDiscoverTopology() を使用して検出された Thread メッシュのルーターに関する情報を表します。
otMeshDiagRouterNeighborEntry typedef
otMeshDiagQueryRouterNeighborTable() からのルーター ネイバーのエントリに関する情報を表します。

関数

otMeshDiagCancel(otInstance *aInstance)
void
進行中のトポロジ検出がある場合はキャンセルします。それ以外の場合はアクションはありません。
otMeshDiagDiscoverTopology(otInstance *aInstance, const otMeshDiagDiscoverConfig *aConfig, otMeshDiagDiscoverCallback aCallback, void *aContext)
ネットワーク トポロジの検出を開始します。
otMeshDiagGetNextChildInfo(otMeshDiagChildIterator *aIterator, otMeshDiagChildInfo *aChildInfo)
ルーターで検出された子を反復処理します。
otMeshDiagGetNextIp6Address(otMeshDiagIp6AddrIterator *aIterator, otIp6Address *aIp6Address)
ルーターまたは MTD の子で検出された IPv6 アドレスを反復処理します。
otMeshDiagQueryChildTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryChildTableCallback aCallback, void *aContext)
指定されたルーターの子テーブルのクエリを開始します。
otMeshDiagQueryChildrenIp6Addrs(otInstance *aInstance, uint16_t aRloc16, otMeshDiagChildIp6AddrsCallback aCallback, void *aContext)
親にクエリを送信し、すべての MTD の子の IPv6 アドレスを取得します。
otMeshDiagQueryRouterNeighborTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryRouterNeighborTableCallback aCallback, void *aContext)
指定されたルーターのルーター ネイバー テーブルのクエリを開始します。

構造体

otMeshDiagChildEntry

otMeshDiagQueryChildTable() の子エントリに関する情報を表します。

otMeshDiagChildInfo

otMeshDiagDiscoverTopology() を使用して Thread メッシュで検出された子に関する情報を表します。

otMeshDiagDiscoverConfig

検出対象のアイテムを示すメッシュ トポロジを検出するときに使用する構成のセットを表します。

otMeshDiagRouterInfo

otMeshDiagDiscoverTopology() を使用して検出された Thread メッシュのルーターに関する情報を表します。

otMeshDiagRouterNeighborEntry

otMeshDiagQueryRouterNeighborTable() からのルーター ネイバーのエントリに関する情報を表します。

Typedef

otMeshDiagChildEntry

struct otMeshDiagChildEntry otMeshDiagChildEntry

otMeshDiagQueryChildTable() の子エントリに関する情報を表します。

mSupportsErrRate は、エラー トラッキング機能がサポートされているかどうか、および mFrameErrorRatemMessageErrorRate の値が有効かどうかを示します。フレームレートは MAC レイヤでフレーム送信エラー(子に向かう)を追跡し、mMessageErrorRate は IPv6 メッセージがドロップされたときの IPv6 メッセージ エラー率(MAC レイヤの上および MAC 再試行後)を追跡します。たとえば、メッセージのサイズが大きく、6LoWPAN の断片化が必要な場合、メッセージ tx のフラグメント フレーム tx の 1 つが失敗した(例: 確認応答されていない)と、メッセージ tx は失敗したと見なされます。

otMeshDiagChildInfo

struct otMeshDiagChildInfo otMeshDiagChildInfo

otMeshDiagDiscoverTopology() を使用して Thread メッシュで検出された子に関する情報を表します。

otMeshDiagChildIp6AddrsCallback

void(* otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext)

MTD の子とその IPv6 アドレスのリストに関する情報を提供するために otMeshDiagQueryChildrenIp6Addrs() が使用するコールバックを表します。

aErrorOT_ERROR_PENDING の場合は、さらに子があることを示し、コールバックが再度呼び出されます。

詳細
パラメータ
[in] aError
OT_ERROR_PENDING は、テーブル内に子がまだあることを示します。OT_ERROR_NONE テーブルが終了したことを示します。OT_ERROR_RESPONSE_TIMEOUT 応答の待機中にタイムアウトしました。
[in] aChildRloc16
子の RLOC16。0xfffeOT_ERROR_RESPONSE_TIMEOUT で使用されます。
[in] aIp6AddrIterator
otMeshDiagGetNextIp6Address() を使用して aRloc で子の IPv6 アドレスを調べるイテレータ。OT_ERROR_RESPONSE_TIMEOUT を NULL に設定します。
[in] aContext
アプリケーション固有のコンテキスト。

otMeshDiagChildIterator

struct otMeshDiagChildIterator otMeshDiagChildIterator

ルーターの子のリストを反復処理する不透明なイテレータです。

この型のインスタンスへのポインタは、otMeshDiagRouterInfo で提供されます。

otMeshDiagDiscoverCallback

void(* otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext)

ポインタの型は、検出されたルーターに関する情報を提供するために otMeshDiagDiscoverTopology() が使用するコールバックを表します。

aErrorOT_ERROR_PENDING の場合、検出はまだ完了しておらず、検出するルーターがさらに増え、コールバックが再度呼び出されることを示します。

詳細
パラメータ
[in] aError
OT_ERROR_PENDING は、検出対象のルーターがさらにあることを示します。OT_ERROR_NONE これが最後のルーターであり、メッシュ検出が完了したことを示します。OT_ERROR_RESPONSE_TIMEOUT 1 つ以上のルーターからの応答を待機してタイムアウトしました。
[in] aRouterInfo
検出されたルーター情報(aError が OT_ERROR_RESPONSE_TIMEOUT の場合は null になることもあります)。
[in] aContext
アプリケーション固有のコンテキスト。

otMeshDiagDiscoverConfig

struct otMeshDiagDiscoverConfig otMeshDiagDiscoverConfig

検出対象のアイテムを示すメッシュ トポロジを検出するときに使用する構成のセットを表します。

otMeshDiagIp6AddrIterator

struct otMeshDiagIp6AddrIterator otMeshDiagIp6AddrIterator

ルーターの IPv6 アドレスのリストを反復処理する不透明イテレータ。

この型のインスタンスへのポインタは、otMeshDiagRouterInfo で提供されます。

otMeshDiagQueryChildTableCallback

void(* otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext)

子テーブルのエントリに関する情報を提供するために otMeshDiagQueryChildTable() が使用するコールバックを表します。

aErrorOT_ERROR_PENDING の場合は、テーブルにまだエントリがあり、コールバックが再度呼び出されることを示します。

詳細
パラメータ
[in] aError
OT_ERROR_PENDING は、テーブル内にさらにエントリがあることを示します。OT_ERROR_NONE テーブルが終了したことを示します。OT_ERROR_RESPONSE_TIMEOUT 応答の待機中にタイムアウトしました。
[in] aChildEntry
子エントリ(aError が OT_ERROR_RESPONSE_TIMEOUT または OT_ERROR_NONE の場合は null にできます)。
[in] aContext
アプリケーション固有のコンテキスト。

otMeshDiagQueryRouterNeighborTableCallback

void(* otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext)

ネイバー ルーター テーブルのエントリに関する情報を提供するために otMeshDiagQueryRouterNeighborTable() が使用するコールバックを表します。

aErrorOT_ERROR_PENDING の場合は、テーブルにまだエントリがあり、コールバックが再度呼び出されることを示します。

詳細
パラメータ
[in] aError
OT_ERROR_PENDING は、テーブル内にさらにエントリがあることを示します。OT_ERROR_NONE テーブルが終了したことを示します。OT_ERROR_RESPONSE_TIMEOUT 応答の待機中にタイムアウトしました。
[in] aNeighborEntry
ネイバー エントリ(aError が RESPONSE_TIMEOUT または NONE の場合は null にできます)。
[in] aContext
アプリケーション固有のコンテキスト。

otMeshDiagRouterInfo

struct otMeshDiagRouterInfo otMeshDiagRouterInfo

otMeshDiagDiscoverTopology() を使用して検出された Thread メッシュのルーターに関する情報を表します。

otMeshDiagRouterNeighborEntry

struct otMeshDiagRouterNeighborEntry otMeshDiagRouterNeighborEntry

otMeshDiagQueryRouterNeighborTable() からのルーター ネイバーのエントリに関する情報を表します。

mSupportsErrRate は、エラー トラッキング機能がサポートされているかどうか、および mFrameErrorRatemMessageErrorRate の値が有効かどうかを示します。フレームレートは MAC レイヤでフレーム送信エラー(子に向かう)を追跡し、mMessageErrorRate は IPv6 メッセージがドロップされたときの IPv6 メッセージ エラー率(MAC レイヤの上および MAC 再試行後)を追跡します。たとえば、メッセージのサイズが大きく、6LoWPAN の断片化が必要な場合、メッセージ tx のフラグメント フレーム tx の 1 つが失敗した(例: 確認応答されていない)と、メッセージ tx は失敗したと見なされます。

関数

otMeshDiagCancel

void otMeshDiagCancel(
  otInstance *aInstance
)

進行中のトポロジ検出がある場合はキャンセルします。それ以外の場合はアクションはありません。

進行中の検出がキャンセルされると、otMeshDiagDiscoverTopology() からのコールバックは呼び出されなくなります。

otMeshDiagDiscoverTopology

otError otMeshDiagDiscoverTopology(
  otInstance *aInstance,
  const otMeshDiagDiscoverConfig *aConfig,
  otMeshDiagDiscoverCallback aCallback,
  void *aContext
)

ネットワーク トポロジの検出を開始します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンス。
[in] aConfig
検出に使用する構成(検出するアイテムなど)。
[in] aCallback
検出されたルーターを報告するコールバック。
[in] aContext
aCallback を渡すコンテキスト。
戻り値
OT_ERROR_NONE
ネットワーク トポロジの検出が正常に開始されました。
OT_ERROR_BUSY
前の検出リクエストがまだ進行中です。
OT_ERROR_INVALID_STATE
デバイスが接続されていません。
OT_ERROR_NO_BUFS
検出メッセージを送信するためのバッファを割り当てることができませんでした。

otMeshDiagGetNextChildInfo

otError otMeshDiagGetNextChildInfo(
  otMeshDiagChildIterator *aIterator,
  otMeshDiagChildInfo *aChildInfo
)

ルーターで検出された子を反復処理します。

この関数はコールバック otMeshDiagDiscoverCallback() から使用し、コールバックへの入力として提供される aRouterInfo 構造体の mChildIterator を使用しなければなりません。

詳細
パラメータ
[in,out] aIterator
使用する住所イテレータです。
[out] aChildInfo
子情報を返すポインタ(存在する場合)。
戻り値
OT_ERROR_NONE
次の子が正常に取得されました。aChildInfoaIterator を更新しました。
OT_ERROR_NOT_FOUND
これ以上お子様はいません。リストの最後に到達しました。

otMeshDiagGetNextIp6Address

otError otMeshDiagGetNextIp6Address(
  otMeshDiagIp6AddrIterator *aIterator,
  otIp6Address *aIp6Address
)

ルーターまたは MTD の子で検出された IPv6 アドレスを反復処理します。

使用する必要があります

  • コールバック otMeshDiagDiscoverCallback() から取得し、コールバックへの入力として提供されている aRouterInfo 構造体の mIp6AddrIterator を使用します。
  • 指定された aIp6AddrIterator とともにコールバック otMeshDiagChildIp6AddrsCallback() から受け取ります。

詳細
パラメータ
[in,out] aIterator
使用する住所イテレータです。
[out] aIp6Address
次の IPv6 アドレス(存在する場合)を返すポインタ。
戻り値
OT_ERROR_NONE
次の住所を取得しました。aIp6AddressaIterator を更新しました。
OT_ERROR_NOT_FOUND
これ以上住所がありません。リストの最後に到達しました。

otMeshDiagQueryChildTable

otError otMeshDiagQueryChildTable(
  otInstance *aInstance,
  uint16_t aRloc16,
  otMeshDiagQueryChildTableCallback aCallback,
  void *aContext
)

指定されたルーターの子テーブルのクエリを開始します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンス。
[in] aRloc16
クエリ対象のルーターの RLOC16。
[in] aCallback
クエリされた子テーブルを報告するためのコールバック。
[in] aContext
aCallback を渡すコンテキスト。
戻り値
OT_ERROR_NONE
クエリが正常に開始されました。
OT_ERROR_BUSY
前の検出またはクエリ リクエストが引き続き進行中です。
OT_ERROR_INVALID_ARGS
aRloc16 は有効なルーター RLOC16 ではありません。
OT_ERROR_INVALID_STATE
デバイスが接続されていません。
OT_ERROR_NO_BUFS
クエリ メッセージを送信するためのバッファを割り当てることができませんでした。

otMeshDiagQueryChildrenIp6Addrs

otError otMeshDiagQueryChildrenIp6Addrs(
  otInstance *aInstance,
  uint16_t aRloc16,
  otMeshDiagChildIp6AddrsCallback aCallback,
  void *aContext
)

親にクエリを送信し、すべての MTD の子の IPv6 アドレスを取得します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンス。
[in] aRloc16
クエリ対象の親の RLOC16。
[in] aCallback
クエリされた子 IPv6 アドレスリストを報告するためのコールバック。
[in] aContext
aCallback を渡すコンテキスト。
戻り値
OT_ERROR_NONE
クエリが正常に開始されました。
OT_ERROR_BUSY
前の検出またはクエリ リクエストが引き続き進行中です。
OT_ERROR_INVALID_ARGS
aRloc16 は有効な RLOC16 ではありません。
OT_ERROR_INVALID_STATE
デバイスが接続されていません。
OT_ERROR_NO_BUFS
クエリ メッセージを送信するためのバッファを割り当てることができませんでした。

otMeshDiagQueryRouterNeighborTable

otError otMeshDiagQueryRouterNeighborTable(
  otInstance *aInstance,
  uint16_t aRloc16,
  otMeshDiagQueryRouterNeighborTableCallback aCallback,
  void *aContext
)

指定されたルーターのルーター ネイバー テーブルのクエリを開始します。

詳細
パラメータ
[in] aInstance
OpenThread インスタンス。
[in] aRloc16
クエリ対象のルーターの RLOC16。
[in] aCallback
クエリ対象のテーブルを報告するためのコールバック。
[in] aContext
aCallback を渡すコンテキスト。
戻り値
OT_ERROR_NONE
クエリが正常に開始されました。
OT_ERROR_BUSY
前の検出またはクエリ リクエストが引き続き進行中です。
OT_ERROR_INVALID_ARGS
aRloc16 は有効なルーター RLOC16 ではありません。
OT_ERROR_INVALID_STATE
デバイスが接続されていません。
OT_ERROR_NO_BUFS
クエリ メッセージを送信するためのバッファを割り当てることができませんでした。

マクロ

OT_MESH_DIAG_VERSION_UNKNOWN

 OT_MESH_DIAG_VERSION_UNKNOWN 0xffff

スレッド バージョンが不明であることを指定します。

デバイスからバージョンが提供されていない場合に、mVersion プロパティの otMeshDiagRouterInfo で使用されます。これは、デバイスが 1.3.0(バージョン値 4)以前を搭載している可能性が高いことを示します。

関連情報

OpenThread API リファレンスのトピックは、GitHub で入手できるソースコードに由来しています。 詳細について、またはドキュメントへの投稿については、リソースをご覧ください。