A fin de proporcionar un mecanismo configurable de detección de la interferencia de señal en cualquier nodo de OpenThread, habilita la función de detección de Jam.
Esta función es útil para las certificaciones de dispositivo que requieren la capacidad de detectar la interrupción de la señal en un canal específico. Se puede configurar para que cumpla con los requisitos de cada tipo de certificación.
Cómo funciona
La detección de jam supervisa el RSSI (indicador de intensidad de señal recibida) de un nodo durante períodos específicos para determinar si el canal se atascó.
Cuando la detección de Jams está habilitada:
- El estado de detección de Jam se establece en
false
. - El nodo muestrea el RSSI varias veces en cada intervalo de un segundo.
- Si el RSSI sobre ese intervalo completo de un segundo permanece por encima del umbral RSSI configurado para cada muestra, ese intervalo de un segundo se considera atascado.
- Si una cantidad agregada de intervalos atascados de un segundo es mayor o igual que la cantidad total de segundos de período de actividad configurados en la ventana de detección configurada antes en cualquier momento, el estado de detección de Jam en ese momento se establece en
true
. - Si una cantidad agregada de intervalos atascados de un segundo es inferior a la cantidad agregada de segundos de período de actividad configurados en la ventana de detección configurada antes en cualquier momento, el estado de detección de Jam en ese momento se establece en
false
.
Mapa de bits del historial
En la API de OpenThread y las propiedades wpantund
, hay un mapa de bits de los 63 segundos anteriores disponible para recuperación. Este mapa de bits indica si el RSSI superó el umbral de RSSI configurado en cada uno de los 63 segundos anteriores.
Por ejemplo, puedes recuperar el siguiente mapa de bits:
0xC248068C416E7FF0
La conversión a objetos binarios produce cada instancia del RSSI que se superó por encima del umbral de RSSI configurado durante los 63 segundos anteriores:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
Si la ventana de detección se establece en 16 segundos y el período ocupado se establece en 8 segundos, el estado de detección de Jam se vuelve true
en 51 segundos, ya que esa es la primera instancia en la que se superó el umbral de RSSI al menos 8 segundos completos en los 16 segundos anteriores. En este ejemplo, el estado de detección de Jam permanece true
durante los próximos 13 segundos.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
Este mapa de bits podría estar representado por el siguiente gráfico, si -45 dBm era el umbral de RSSI configurado:
Cómo habilitar
Esta función está inhabilitada de forma predeterminada.
Por definición
Para habilitar la detección de Jam, define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
como 1
en el archivo openthread/src/core/config/openthread-core-default-config.h
antes de compilar OpenThread:
#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif
Por opción
Como alternativa, usa la opción de compilación -DOT_JAM_DETECTION=ON
cuando compiles OpenThread:
./script/build -DOT_JAM_DETECTION=ON
Parámetros
Los parámetros de detección de Jam solo se pueden configurar a través de la API de OpenThread, el protocolo de Spinnaker o wpanctl
, la herramienta de línea de comandos de wpantund
para la administración del coprocesador de red (NCP). Los valores predeterminados se aplican si la función está habilitada sin configuración posterior.
Personaliza esta función con los siguientes parámetros:
Parámetros | |||||
---|---|---|---|---|---|
Umbral RSSI |
|
||||
Ventana de detección |
|
||||
Período ocupado |
|
API
OpenThread
Usa la API de detección de Jam para administrar la función de detección de Jam directamente en tu aplicación de OpenThread. La API de OpenThread proporciona las siguientes funciones:
- Iniciar y detener la función
- Ver el estado de detección del Jam
- Administrar todos los parámetros
- Recuperar el mapa de bits actual del historial de detección de Jam
- Registre una función de devolución de llamada para cuando se detecte un jam
Giro
El protocolo Spinel permite que un dispositivo host se comunique directamente con un NCP.
Este protocolo expone las propiedades de detección de Jam en openthread/src/lib/spinel/spinel.h
que proporcionan la siguiente funcionalidad:
- Iniciar y detener la función
- Ver el estado de detección del Jam
- Administrar todos los parámetros
- Recuperar el mapa de bits actual del historial de detección de Jam
CLI
OpenThread
No hay comandos de la CLI de OpenThread relacionados con esta función.
wpantund
Usa la CLI de wpanctl
a fin de administrar la función de detección de Jam para una configuración de NCP de OpenThread. wpantund
conserva toda la configuración de detección de jam durante el restablecimiento de NCP.
wpanctl
proporciona acceso a las siguientes propiedades de wpantund
:
Propiedades | |||||
---|---|---|---|---|---|
JamDetection:Status |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
Por ejemplo, para obtener el estado de detección del jam para un NCP:
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
Para establecer el umbral de RSSI de detección de Jam en -45 dBm en un NCP, haz lo siguiente:
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
Para obtener más información sobre las propiedades de wpantund
, consulta el wpantund
repositorio de GitHub.