Para proporcionar un mecanismo eficiente en términos de energía para que un dispositivo final en modo de suspensión (SED) verifique que aún está conectado a su router principal (que aparece en la tabla secundaria del router principal), habilita la función de supervisión secundaria.
La especificación de Thread requiere que un SED realice periódicamente un intercambio de solicitud y respuesta de actualización de MLE secundario con su router principal para verificar la conectividad. La supervisión secundaria es una solución alternativa para la verificación de la conectividad del router-SED que coloca la carga de la transmisión de mensajes en el router principal en lugar de en la SED con limitaciones de energía.
Cómo funciona
Esta función funciona de dos maneras, según el tipo de nodo y los parámetros que se configuren:
En el elemento superior
Si un router principal no transmite a su SED secundario dentro de OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
, el router principal pone en cola y envía un mensaje de supervisión infantil al SED secundario. El mensaje de supervisión infantil es una trama MAC que contiene la siguiente información:
- El RLOC16 del SED como destino en el encabezado de MAC
- Una carga útil vacía.
De forma predeterminada, un encabezado MAC contiene una solicitud de ACK 802.15.4. Para inhabilitar esta solicitud en el mensaje de supervisión infantil, establece el parámetro OPENTHREAD_CONFIG_CHILD_SUPERVISION_MSG_NO_ACK_REQUEST
en 1.
En el hijo o la hija
Si un SED no recibe información de su router superior dentro del OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT
, supone que perdió la conexión con el router superior y, luego, inicia el proceso de vinculación de MLE para volver a conectarse.
Cómo habilitar
Esta función está inhabilitada de forma predeterminada.
Por definición
Para habilitar la supervisión infantil, define
OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
como 1
en el
archivo openthread/src/core/config/child_supervision.h
, antes de compilar OpenThread:
#ifndef OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 1
#endif
Por opción
Como alternativa, usa la opción de compilación -DOT_CHILD_SUPERVISION=ON
cuando compiles OpenThread:
./script/build -DOT_CHILD_SUPERVISION=ON
Parámetros
Usa los siguientes parámetros en openthread/src/core/config/child_supervision.h
para personalizar esta función:
Parámetros | |||||
---|---|---|---|---|---|
OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL |
|
||||
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT |
|
||||
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST |
|
API
Usa la API de supervisión infantil para administrar la supervisión y verificar los intervalos de tiempo de espera directamente en tu aplicación de OpenThread.
CLI
No hay comandos de CLI relacionados con esta función.