Mesh-Diagnose

Dieses Modul enthält Definitionen und Funktionen für die Mesh-Netzwerkdiagnose.

Zusammenfassung

Für die Mesh-Diagnose-APIs sind OPENTHREAD_CONFIG_MESH_DIAG_ENABLE und OPENTHREAD_FTD erforderlich.

Typedefs

otMeshDiagChildEntry typedef
Informationen zu einem untergeordneten Eintrag aus otMeshDiagQueryChildTable().
otMeshDiagChildInfo typedef
Informationen zu einem erkannten untergeordneten Element im Thread-Mesh-Netzwerk mithilfe von otMeshDiagDiscoverTopology().
otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext) typedef
void(*
Stellt den Callback dar, der von otMeshDiagQueryChildrenIp6Addrs() verwendet wird, um Informationen über ein untergeordnetes MTD und dessen Liste von IPv6-Adressen bereitzustellen.
otMeshDiagChildIterator typedef
Ein intransparenter Iteration, um die Liste der untergeordneten Elemente eines Routers zu durchlaufen.
otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext) typedef
void(*
Der Zeigertyp steht für den Callback, über den otMeshDiagDiscoverTopology() Informationen zu einem erkannten Router liefert.
otMeshDiagDiscoverConfig typedef
Stellt die Konfigurationen dar, die beim Erkennen der Mesh-Netzwerktopologie verwendet werden und angeben, welche Elemente erkannt werden sollen.
otMeshDiagIp6AddrIterator typedef
Ein intransparenter Iteration, um die Liste von IPv6-Adressen eines Routers zu durchlaufen.
otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext) typedef
void(*
Stellt den Callback dar, der von otMeshDiagQueryChildTable() verwendet wird, um Informationen zu untergeordneten Tabelleneinträgen bereitzustellen.
otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext) typedef
void(*
Stellt den Callback dar, der von otMeshDiagQueryRouterNeighborTable() verwendet wird, um Informationen über benachbarte Router-Tabelleneinträge bereitzustellen.
otMeshDiagRouterInfo typedef
Informationen zu einem Router im Thread-Mesh-Netzwerk, der mit otMeshDiagDiscoverTopology() erkannt wurde.
otMeshDiagRouterNeighborEntry typedef
Informationen zu einem Routernachbareintrag aus otMeshDiagQueryRouterNeighborTable().

Funktionen

otMeshDiagCancel(otInstance *aInstance)
void
Bricht eine laufende Topologieerkennung ab, falls eine vorhanden ist. Andernfalls wird keine Aktion ausgeführt.
otMeshDiagDiscoverTopology(otInstance *aInstance, const otMeshDiagDiscoverConfig *aConfig, otMeshDiagDiscoverCallback aCallback, void *aContext)
Startet die Erkennung der Netzwerktopologie.
otMeshDiagGetNextChildInfo(otMeshDiagChildIterator *aIterator, otMeshDiagChildInfo *aChildInfo)
Durchläuft die erkannten untergeordneten Elemente eines Routers.
otMeshDiagGetNextIp6Address(otMeshDiagIp6AddrIterator *aIterator, otIp6Address *aIp6Address)
Durchläuft die erkannten IPv6-Adressen eines Routers oder untergeordneten MTD.
otMeshDiagQueryChildTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryChildTableCallback aCallback, void *aContext)
Startet die Abfrage einer untergeordneten Tabelle für einen bestimmten Router.
otMeshDiagQueryChildrenIp6Addrs(otInstance *aInstance, uint16_t aRloc16, otMeshDiagChildIp6AddrsCallback aCallback, void *aContext)
Sendet eine Abfrage an ein übergeordnetes Element, um die IPv6-Adressen aller untergeordneten MTD-Objekte abzurufen.
otMeshDiagQueryRouterNeighborTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryRouterNeighborTableCallback aCallback, void *aContext)
Startet die Abfrage der Router-Nachbartabelle für einen bestimmten Router.

Strukturen

otMeshDiagChildEntry

Informationen zu einem untergeordneten Eintrag aus otMeshDiagQueryChildTable().

otMeshDiagChildInfo

Informationen zu einem erkannten untergeordneten Element im Thread-Mesh-Netzwerk mithilfe von otMeshDiagDiscoverTopology().

otMeshDiagDiscoverConfig

Stellt die Konfigurationen dar, die beim Erkennen der Mesh-Netzwerktopologie verwendet werden und angeben, welche Elemente erkannt werden sollen.

otMeshDiagRouterInfo

Informationen zu einem Router im Thread-Mesh-Netzwerk, der mit otMeshDiagDiscoverTopology() erkannt wurde.

otMeshDiagRouterNeighborEntry

Informationen zu einem Routernachbareintrag aus otMeshDiagQueryRouterNeighborTable().

