Diagnostyka sieci typu mesh

Ten moduł zawiera definicje i funkcje diagnostyki sieci typu mesh.

Podsumowanie

Interfejsy API diagnostyki sieci typu mesh wymagają OPENTHREAD_CONFIG_MESH_DIAG_ENABLE i OPENTHREAD_FTD.

Definicje typów

otMeshDiagChildEntry typedef
Reprezentuje informacje o wpisie podrzędnym z otMeshDiagQueryChildTable().
otMeshDiagChildInfo typedef
Reprezentuje informacje o wykrytym elemencie podrzędnym w siatce wątków przy użyciu elementu otMeshDiagDiscoverTopology().
otMeshDiagChildIp6AddrsCallback)(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext) typedef
void(*
Reprezentuje wywołanie zwrotne używane przez otMeshDiagQueryChildrenIp6Addrs() do dostarczania informacji o podrzędnym MTD i jego liście adresów IPv6.
otMeshDiagChildIterator typedef
Nieprzejrzysty iterator do iteracji na liście elementów podrzędnych routera.
otMeshDiagDiscoverCallback)(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext) typedef
void(*
Typ wskaźnika reprezentuje wywołanie zwrotne używane przez otMeshDiagDiscoverTopology() do dostarczania informacji o wykrytym routerze.
otMeshDiagDiscoverConfig typedef
Reprezentuje zbiór konfiguracji używanych podczas odkrywania topologii sieci typu mesh wskazującej elementy do wykrycia.
otMeshDiagIp6AddrIterator typedef
Nieprzejrzysty iterator do iteracji na liście adresów IPv6 routera.
otMeshDiagQueryChildTableCallback)(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext) typedef
void(*
Reprezentuje wywołanie zwrotne używane przez funkcję otMeshDiagQueryChildTable() w celu dostarczenia informacji o wpisach w tabeli podrzędnej.
otMeshDiagQueryRouterNeighborTableCallback)(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext) typedef
void(*
Reprezentuje wywołanie zwrotne używane przez otMeshDiagQueryRouterNeighborTable() do dostarczania informacji o wpisach w tabeli sąsiedniego routera.
otMeshDiagRouterInfo typedef
Reprezentuje informacje o routerze w sieci typu Thread mesh wykrytego przy użyciu otMeshDiagDiscoverTopology().
otMeshDiagRouterNeighborEntry typedef
Reprezentuje informacje o wpisie sąsiada routera z otMeshDiagQueryRouterNeighborTable().

Funkcje

otMeshDiagCancel(otInstance *aInstance)
void
Anuluje trwające odkrycie topologii, jeśli trwa. W przeciwnym razie nie musisz wykonywać żadnych działań.
otMeshDiagDiscoverTopology(otInstance *aInstance, const otMeshDiagDiscoverConfig *aConfig, otMeshDiagDiscoverCallback aCallback, void *aContext)
Rozpoczyna wykrywanie topologii sieci.
otMeshDiagGetNextChildInfo(otMeshDiagChildIterator *aIterator, otMeshDiagChildInfo *aChildInfo)
Przelatuje przez wykryte elementy podrzędne routera.
otMeshDiagGetNextIp6Address(otMeshDiagIp6AddrIterator *aIterator, otIp6Address *aIp6Address)
Przeprowadza iterację przez wykryte adresy IPv6 routera lub podrzędnego MTD.
otMeshDiagQueryChildTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryChildTableCallback aCallback, void *aContext)
Rozpoczyna zapytanie o tabelę podrzędną dla danego routera.
otMeshDiagQueryChildrenIp6Addrs(otInstance *aInstance, uint16_t aRloc16, otMeshDiagChildIp6AddrsCallback aCallback, void *aContext)
Wysyła zapytanie do elementu nadrzędnego w celu pobrania adresów IPv6 wszystkich jego elementów podrzędnych MTD.
otMeshDiagQueryRouterNeighborTable(otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryRouterNeighborTableCallback aCallback, void *aContext)
Rozpoczyna zapytanie o tabelę sąsiadów routera dla danego routera.

Konstrukcja

otMeshDiagChildEntry

Reprezentuje informacje o wpisie podrzędnym z otMeshDiagQueryChildTable().

otMeshDiagChildInfo

Reprezentuje informacje o wykrytym elemencie podrzędnym w siatce wątków przy użyciu elementu otMeshDiagDiscoverTopology().

otMeshDiagDiscoverConfig

Reprezentuje zbiór konfiguracji używanych podczas odkrywania topologii sieci typu mesh wskazującej elementy do wykrycia.

otMeshDiagRouterInfo

Reprezentuje informacje o routerze w sieci typu Thread mesh wykrytego przy użyciu otMeshDiagDiscoverTopology().

otMeshDiagRouterNeighborEntry

