Para fornecer um mecanismo configurável para detecção de interferência de sinal em qualquer nó OpenThread, ative o recurso Detecção de obstrução.
Esse recurso é útil para certificações de dispositivos que exigem a capacidade de detectar interferência de sinal em um canal específico. Pode ser configurado para atender aos requisitos de cada tipo de certificação.
Como funciona
A detecção de congestionamento monitora o RSSI (indicador de intensidade do sinal recebido) de um nó durante janelas de tempo especificadas para determinar se o canal foi congestionado.
Quando a detecção de atolamento está habilitada:
- O Estado de detecção de atolamento é definido como
false
. - O nó amostra o RSSI várias vezes em cada intervalo de um segundo.
- Se o RSSI durante todo esse intervalo de um segundo permanecer acima do RSSI Threshold 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 ao número agregado de segundos do Período Ocupado configurados dentro dos segundos da Janela de Detecção configurados anteriormente em qualquer momento, o Estado de Detecção de Atolamento naquele momento será definido como
true
. - Se um número agregado de intervalos de um segundo congestionados for menor que o número agregado de segundos do Período Ocupado configurados nos segundos da Janela de Detecção configurados anteriormente em qualquer momento, o Estado de Detecção de Atolamento naquele momento será definido como
false
.
Bitmap do histórico
Na API OpenThread e nas propriedades wpantund
, um bitmap dos 63 segundos anteriores está disponível para recuperação. Este bitmap indica se o RSSI cruzou o limite 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 RSSI configurado durante os 63 segundos anteriores:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
Se a janela de detecção estiver definida para 16 segundos e o período ocupado estiver definido para 8 segundos, o estado de detecção de congestionamento se tornará true
em 51 segundos, pois essa é a primeira instância em que o limite RSSI foi excedido em pelo menos 8 segundos inteiros no anterior 16 segundos. Neste exemplo, o estado de detecção de atolamento permanece true
pelos próximos 13 segundos.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
Este bitmap pode ser representado pelo gráfico a seguir, se -45 dBm for o RSSI Threshold configurado:

Como habilitar
Este recurso está desabilitado por padrão.
Por definir
Para habilitar a detecção de congestionamento, defina OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
como 1
no openthread/src/core/config/openthread-core-default-config.h
, antes de construir 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 compilação -DOT_JAM_DETECTION=ON
ao compilar OpenThread :
./script/build -DOT_JAM_DETECTION=ON
Parâmetros
Os parâmetros de detecção de congestionamento só podem ser configurados por meio da API OpenThread, do protocolo Spinel ou wpanctl
, a ferramenta de linha de comando wpantund
para gerenciamento do Network Co-Processor (NCP). Os valores padrão são aplicados se o recurso estiver ativado sem configuração subsequente.
Personalize esse recurso usando os seguintes parâmetros:
Parâmetros | |||||
---|---|---|---|---|---|
Limite RSSI |
| ||||
Janela de detecção |
| ||||
Período ocupado |
|
API
OpenThread
Use a API Jam Detection para gerenciar o recurso Jam Detection diretamente em seu aplicativo OpenThread. A API OpenThread fornece a seguinte funcionalidade:
- Iniciar e parar o recurso
- Ver o estado de detecção de atolamento
- Gerencie todos os parâmetros
- Recuperar o bitmap atual do histórico de detecção de atolamento
- Registre uma função de retorno de chamada para quando um atolamento for detectado
Espinélio
O protocolo Spinel permite que um dispositivo host se comunique diretamente com um NCP. Este protocolo expõe as propriedades de detecção de congestionamento em openthread/src/lib/spinel/spinel.h
que fornecem a seguinte funcionalidade:
- Iniciar e parar o recurso
- Ver o estado de detecção de atolamento
- Gerencie todos os parâmetros
- Recuperar o bitmap atual do histórico de detecção de atolamento
CLI
OpenThread
Não há comandos OpenThread CLI relacionados a esse recurso.
wpantund
Use a CLI wpanctl
para gerenciar o recurso Jam Detection para uma configuração OpenThread NCP. wpantund
retém toda a configuração de detecção de atolamento após a reinicialização do NCP.
wpanctl
fornece acesso às seguintes propriedades wpantund
:
Propriedades | |||||
---|---|---|---|---|---|
JamDetection:Status |
| ||||
JamDetection:Enable |
| ||||
JamDetection:RssiThreshold |
| ||||
JamDetection:Window |
| ||||
JamDetection:BusyPeriod |
| ||||
JamDetection:Debug:HistoryBitmap |
|
Por exemplo, para obter o estado de detecção de congestionamento para um NCP:
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
Para definir o limite RSSI de detecção de congestionamento para -45 dBm em um NCP:
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
Para obter mais informações sobre as propriedades do wpantund
, consulte o repositório wpantund
do GitHub .