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 |
|
||||
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT |
|
||||
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST |
|
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à.