Para fornecer um mecanismo configurável de detecção de interferência de sinal em qualquer nó do OpenThread, ative o recurso Jam Detection.
Esse recurso é útil para certificações de dispositivos que exigem a capacidade de detectar interferências em um canal específico. Ele pode ser configurado para atender aos requisitos de cada tipo de certificação.
Como funciona
A detecção de Jam monitora o RSSI (indicador de intensidade do sinal recebido) de um nó durante janelas de tempo especificadas para determinar se o canal foi bloqueado.
Quando a detecção de congestionamento estiver ativada:
- O estado de detecção de interferência está definido como
false
. - O nó faz amostras do RSSI várias vezes em cada intervalo de um segundo.
- Se o RSSI nesse intervalo inteiro de um segundo permanecer acima do limite de RSSI configurado para cada amostra, esse intervalo de um segundo será considerado bloqueado.
- Se um número agregado de intervalos de um segundo congestionados for maior ou
igual a o número agregado de segundos de período ocupado
configurados dentro dos segundos de janela de detecção configurados
anteriormente em qualquer momento, o estado de detecção de congestionamento naquele momento será definido
como
true
. - Se um número agregado de intervalos de um segundo travados for menor que
o número agregado de segundos do Período ocupado
configurados em segundos da janela de detecção
anterior a qualquer momento, o estado de detecção de Jams nesse momento será definido como
false
.
Bitmap de histórico
Na API OpenThread e nas propriedades wpantund
, um
bitmap dos 63 segundos anteriores está disponível para recuperação. Esse bitmap
indica se o RSSI ultrapassou o limite de RSSI configurado em cada um dos
63 segundos anteriores.
Por exemplo, você pode recuperar o seguinte bitmap:
0xC248068C416E7FF0
A conversão para binário produz todas as instâncias em que o RSSI ultrapassou o limite configurado durante os 63 segundos anteriores:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
Se a janela de detecção estiver definida como 16 segundos e o período de ocupação estiver definido como 8
segundos, o estado de detecção de congestionamento será true
em 51 segundos, porque essa é a
primeira instância em que o limite de RSSI foi excedido por pelo menos 8 segundos
nos 16 segundos anteriores. Neste exemplo, o estado de detecção de Jam permanece
true
pelos próximos 13 segundos.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
Esse bitmap pode ser representado pelo gráfico a seguir, se o limite de RSSI configurado for -45 dBm:

Como ativar
Esse recurso fica desativado por padrão.
Por definição
Para ativar a detecção de congestionamento, defina
OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
como 1
no
arquivo
openthread/src/core/config/openthread-core-default-config.h
,
antes de criar o OpenThread:
#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif
Por opção
Como alternativa, use a opção de build -DOT_JAM_DETECTION=ON
ao criar
OpenThread:
./script/build -DOT_JAM_DETECTION=ON
Parâmetros
Os parâmetros de detecção de congestionamento só podem ser configurados pela API OpenThread, pelo
protocolo Spinel ou pelo wpanctl
, a ferramenta de linha de comando wpantund
para gerenciamento de
coprocessador de rede (NCP, na sigla em inglês). Os valores padrão são aplicados se o recurso for
ativado sem uma configuração posterior.
Personalize esse recurso usando os seguintes parâmetros:
Parâmetros | |||||
---|---|---|---|---|---|
Limite de RSSI |
|
||||
Janela de detecção |
|
||||
Período ocupado |
|
API
OpenThread
Use a API Jam Detection para gerenciar o recurso Jam Detection diretamente no seu aplicativo OpenThread. A API OpenThread oferece as seguintes funcionalidades:
- Iniciar e interromper o recurso
- Conferir o estado da detecção de Jam
- Gerenciar todos os parâmetros
- Extrair o bitmap atual do histórico da detecção de Jam
- Registrar uma função de callback para quando um congestionamento for detectado
Espinélio
O protocolo Spinel permite que um dispositivo host se comunique diretamente com um NCP.
Esse protocolo expõe propriedades de detecção de congestionamento em
openthread/src/lib/spinel/spinel.h
que oferecem a seguinte funcionalidade:
- Iniciar e interromper o recurso
- Conferir o estado da detecção de Jam
- Gerenciar todos os parâmetros
- Recuperar o bitmap do histórico atual da Detecção de congestionamento
CLI
OpenThread
Não há comandos da CLI do OpenThread relacionados a esse recurso.
wpantund
Use a CLI wpanctl
para gerenciar o recurso de detecção de congestionamento para uma configuração de NCP do OpenThread. O wpantund
mantém toda a configuração da detecção de interferência após a redefinição
do NCP.
O wpanctl
oferece acesso às seguintes propriedades wpantund
:
Propriedades | |||||
---|---|---|---|---|---|
JamDetection:Status |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
Por exemplo, para receber o estado de detecção de interferência de um NCP:
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
Para definir o limite RSSI de detecção de Jam como -45 dBm em um NCP:
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
Para mais informações sobre as propriedades wpantund
, consulte o repositório
wpantund
do GitHub.