Reprezentuje informacje o wpisie sąsiada routera z otMeshDiagQueryRouterNeighborTable().

Definicje typów

otMeshDiagChildEntry

struct otMeshDiagChildEntry otMeshDiagChildEntry

Reprezentuje informacje o wpisie podrzędnym z otMeshDiagQueryChildTable().

mSupportsErrRate wskazuje, czy funkcja śledzenia błędów jest obsługiwana, a wartości mFrameErrorRate i mMessageErrorRate są prawidłowe. Odsetek błędów klatek śledzi błędy przesyłania klatek (od strony podrzędnej) w warstwie MAC, natomiast mMessageErrorRate śledzi odsetek błędów związanych z komunikatami IPv6 (powyżej warstwy MAC i po ponownych próbach MAC), gdy komunikat IPv6 zostanie utracony. Jeśli na przykład wiadomość jest duża i wymaga fragmentacji 6LoWPAN, wiadomość tx jest uznawana za nieudaną, jeśli transakcja tx z jej fragmentem nie powiodła się (na przykład nie została potwierdzona).

otMeshDiagChildInfo

struct otMeshDiagChildInfo otMeshDiagChildInfo

Reprezentuje informacje o wykrytym elemencie podrzędnym w siatce wątków przy użyciu elementu otMeshDiagDiscoverTopology().

otMeshDiagChildIp6AddrsCallback

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

Reprezentuje wywołanie zwrotne używane przez otMeshDiagQueryChildrenIp6Addrs() do dostarczania informacji o podrzędnym MTD i jego liście adresów IPv6.

Gdy aError ma wartość OT_ERROR_PENDING, oznacza to, że jest więcej elementów podrzędnych i wywołanie zwrotne zostanie wykonane ponownie.

Szczegóły
Parametry
[in] aError
OT_ERROR_PENDING Wskazuje, że w tabeli jest więcej elementów podrzędnych. OT_ERROR_NONE oznacza, że tabela została zakończona. OT_ERROR_RESPONSE_TIMEOUT Upłynął limit czasu oczekiwania na odpowiedź.
[in] aChildRloc16
RLOC16 elementu podrzędnego. 0xfffe jest używany na urządzeniu OT_ERROR_RESPONSE_TIMEOUT.
[in] aIp6AddrIterator
Iterator wyświetlający adresy IPv6 dziecka z aRloc przy użyciu otMeshDiagGetNextIp6Address(). Ustaw wartość NULL w OT_ERROR_RESPONSE_TIMEOUT.
[in] aContext
Kontekst w odniesieniu do aplikacji.

otMeshDiagChildIterator

struct otMeshDiagChildIterator otMeshDiagChildIterator

Nieprzejrzysty iterator do iteracji na liście elementów podrzędnych routera.

Wskaźniki do instancji tego typu są podane w pliku otMeshDiagRouterInfo.

otMeshDiagDiscoverCallback

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

Typ wskaźnika reprezentuje wywołanie zwrotne używane przez otMeshDiagDiscoverTopology() do dostarczania informacji o wykrytym routerze.

Gdy aError ma wartość OT_ERROR_PENDING, oznacza to, że wykrywanie nie zostało jeszcze zakończone i będzie więcej routerów do wykrycia i wywołanie zwrotne zostanie wykonane ponownie.

Szczegóły
Parametry
[in] aError
OT_ERROR_PENDING Wskazuje, że należy wykryć więcej routerów. OT_ERROR_NONE Wskazuje, że to ostatnie wykrywanie routera i sieci typu mesh zostało zakończone. Upłynął limit czasu oczekiwania na odpowiedź z co najmniej jednego routera (OT_ERROR_RESPONSE_TIMEOUT).
[in] aRouterInfo
Wykryte informacje o routerze (mogą mieć wartość null, jeśli aError ma wartość OT_ERROR_ACTION_TIMEOUT).
[in] aContext
Kontekst w odniesieniu do aplikacji.

otMeshDiagDiscoverConfig

struct otMeshDiagDiscoverConfig otMeshDiagDiscoverConfig

Reprezentuje zbiór konfiguracji używanych podczas odkrywania topologii sieci typu mesh wskazującej elementy do wykrycia.

otMeshDiagIp6AddrIterator

struct otMeshDiagIp6AddrIterator otMeshDiagIp6AddrIterator

Nieprzejrzysty iterator do iteracji na liście adresów IPv6 routera.

Wskaźniki do instancji tego typu są podane w pliku otMeshDiagRouterInfo.

otMeshDiagQueryChildTableCallback

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

Reprezentuje wywołanie zwrotne używane przez funkcję otMeshDiagQueryChildTable() w celu dostarczenia informacji o wpisach w tabeli podrzędnej.

Jeśli aError ma wartość OT_ERROR_PENDING, oznacza to, że tabela nadal ma więcej wpisów i wywołanie zwrotne zostanie wykonane ponownie.

