Диагностика сетки

Этот модуль включает определения и функции для диагностики Mesh.

Краткое содержание

Для API диагностики сетки требуются OPENTHREAD_CONFIG_MESH_DIAG_ENABLE и OPENTHREAD_FTD .

Определения типов

otMeshDiagChildEntry определение типа
Представляет информацию о дочерней записи из otMeshDiagQueryChildTable() .
otMeshDiagChildInfo определение типа
Представляет информацию об обнаруженном дочернем элементе в сетке потоков с помощью otMeshDiagDiscoverTopology() .
otMeshDiagChildIp6AddrsCallback )(otError aError, uint16_t aChildRloc16, otMeshDiagIp6AddrIterator *aIp6AddrIterator, void *aContext) определение типа
void(*
Представляет обратный вызов, используемый otMeshDiagQueryChildrenIp6Addrs() для предоставления информации о дочернем элементе MTD и его списке адресов IPv6.
otMeshDiagChildIterator определение типа
Непрозрачный итератор для перебора списка дочерних элементов маршрутизатора.
otMeshDiagDiscoverCallback )(otError aError, otMeshDiagRouterInfo *aRouterInfo, void *aContext) определение типа
void(*
Тип указателя представляет собой обратный вызов, используемый otMeshDiagDiscoverTopology() для предоставления информации об обнаруженном маршрутизаторе.
otMeshDiagDiscoverConfig определение типа
Представляет набор конфигураций, используемых при обнаружении топологии сетки, указывающий, какие элементы необходимо обнаружить.
otMeshDiagIp6AddrIterator определение типа
Непрозрачный итератор для перебора списка IPv6-адресов маршрутизатора.
otMeshDiagQueryChildTableCallback )(otError aError, const otMeshDiagChildEntry *aChildEntry, void *aContext) определение типа
void(*
Представляет обратный вызов, используемый otMeshDiagQueryChildTable() для предоставления информации о записях дочерней таблицы.
otMeshDiagQueryRouterNeighborTableCallback )(otError aError, const otMeshDiagRouterNeighborEntry *aNeighborEntry, void *aContext) определение типа
void(*
Представляет обратный вызов, используемый otMeshDiagQueryRouterNeighborTable() для предоставления информации о записях таблицы соседних маршрутизаторов.
otMeshDiagRouterInfo определение типа
Представляет информацию о маршрутизаторе в сетке потоков, обнаруженную с помощью otMeshDiagDiscoverTopology() .
otMeshDiagRouterNeighborEntry определение типа
Представляет информацию о записи соседа маршрутизатора из 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)
Перебирает обнаруженные IPv6-адреса маршрутизатора или дочернего элемента MTD.
otMeshDiagQueryChildTable ( otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryChildTableCallback aCallback, void *aContext)
Запускает запрос дочерней таблицы для данного маршрутизатора.
otMeshDiagQueryChildrenIp6Addrs ( otInstance *aInstance, uint16_t aRloc16, otMeshDiagChildIp6AddrsCallback aCallback, void *aContext)
Отправляет запрос родительскому элементу для получения адресов IPv6 всех его дочерних элементов MTD.
otMeshDiagQueryRouterNeighborTable ( otInstance *aInstance, uint16_t aRloc16, otMeshDiagQueryRouterNeighborTableCallback aCallback, void *aContext)
Запускает запрос таблицы соседей маршрутизатора для данного маршрутизатора.

Структуры

otMeshDiagChildEntry

Представляет информацию о дочерней записи из otMeshDiagQueryChildTable() .

otMeshDiagChildInfo

Представляет информацию об обнаруженном дочернем элементе в сетке потоков с помощью otMeshDiagDiscoverTopology() .

отмешдиагдисковерконфиг

Представляет набор конфигураций, используемых при обнаружении топологии сетки, указывающий, какие элементы необходимо обнаружить.

отмешдиагроутеринфо

Представляет информацию о маршрутизаторе в сетке потоков, обнаруженную с помощью otMeshDiagDiscoverTopology() .

otMeshDiagRouterNeighborEntry

Представляет информацию о записи соседа маршрутизатора из otMeshDiagQueryRouterNeighborTable() .

Определения типов

otMeshDiagChildEntry

struct otMeshDiagChildEntry otMeshDiagChildEntry

Представляет информацию о дочерней записи из otMeshDiagQueryChildTable() .

