Supervisione bambini

Visualizza il codice sorgente su GitHub

Per fornire un meccanismo a basso consumo energetico per consentire a un dispositivo di destinazione in modalità sospensione (SED) di verificare che sia ancora connesso al router principale (elencato nella tabella dei dispositivi secondari del router principale), attiva la funzionalità di supervisione dei bambini.

La specifica Thread richiede che un SED esegua periodicamente uno scambio di richieste e risposte di aggiornamento MLE secondario con il router principale per verificare la connettività. La supervisione secondaria è una soluzione alternativa per la verifica della connettività del router con il SED che pone il carico della trasmissione dei messaggi sul router principale anziché sul SED con limitazioni energetiche.

Come funziona

Questa funzionalità opera in due modi, a seconda del tipo di nodo e dei parametri configurati:

Sul publisher principale

Se un router principale non trasmette al proprio SED secondario entro il OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL, il router principale mette in coda e invia un messaggio di supervisione dei bambini al SED secondario. Il messaggio di supervisione dei bambini è un frame MAC contenente le seguenti informazioni:

  • RLOC16 del SED come destinazione nell'intestazione MAC.
  • Payload vuoto.

Per impostazione predefinita, un'intestazione MAC contiene una richiesta ACK 802.15.4. Per disattivare questa richiesta nel messaggio di supervisione dei figli, imposta il parametro OPENTHREAD_CONFIG_CHILD_SUPERVISION_MSG_NO_ACK_REQUEST su 1.

Sul bambino

Se un SED non sente il router principale all'interno di OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT, presuppone di aver perso la connessione al router principale e avvia il processo di collegamento MLE per ricollegarlo al router principale.

Come attivare

Questa funzionalità è disattivata per impostazione predefinita.

Per definizione

Per abilitare la supervisione dei publisher secondari, definisci OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE come 1 nel file openthread/src/core/config/child_supervision.h, prima di creare OpenThread:

#ifndef OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 1
#endif

Per opzione

In alternativa, utilizza l'opzione di compilazione -DOT_CHILD_SUPERVISION=ON durante la compilazione di OpenThread:

./script/build -DOT_CHILD_SUPERVISION=ON

Parametri

Per personalizzare questa funzionalità, utilizza i seguenti parametri in openthread/src/core/config/child_supervision.h:

Parametri
OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
Valore predefinito
129 secondi
Descrizione
Specifica l'intervallo di supervisione in secondi utilizzato dal genitore. Impostalo su 0 per disattivare la procedura di supervisione sull'account principale.
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT
Valore predefinito
190 secondi
Descrizione
Specifica l'intervallo di timeout dei controlli della supervisione in secondi utilizzato da un dispositivo in stato bambino. Impostato su 0 per disattivare la procedura di controllo della supervisione sul secondario.
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST
Valore predefinito
0 (richiesta ACK abilitata)
Descrizione
Impostalo su 1 per cancellare/disattivare la richiesta ACK 802.15.4 nell'intestazione MAC di un messaggio di supervisione.

API

Utilizza l'API Child Supervision per gestire la supervisione e controllare gli intervalli di timeout direttamente nell'applicazione OpenThread.

Interfaccia a riga di comando

Non sono disponibili comandi della CLI relativi a questa funzionalità.