Присмотр за детьми

Посмотреть исходный код на GitHub

Чтобы предоставить спящему конечному устройству (SED) энергоэффективный механизм проверки того, что оно все еще подключено к своему родительскому маршрутизатору (перечисленному в дочерней таблице родительского маршрутизатора), включите функцию контроля за дочерними элементами.

Спецификация потока требует, чтобы SED периодически выполнял обмен запросом на обновление MLE и ответом на него со своим родительским маршрутизатором для проверки подключения. Детский контроль — это альтернативное решение для проверки соединения SED-маршрутизатор, которое возлагает бремя передачи сообщений на родительский маршрутизатор, а не на SED с ограниченным энергопотреблением.

Как это работает

Эта функция работает двумя способами, в зависимости от типа узла и настроенных параметров :

На родителя

Если родительский маршрутизатор не передает данные своему дочернему SED в течение OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL , родительский маршрутизатор ставится в очередь и отправляет сообщение Child Supervision дочернему SED. Сообщение Child Supervision представляет собой кадр MAC, содержащий следующую информацию:

  • RLOC16 SED в качестве пункта назначения в заголовке MAC.
  • Пустая полезная нагрузка.

По умолчанию заголовок MAC содержит запрос ACK 802.15.4. Чтобы отключить этот запрос в сообщении «Наблюдение за детьми», установите для параметра OPENTHREAD_CONFIG_CHILD_SUPERVISION_MSG_NO_ACK_REQUEST значение 1.

На ребенка

Если SED не получает известий от своего родительского маршрутизатора в течение OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT , он предполагает, что он потерял соединение с родительским маршрутизатором, и инициирует процесс MLE Attach для повторного подключения к родительскому маршрутизатору.

Как включить

Эта функция отключена по умолчанию.

По определению

Чтобы включить надзор за детьми, определите OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE как 1 в openthread/src/core/config/child_supervision.h перед сборкой OpenThread :

#ifndef OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 1
#endif

По выбору

В качестве альтернативы используйте параметр -DOT_CHILD_SUPERVISION=ON при сборке OpenThread :

./script/build -DOT_CHILD_SUPERVISION=ON

Параметры

Используйте следующие параметры в openthread/src/core/config/child_supervision.h , чтобы настроить эту функцию:

Параметры
OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
Значение по умолчанию
129 секунд
Описание
Указывает интервал контроля в секундах, используемый родительским элементом. Установите значение 0, чтобы отключить процесс наблюдения на родительском объекте.
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT
Значение по умолчанию
190 секунд
Описание
Указывает интервал времени ожидания проверки контроля в секундах, используемый устройством в дочернем состоянии. Установите значение 0, чтобы отключить процесс проверки контроля над дочерним элементом.
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST
Значение по умолчанию
0 (запрос ACK включен)
Описание
Установите значение 1, чтобы сбросить/отключить запрос ACK 802.15.4 в заголовке MAC контрольного сообщения.

API

Используйте API контроля над детьми для управления интервалами контроля и проверки непосредственно в приложении OpenThread.

CLI

Нет команд CLI, связанных с этой функцией.