Szczegóły
Parametry
[in] aError
OT_ERROR_PENDING Wskazuje, że w tabeli jest więcej wpisów. OT_ERROR_NONE oznacza, że tabela została zakończona. OT_ERROR_RESPONSE_TIMEOUT Upłynął limit czasu oczekiwania na odpowiedź.
[in] aChildEntry
Wpis podrzędny (może mieć wartość null, jeśli aError ma wartość OT_ERROR_ACTION_TIMEOUT lub OT_ERROR_NONE).
[in] aContext
Kontekst w odniesieniu do aplikacji.

otMeshDiagQueryRouterNeighborTableCallback

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

Reprezentuje wywołanie zwrotne używane przez otMeshDiagQueryRouterNeighborTable() do dostarczania informacji o wpisach w tabeli sąsiedniego routera.

Jeśli aError ma wartość OT_ERROR_PENDING, oznacza to, że tabela nadal ma więcej wpisów i wywołanie zwrotne zostanie wykonane ponownie.

Szczegóły
Parametry
[in] aError
OT_ERROR_PENDING Wskazuje, że w tabeli jest więcej wpisów. OT_ERROR_NONE oznacza, że tabela została zakończona. OT_ERROR_RESPONSE_TIMEOUT Upłynął limit czasu oczekiwania na odpowiedź.
[in] aNeighborEntry
Wpis sąsiada (może mieć wartość null, jeśli aError ma wartość RESPONSE_TIMEOUT lub NONE).
[in] aContext
Kontekst w odniesieniu do aplikacji.

otMeshDiagRouterInfo

struct otMeshDiagRouterInfo otMeshDiagRouterInfo

Reprezentuje informacje o routerze w sieci typu Thread mesh wykrytego przy użyciu otMeshDiagDiscoverTopology().

otMeshDiagRouterNeighborEntry

struct otMeshDiagRouterNeighborEntry otMeshDiagRouterNeighborEntry

Reprezentuje informacje o wpisie sąsiada routera z otMeshDiagQueryRouterNeighborTable().

mSupportsErrRate wskazuje, czy funkcja śledzenia błędów jest obsługiwana, a wartości mFrameErrorRate i mMessageErrorRate są prawidłowe. Odsetek błędów klatek śledzi błędy przesyłania klatek (od strony podrzędnej) w warstwie MAC, natomiast mMessageErrorRate śledzi odsetek błędów związanych z komunikatami IPv6 (powyżej warstwy MAC i po ponownych próbach MAC), gdy komunikat IPv6 zostanie utracony. Jeśli na przykład wiadomość jest duża i wymaga fragmentacji 6LoWPAN, wiadomość tx jest uznawana za nieudaną, jeśli transakcja tx z jej fragmentem nie powiodła się (na przykład nie została potwierdzona).

Funkcje

otMeshDiagCancel

void otMeshDiagCancel(
  otInstance *aInstance
)

Anuluje trwające odkrycie topologii, jeśli trwa. W przeciwnym razie nie musisz wykonywać żadnych działań.

Po anulowaniu bieżącego wykrywania wywołanie zwrotne z otMeshDiagDiscoverTopology() nie będzie już wywoływane.

otMeshDiagDiscoverTopology

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

Rozpoczyna wykrywanie topologii sieci.

Szczegóły
Parametry
[in] aInstance
Instancja OpenThread.
[in] aConfig
Konfiguracja używana do wykrywania (np. które elementy do wykrycia).
[in] aCallback
Wywołanie zwrotne do zgłoszenia wykrytych routerów.
[in] aContext
Kontekst do przekazania w aCallback.
Zwracane wartości
OT_ERROR_NONE
Rozpoczęto wykrywanie topologii sieci.
OT_ERROR_BUSY
Poprzednie żądanie wykrywania jest nadal w toku.
OT_ERROR_INVALID_STATE
Urządzenie nie jest podłączone.
OT_ERROR_NO_BUFS
Nie udało się przydzielić bufora do wysyłania komunikatów o wykryciu.

otMeshDiagGetNextChildInfo

otError otMeshDiagGetNextChildInfo(
  otMeshDiagChildIterator *aIterator,
  otMeshDiagChildInfo *aChildInfo
)

Przelatuje przez wykryte elementy podrzędne routera.

Ta funkcja MUSI być używana z wywołania zwrotnego otMeshDiagDiscoverCallback() i używania mChildIterator z struktury aRouterInfo, która jest udostępniana jako dane wejściowe wywołania zwrotnego.

Szczegóły
Parametry
[in,out] aIterator
Iterator adresów, którego chcesz użyć.
[out] aChildInfo
Wskaźnik zwracający dane dziecka (jeśli istnieją).
Zwracane wartości
OT_ERROR_NONE
Pobrano następne element podrzędny. Zaktualizowano aChildInfo i aIterator.
OT_ERROR_NOT_FOUND
Nie ma więcej dzieci. To już koniec listy.

