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