Typedefs

otMeshDiagChildEntry

struct otMeshDiagChildEntry otMeshDiagChildEntry

Informationen zu einem untergeordneten Eintrag aus otMeshDiagQueryChildTable().

mSupportsErrRate gibt an, ob die Fehlerverfolgungsfunktion unterstützt wird, und die Werte mFrameErrorRate und mMessageErrorRate sind gültig. Die Frame-Fehlerrate erfasst Frame-Tx-Fehler (in Richtung des untergeordneten Elements) auf der MAC-Ebene, während mMessageErrorRate die Fehlerrate der IPv6-Nachrichten (über der MAC-Ebene und nach MAC-Wiederholungen) erfasst, wenn eine IPv6-Nachricht gelöscht wird. Wenn die Nachricht beispielsweise groß ist und eine 6LoWPAN-Fragmentierung erfordert, gilt die Nachricht tx als fehlgeschlagen, wenn einer ihrer Fragment-Frames tx fehlschlägt (z. B. nie bestätigt).

otMeshDiagChildInfo

struct otMeshDiagChildInfo otMeshDiagChildInfo

Informationen zu einem erkannten untergeordneten Element im Thread-Mesh-Netzwerk mithilfe von otMeshDiagDiscoverTopology().

otMeshDiagChildIp6AddrsCallback

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

Stellt den Callback dar, der von otMeshDiagQueryChildrenIp6Addrs() verwendet wird, um Informationen über ein untergeordnetes MTD und dessen Liste von IPv6-Adressen bereitzustellen.

Wenn aError den Wert OT_ERROR_PENDING hat, bedeutet das, dass es weitere untergeordnete Elemente gibt und der Callback noch einmal aufgerufen wird.

Details
Parameter
[in] aError
OT_ERROR_PENDING Gibt an, dass weitere untergeordnete Elemente in der Tabelle vorhanden sind. OT_ERROR_NONE Gibt an, dass die Tabelle fertig ist. OT_ERROR_RESPONSE_TIMEOUT Zeitüberschreitung beim Warten auf die Antwort.
[in] aChildRloc16
Der RLOC16 des untergeordneten Elements. 0xfffe wird für OT_ERROR_RESPONSE_TIMEOUT verwendet.
[in] aIp6AddrIterator
Ein Iterator, der die IPv6-Adressen des untergeordneten Elements mit aRloc mithilfe von otMeshDiagGetNextIp6Address() durchläuft. Wird für OT_ERROR_RESPONSE_TIMEOUT auf NULL gesetzt.
[in] aContext
Anwendungsspezifischer Kontext.

otMeshDiagChildIterator

struct otMeshDiagChildIterator otMeshDiagChildIterator

Ein intransparenter Iteration, um die Liste der untergeordneten Elemente eines Routers zu durchlaufen.

Zeiger auf eine Instanz dieses Typs werden in otMeshDiagRouterInfo bereitgestellt.

otMeshDiagDiscoverCallback

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

Der Zeigertyp steht für den Callback, über den otMeshDiagDiscoverTopology() Informationen zu einem erkannten Router liefert.

Wenn aError den Wert OT_ERROR_PENDING hat, bedeutet das, dass die Erkennung noch nicht abgeschlossen ist und dass weitere Router erkannt werden müssen und der Callback noch einmal aufgerufen wird.

Details
Parameter
[in] aError
OT_ERROR_PENDING Gibt an, dass weitere Router erkannt werden müssen. OT_ERROR_NONE Gibt an, dass dies der letzte Router ist und die Mesh-Erkennung abgeschlossen ist. OT_ERROR_ANSWER_TIMEOUT Zeitüberschreitung beim Warten auf die Antwort von einem oder mehreren Routern.
[in] aRouterInfo
Die erkannten Routerinformationen (können null sein, wenn aError OT_ERROR_RESPONSE_TIMEOUT ist).
[in] aContext
Anwendungsspezifischer Kontext.

otMeshDiagDiscoverConfig

struct otMeshDiagDiscoverConfig otMeshDiagDiscoverConfig

Stellt die Konfigurationen dar, die beim Erkennen der Mesh-Netzwerktopologie verwendet werden und angeben, welche Elemente erkannt werden sollen.

otMeshDiagIp6AddrIterator

struct otMeshDiagIp6AddrIterator otMeshDiagIp6AddrIterator

Ein intransparenter Iteration, um die Liste von IPv6-Adressen eines Routers zu durchlaufen.

Zeiger auf eine Instanz dieses Typs werden in otMeshDiagRouterInfo bereitgestellt.

otMeshDiagQueryChildTableCallback

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

Stellt den Callback dar, der von otMeshDiagQueryChildTable() verwendet wird, um Informationen zu untergeordneten Tabelleneinträgen bereitzustellen.

