Para proporcionar un mecanismo configurable para la detección de interferencia de señal en cualquier nodo de OpenThread, habilita la función de detección de interferencia.
Esta función es útil para las certificaciones de dispositivos que requieren la capacidad de detectar interferencias de señal en un canal específico. Se puede configurar para cumplir con los requisitos de cada tipo de certificación.
Cómo funciona
La detección de interferencias supervisa el RSSI (indicador de intensidad de la señal recibida) de un nodo durante períodos específicos para determinar si se produjo una interferencia en el canal.
Cuando la detección de bloqueo está habilitada, sucede lo siguiente:
- El estado de detección de bloqueo se establece en
false
. - El nodo muestrea el RSSI varias veces durante cada intervalo de un segundo.
- Si el RSSI durante todo ese intervalo de un segundo permanece por encima del umbral de RSSI configurado para cada muestra, se considera que ese intervalo de un segundo está bloqueado.
- Si la cantidad agregada de intervalos de un segundo atascados es mayor o
igual a la cantidad agregada de segundos del Período de congestión configurado dentro de los segundos del Período de detección configurado precedentes en cualquier momento, el estado de detección de atascos en ese momento se establece en
true
. - Si la cantidad agregada de intervalos de un segundo con atascos es menor que la cantidad agregada de segundos del Período de congestión configurado dentro de los segundos de la Ventana de detección configurada precedentes en cualquier momento, el Estado de detección de atascos en ese momento se establece en
false
.
Mapa de bits del historial
En la API de OpenThread, se puede recuperar un mapa de bits de los 63 segundos anteriores. Este mapa de bits indica si el RSSI cruzó 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 binario produce cada instancia en la que el RSSI superó el umbral de RSSI configurado durante los 63 segundos anteriores:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
Si el período de detección se establece en 16 segundos y el período de ocupado se establece en 8 segundos, el estado de detección de embotellamiento se convierte en true
a los 51 segundos, ya que esa es la primera instancia en la que se superó el umbral de RSSI durante al menos 8 segundos completos en los 16 segundos anteriores. En este ejemplo, el estado de detección de atascos permanece en 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 se podría representar con el siguiente gráfico si se configuró un umbral de RSSI de -45 dBm:

Cómo habilitar
Esta función está inhabilitada de forma predeterminada.
Por definición
Para habilitar la detección de interferencias, 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 interferencias solo se pueden configurar a través de la API de OpenThread o el protocolo Spinel. Se aplican valores predeterminados si la función se habilita sin configuración posterior.
Personaliza esta función con los siguientes parámetros:
Parámetros | |||||
---|---|---|---|---|---|
Umbral de RSSI |
|
||||
Ventana de detección |
|
||||
Período de mayor actividad |
|
API
OpenThread
Usa la API de Jam Detection para administrar la función de detección de interferencias directamente en tu aplicación de OpenThread. La API de OpenThread proporciona la siguiente funcionalidad:
- Cómo iniciar y detener la función
- Cómo ver el estado de detección de embotellamientos
- Administrar todos los parámetros
- Recupera el mapa de bits del historial de detección de Jam actual
- Registra una función de devolución de llamada para cuando se detecte un embotellamiento
Espinela
El protocolo Spinel permite que un dispositivo host se comunique directamente con un NCP.
Este protocolo expone propiedades de detección de atascos en openthread/src/lib/spinel/spinel.h
que proporcionan la siguiente funcionalidad:
- Cómo iniciar y detener la función
- Cómo ver el estado de detección de embotellamientos
- Administrar todos los parámetros
- Recupera el mapa de bits del historial de detección de Jam actual
CLI
OpenThread
No hay comandos de la CLI de OpenThread relacionados con esta función.