mSupportsErrRate указывает, поддерживается ли функция отслеживания ошибок и допустимы ли значения mFrameErrorRate и mMessageErrorRate . Частота ошибок кадров отслеживает ошибки передачи кадров (в направлении дочернего элемента) на уровне MAC, а mMessageErrorRate отслеживает частоту ошибок сообщений IPv6 (выше уровня MAC и после повторных попыток MAC), когда сообщение IPv6 отбрасывается. Например, если сообщение большое и требует фрагментации 6LoWPAN, передача сообщения считается неудачной, если передача одного из его фрагментных кадров не удалась (например, никогда не подтверждалась).

otMeshDiagChildInfo

struct otMeshDiagChildInfo otMeshDiagChildInfo

Представляет информацию об обнаруженном дочернем элементе в сетке потоков с помощью otMeshDiagDiscoverTopology() .

otMeshDiagChildIp6AddrsCallback

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

Представляет обратный вызов, используемый otMeshDiagQueryChildrenIp6Addrs() для предоставления информации о дочернем элементе MTD и его списке адресов IPv6.

Когда aError имеет OT_ERROR_PENDING , это указывает на то, что есть еще дочерние элементы и обратный вызов будет вызван снова.

Подробности
Параметры
[in] aError
OT_ERROR_PENDING Указывает, что в таблице есть еще дочерние элементы. OT_ERROR_NONE Указывает, что таблица завершена. OT_ERROR_RESPONSE_TIMEOUT Время ожидания ответа истекло.
[in] aChildRloc16
RLOC16 ребенка. 0xfffe используется в OT_ERROR_RESPONSE_TIMEOUT .
[in] aIp6AddrIterator
Итератор для просмотра IPv6-адресов дочернего элемента с помощью aRloc с помощью otMeshDiagGetNextIp6Address() . Установите значение NULL в OT_ERROR_RESPONSE_TIMEOUT .
[in] aContext
Контекст, специфичный для приложения.

otMeshDiagChildIterator

struct otMeshDiagChildIterator otMeshDiagChildIterator

Непрозрачный итератор для перебора списка дочерних элементов маршрутизатора.

Указатели на экземпляр этого типа предоставляются в otMeshDiagRouterInfo .

otMeshDiagDiscoverCallback

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

Тип указателя представляет собой обратный вызов, используемый otMeshDiagDiscoverTopology() для предоставления информации об обнаруженном маршрутизаторе.

Когда aError имеет OT_ERROR_PENDING , это указывает на то, что обнаружение еще не завершено и потребуется обнаружить больше маршрутизаторов, и обратный вызов будет вызван снова.

Подробности
Параметры
[in] aError
OT_ERROR_PENDING Указывает, что необходимо обнаружить еще несколько маршрутизаторов. OT_ERROR_NONE Указывает, что это последний маршрутизатор и обнаружение сети завершено. OT_ERROR_RESPONSE_TIMEOUT Превышено время ожидания ответа от одного или нескольких маршрутизаторов.
[in] aRouterInfo
Информация об обнаруженном маршрутизаторе (может быть нулевой, если aError равна OT_ERROR_RESPONSE_TIMEOUT).
[in] aContext
Контекст, специфичный для приложения.

отмешдиагдисковерконфиг

struct otMeshDiagDiscoverConfig otMeshDiagDiscoverConfig

Представляет набор конфигураций, используемых при обнаружении топологии сетки, указывающий, какие элементы необходимо обнаружить.

otMeshDiagIp6AddrIterator

struct otMeshDiagIp6AddrIterator otMeshDiagIp6AddrIterator

Непрозрачный итератор для перебора списка IPv6-адресов маршрутизатора.

Указатели на экземпляр этого типа предоставляются в otMeshDiagRouterInfo .

otMeshDiagQueryChildTableCallback

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

Представляет обратный вызов, используемый otMeshDiagQueryChildTable() для предоставления информации о записях дочерней таблицы.

Когда aError имеет OT_ERROR_PENDING , это означает, что в таблице все еще есть больше записей и обратный вызов будет вызван снова.