Wenn aError den Wert OT_ERROR_PENDING hat, bedeutet dies, dass die Tabelle noch mehr Einträge enthält und der Callback noch einmal aufgerufen wird.

Details
Parameter
[in] aError
OT_ERROR_PENDING Gibt an, dass die Tabelle weitere Einträge enthält. OT_ERROR_NONE Gibt an, dass die Tabelle fertig ist. OT_ERROR_RESPONSE_TIMEOUT Zeitüberschreitung beim Warten auf die Antwort.
[in] aChildEntry
Der untergeordnete Eintrag (kann null sein, wenn aError OT_ERROR_ANSWER_TIMEOUT oder OT_ERROR_NONE ist).
[in] aContext
Anwendungsspezifischer Kontext.

otMeshDiagQueryRouterNeighborTableCallback

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

Stellt den Callback dar, der von otMeshDiagQueryRouterNeighborTable() verwendet wird, um Informationen über benachbarte Router-Tabelleneinträge bereitzustellen.

Wenn aError den Wert OT_ERROR_PENDING hat, bedeutet dies, dass die Tabelle noch mehr Einträge enthält und der Callback noch einmal aufgerufen wird.

Details
Parameter
[in] aError
OT_ERROR_PENDING Gibt an, dass die Tabelle weitere Einträge enthält. OT_ERROR_NONE Gibt an, dass die Tabelle fertig ist. OT_ERROR_RESPONSE_TIMEOUT Zeitüberschreitung beim Warten auf die Antwort.
[in] aNeighborEntry
Der Nachbareintrag (kann null sein, wenn aError ANTWORT_TIMEOUT oder NONE ist).
[in] aContext
Anwendungsspezifischer Kontext.

otMeshDiagRouterInfo

struct otMeshDiagRouterInfo otMeshDiagRouterInfo

Informationen zu einem Router im Thread-Mesh-Netzwerk, der mit otMeshDiagDiscoverTopology() erkannt wurde.

otMeshDiagRouterNeighborEntry

struct otMeshDiagRouterNeighborEntry otMeshDiagRouterNeighborEntry

Informationen zu einem Routernachbareintrag aus otMeshDiagQueryRouterNeighborTable().

mSupportsErrRate gibt an, ob die Fehlerverfolgungsfunktion unterstützt wird, und die Werte mFrameErrorRate und mMessageErrorRate sind gültig. Die Frame-Fehlerrate erfasst Frame-Tx-Fehler (in Richtung des untergeordneten Elements) auf der MAC-Ebene, während mMessageErrorRate die Fehlerrate der IPv6-Nachrichten (über der MAC-Ebene und nach MAC-Wiederholungen) erfasst, wenn eine IPv6-Nachricht gelöscht wird. Wenn die Nachricht beispielsweise groß ist und eine 6LoWPAN-Fragmentierung erfordert, gilt die Nachricht tx als fehlgeschlagen, wenn einer ihrer Fragment-Frames tx fehlschlägt (z. B. nie bestätigt).

Funktionen

otMeshDiagCancel

void otMeshDiagCancel(
  otInstance *aInstance
)

Bricht eine laufende Topologieerkennung ab, falls eine vorhanden ist. Andernfalls wird keine Aktion ausgeführt.

Wenn die laufende Erkennung abgebrochen wird, wird der Callback von otMeshDiagDiscoverTopology() nicht mehr aufgerufen.

otMeshDiagDiscoverTopology

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

Startet die Erkennung der Netzwerktopologie.

Details
Parameter
[in] aInstance
Die OpenThread-Instanz.
[in] aConfig
Die für die Erkennung zu verwendende Konfiguration (z.B. welche Elemente erkannt werden sollen).
[in] aCallback
Der Callback, der die erkannten Router meldet.
[in] aContext
Ein Kontext, der in aCallback übergeben werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Erkennung der Netzwerktopologie wurde gestartet.
OT_ERROR_BUSY
Eine vorherige Erkennungsanfrage ist noch aktiv.
OT_ERROR_INVALID_STATE
Gerät ist nicht verbunden.
OT_ERROR_NO_BUFS
Puffer zum Senden von Erkennungsnachrichten konnte nicht zugeordnet werden.

otMeshDiagGetNextChildInfo

otError otMeshDiagGetNextChildInfo(
  otMeshDiagChildIterator *aIterator,
  otMeshDiagChildInfo *aChildInfo
)

Durchläuft die erkannten untergeordneten Elemente eines Routers.

Diese Funktion MUSS aus der Callback-otMeshDiagDiscoverCallback() und der mChildIterator aus der aRouterInfo-Struktur verwendet werden, die als Eingabe für den Callback bereitgestellt wird.

