Посмотреть исходный код на 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 |
| ||||
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT |
| ||||
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST |
|
API
Используйте API контроля над детьми для управления интервалами контроля и проверки непосредственно в приложении OpenThread.
CLI
Нет команд CLI, связанных с этой функцией.