otMeshDiagGetNextIp6Address

otError otMeshDiagGetNextIp6Address(
  otMeshDiagIp6AddrIterator *aIterator,
  otIp6Address *aIp6Address
)

Przeprowadza iterację przez wykryte adresy IPv6 routera lub podrzędnego MTD.

MUSI być używana

Szczegóły
Parametry
[in,out] aIterator
Iterator adresów, którego chcesz użyć.
[out] aIp6Address
Wskaźnik zwracający następny adres IPv6 (jeśli istnieje).
Zwracane wartości
OT_ERROR_NONE
Pobrano następny adres. Zaktualizowano aIp6Address i aIterator.
OT_ERROR_NOT_FOUND
Brak adresu. To już koniec listy.

otMeshDiagQueryChildTable

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

Rozpoczyna zapytanie o tabelę podrzędną dla danego routera.

Szczegóły
Parametry
[in] aInstance
Instancja OpenThread.
[in] aRloc16
RLOC16 routera, do którego ma zostać wysłane zapytanie.
[in] aCallback
Wywołanie zwrotne do zgłoszenia tabeli podrzędnej, której dotyczy zapytanie.
[in] aContext
Kontekst do przekazania w aCallback.
Zwracane wartości
OT_ERROR_NONE
Zapytanie zostało uruchomione.
OT_ERROR_BUSY
Poprzednie wykrywanie lub żądanie zapytania jest nadal w toku.
OT_ERROR_INVALID_ARGS
aRloc16 nie jest prawidłowym routerem RLOC16.
OT_ERROR_INVALID_STATE
Urządzenie nie jest podłączone.
OT_ERROR_NO_BUFS
Nie udało się przydzielić bufora do wysyłania wiadomości z zapytaniami.

otMeshDiagQueryChildrenIp6Addrs

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

Wysyła zapytanie do elementu nadrzędnego w celu pobrania adresów IPv6 wszystkich jego elementów podrzędnych MTD.

Szczegóły
Parametry
[in] aInstance
Instancja OpenThread.
[in] aRloc16
RLOC16 elementu nadrzędnego, do którego ma zostać wysłane zapytanie.
[in] aCallback
Wywołanie zwrotne zgłoszone w zgłoszeniu listy podrzędnych adresów IPv6, których dotyczy zapytanie.
[in] aContext
Kontekst do przekazania w aCallback.
Zwracane wartości
OT_ERROR_NONE
Zapytanie zostało uruchomione.
OT_ERROR_BUSY
Poprzednie wykrywanie lub żądanie zapytania jest nadal w toku.
OT_ERROR_INVALID_ARGS
Element aRloc16 nie jest prawidłowym parametrem RLOC16.
OT_ERROR_INVALID_STATE
Urządzenie nie jest podłączone.
OT_ERROR_NO_BUFS
Nie udało się przydzielić bufora do wysyłania wiadomości z zapytaniami.

otMeshDiagQueryRouterNeighborTable

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

Rozpoczyna zapytanie o tabelę sąsiadów routera dla danego routera.

Szczegóły
Parametry
[in] aInstance
Instancja OpenThread.
[in] aRloc16
RLOC16 routera, do którego ma zostać wysłane zapytanie.
[in] aCallback
Wywołanie zwrotne dotyczące tabeli, której dotyczy zapytanie.
[in] aContext
Kontekst do przekazania w aCallback.
Zwracane wartości
OT_ERROR_NONE
Zapytanie zostało uruchomione.
OT_ERROR_BUSY
Poprzednie wykrywanie lub żądanie zapytania jest nadal w toku.
OT_ERROR_INVALID_ARGS
aRloc16 nie jest prawidłowym routerem RLOC16.
OT_ERROR_INVALID_STATE
Urządzenie nie jest podłączone.
OT_ERROR_NO_BUFS
Nie udało się przydzielić bufora do wysyłania wiadomości z zapytaniami.

Makra

OT_MESH_DIAG_VERSION_UNKNOWN

 OT_MESH_DIAG_VERSION_UNKNOWN 0xffff

Określa, że wersja wątku jest nieznana.

Jest ona używana w właściwości otMeshDiagRouterInfo w przypadku mVersion, gdy urządzenie nie podaje swojej wersji. Wskazuje to, że urządzenie prawdopodobnie ma wersję 1.3.0 (wartość 4) lub wcześniejszą.

Zasoby

Tematy referencyjne interfejsu OpenThread API pochodzą z kodu źródłowego dostępnego w GitHub. Aby dowiedzieć się więcej lub dołączyć do naszej dokumentacji, skorzystaj z sekcji Zasoby.