Details
Parameter
[in,out] aIterator
Der zu verwendende Adress-Iterator.
[out] aChildInfo
Ein Zeiger, um die Informationen zu den untergeordneten Elementen (falls vorhanden) zurückzugeben.
Rückgabewerte
OT_ERROR_NONE
Das nächste untergeordnete Element wurde abgerufen. aChildInfo und aIterator wurden aktualisiert.
OT_ERROR_NOT_FOUND
Kein Kind mehr. Sie haben das Ende der Liste erreicht.

otMeshDiagGetNextIp6Address

otError otMeshDiagGetNextIp6Address(
  otMeshDiagIp6AddrIterator *aIterator,
  otIp6Address *aIp6Address
)

Durchläuft die erkannten IPv6-Adressen eines Routers oder untergeordneten MTD.

MUSS verwendet werden

Details
Parameter
[in,out] aIterator
Der zu verwendende Adress-Iterator.
[out] aIp6Address
Ein Zeiger, um die nächste IPv6-Adresse (falls vorhanden) zurückzugeben.
Rückgabewerte
OT_ERROR_NONE
Nächste Adresse wurde abgerufen. aIp6Address und aIterator wurden aktualisiert.
OT_ERROR_NOT_FOUND
Keine weitere Adresse. Sie haben das Ende der Liste erreicht.

otMeshDiagQueryChildTable

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

Startet die Abfrage einer untergeordneten Tabelle für einen bestimmten Router.

Details
Parameter
[in] aInstance
Die OpenThread-Instanz.
[in] aRloc16
Der RLOC16 des abzufragenden Routers.
[in] aCallback
Der Callback zum Melden der abgefragten untergeordneten Tabelle.
[in] aContext
Ein Kontext, der in aCallback übergeben werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Abfrage wurde gestartet.
OT_ERROR_BUSY
Eine vorherige Erkennungs- oder Abfrageanfrage läuft noch.
OT_ERROR_INVALID_ARGS
aRloc16 ist kein gültiger RLOC16-Router.
OT_ERROR_INVALID_STATE
Gerät ist nicht verbunden.
OT_ERROR_NO_BUFS
Puffer zum Senden von Anfragenachrichten konnte nicht zugeordnet werden.

otMeshDiagQueryChildrenIp6Addrs

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

Sendet eine Abfrage an ein übergeordnetes Element, um die IPv6-Adressen aller untergeordneten MTD-Objekte abzurufen.

Details
Parameter
[in] aInstance
Die OpenThread-Instanz.
[in] aRloc16
Die RLOC16 des abzufragenden übergeordneten Elements.
[in] aCallback
Der Callback zum Melden der abgefragten untergeordneten IPv6-Adressenliste.
[in] aContext
Ein Kontext, der in aCallback übergeben werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Abfrage wurde gestartet.
OT_ERROR_BUSY
Eine vorherige Erkennungs- oder Abfrageanfrage läuft noch.
OT_ERROR_INVALID_ARGS
aRloc16 ist kein gültiger RLOC16-Wert.
OT_ERROR_INVALID_STATE
Gerät ist nicht verbunden.
OT_ERROR_NO_BUFS
Puffer zum Senden von Anfragenachrichten konnte nicht zugeordnet werden.

otMeshDiagQueryRouterNeighborTable

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

Startet die Abfrage der Router-Nachbartabelle für einen bestimmten Router.

Details
Parameter
[in] aInstance
Die OpenThread-Instanz.
[in] aRloc16
Der RLOC16 des abzufragenden Routers.
[in] aCallback
Der Callback zum Melden der abgefragten Tabelle.
[in] aContext
Ein Kontext, der in aCallback übergeben werden soll.
Rückgabewerte
OT_ERROR_NONE
Die Abfrage wurde gestartet.
OT_ERROR_BUSY
Eine vorherige Erkennungs- oder Abfrageanfrage läuft noch.
OT_ERROR_INVALID_ARGS
aRloc16 ist kein gültiger RLOC16-Router.
OT_ERROR_INVALID_STATE
Gerät ist nicht verbunden.
OT_ERROR_NO_BUFS
Puffer zum Senden von Anfragenachrichten konnte nicht zugeordnet werden.

Makros

OT_MESH_DIAG_VERSION_UNKNOWN

 OT_MESH_DIAG_VERSION_UNKNOWN 0xffff

Gibt an, dass die Thread-Version unbekannt ist.

Wird in otMeshDiagRouterInfo für die mVersion-Eigenschaft verwendet, wenn das Gerät keine eigene Version bereitstellt. Das bedeutet, dass auf dem Gerät wahrscheinlich 1.3.0 (Version 4) oder eine frühere Version ausgeführt wird.

Ressourcen

OpenThread API-Referenzthemen stammen aus dem Quellcode, der auf GitHub verfügbar ist. Weitere Informationen finden Sie unter Ressourcen. Dort können Sie auch einen Beitrag zu unserer Dokumentation leisten.