Подробности
Параметры
[in] aError
OT_ERROR_PENDING Указывает, что в таблице есть еще записи. OT_ERROR_NONE Указывает, что таблица завершена. OT_ERROR_RESPONSE_TIMEOUT Время ожидания ответа истекло.
[in] aChildEntry
Дочерняя запись (может быть нулевой, если aError равна OT_ERROR_RESPONSE_TIMEOUT или OT_ERROR_NONE).
[in] aContext
Контекст, специфичный для приложения.

otMeshDiagQueryRouterNeighborTableCallback

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

Представляет обратный вызов, используемый otMeshDiagQueryRouterNeighborTable() для предоставления информации о записях таблицы соседних маршрутизаторов.

Когда aError имеет OT_ERROR_PENDING , это означает, что в таблице все еще есть больше записей и обратный вызов будет вызван снова.

Подробности
Параметры
[in] aError
OT_ERROR_PENDING Указывает, что в таблице есть еще записи. OT_ERROR_NONE Указывает, что таблица завершена. OT_ERROR_RESPONSE_TIMEOUT Время ожидания ответа истекло.
[in] aNeighborEntry
Запись соседа (может быть нулевой, если aError имеет значение RESPONSE_TIMEOUT или NONE).
[in] aContext
Контекст, специфичный для приложения.

отмешдиагроутеринфо

struct otMeshDiagRouterInfo otMeshDiagRouterInfo

Представляет информацию о маршрутизаторе в сетке потоков, обнаруженную с помощью otMeshDiagDiscoverTopology() .

otMeshDiagRouterNeighborEntry

struct otMeshDiagRouterNeighborEntry otMeshDiagRouterNeighborEntry

Представляет информацию о записи соседа маршрутизатора из otMeshDiagQueryRouterNeighborTable() .

mSupportsErrRate указывает, поддерживается ли функция отслеживания ошибок и допустимы ли значения mFrameErrorRate и mMessageErrorRate . Частота ошибок кадров отслеживает ошибки передачи кадров (в направлении дочернего элемента) на уровне MAC, а mMessageErrorRate отслеживает частоту ошибок сообщений IPv6 (выше уровня MAC и после повторных попыток MAC), когда сообщение IPv6 отбрасывается. Например, если сообщение большое и требует фрагментации 6LoWPAN, передача сообщения считается неудачной, если передача одного из его фрагментных кадров не удалась (например, никогда не подтверждалась).

Функции

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() и использовать mChildIterator из структуры aRouterInfo , которая предоставляется в качестве входных данных для обратного вызова.

Подробности
Параметры
[in,out] aIterator
Используемый итератор адреса.
[out] aChildInfo
Указатель для возврата информации о дочернем элементе (если таковой имеется).
Возвращаемые значения
OT_ERROR_NONE
Успешно получен следующий ребенок. aChildInfo и aIterator обновлены.
OT_ERROR_NOT_FOUND
Нет больше ребенка. Достигнут конец списка.

otMeshDiagGetNextIp6Address

otError otMeshDiagGetNextIp6Address(
  otMeshDiagIp6AddrIterator *aIterator,
  otIp6Address *aIp6Address
)

Перебирает обнаруженные IPv6-адреса маршрутизатора или дочернего элемента MTD.

Должен быть использован

  • из обратного вызова otMeshDiagDiscoverCallback() и используйте mIp6AddrIterator из структуры aRouterInfo , которая предоставляется в качестве входных данных для обратного вызова, или
  • из обратного вызова otMeshDiagChildIp6AddrsCallback() вместе с предоставленным aIp6AddrIterator .

Подробности
Параметры
[in,out] aIterator
Используемый итератор адреса.
[out] aIp6Address
Указатель для возврата следующего IPv6-адреса (если есть).
Возвращаемые значения
OT_ERROR_NONE
Успешно получен следующий адрес. aIp6Address и aIterator обновлены.
OT_ERROR_NOT_FOUND
Больше нет адреса. Достигнут конец списка.

отмешдиагкуеридтабле

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
)

Отправляет запрос родительскому элементу для получения адресов IPv6 всех его дочерних элементов MTD.

Подробности
Параметры
[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

Указывает, что версия потока неизвестна.

Это используется в otMeshDiagRouterInfo для свойства mVersion , когда устройство не предоставляет свою версию. Это означает, что на устройстве, скорее всего, установлена ​​версия 1.3.0 (значение версии 4) или более ранняя версия.

Ресурсы

Справочные разделы API OpenThread взяты из исходного кода, доступного на GitHub . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .