Supervisione bambini

Visualizza l'origine su GitHub

Per fornire un meccanismo ad alta efficienza energetica per un dispositivo di sospensione (SED) addormentato per verificare che il dispositivo sia ancora connesso al suo router principale (elencato nella tabella secondaria del router principale), abilita la funzionalità Supervisione dei minori.

La specifica Thread richiede un SED per l'esecuzione periodica di uno scambio di richieste e aggiornamenti di MLE con il suo router padre al fine di verificare la connettività. Child Supervision è una soluzione alternativa per la verifica della connettività del router SED che sovraccarica il carico della trasmissione dei messaggi sul router principale anziché sul SED con limiti di energia.

Come funziona

Questa funzionalità ha due modalità, a seconda del tipo di nodo e dei parametri configurati:

Sul publisher principale

Se un router principale non trasmette al SED secondario all'interno di OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL, il router principale accoda e invia un messaggio relativo alla supervisione secondaria al SED secondario. Il messaggio di supervisione dei minori è un frame MAC contenente le seguenti informazioni:

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

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

Per il publisher secondario

Se un dispositivo SED non rileva la presenza di contenuti del router principale all'interno di OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT, presume che abbia perso la connessione con il router principale e avvia il processo MLEAttach per ricollegarlo al router principale.

Come attivare la funzionalità

Questa funzionalità è disattivata per impostazione predefinita.

Per definizione

Per attivare la supervisione dei bambini, 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 quando crei OpenThread:

./script/build -DOT_CHILD_SUPERVISION=ON

Parametri

Utilizza i seguenti parametri in openthread/src/core/config/child_supervision.h per personalizzare questa funzionalità:

Parametri
OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
Valore predefinito
129 secondi
Description (Descrizione)
Specifica l'intervallo di supervisione in secondi utilizzato dal genitore. Impostalo su 0 per disattivare la procedura di supervisione del publisher principale.
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT
Valore predefinito
190 secondi
Description (Descrizione)
Specifica l'intervallo di timeout del controllo di supervisione in secondi utilizzato da un dispositivo in stato secondario. Impostalo su 0 per disattivare il processo di controllo della supervisione sul dispositivo secondario.
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST
Valore predefinito
0 (richiesta ACK attivata)
Description (Descrizione)
Imposta su 1 per cancellare/disattivare la richiesta ACK 802.15.4 nell'intestazione MAC di un messaggio di supervisione.

API

Usa l'API Child Supervision per gestire la supervisione e controllare gli intervalli di timeout direttamente nella tua applicazione OpenThread.

interfaccia a riga di comando

Non esistono comandi dell'interfaccia a riga di comando relativi a questa funzionalità.