Para fornecer um mecanismo configurável para detecção de congestionamento de sinal em qualquer nó OpenThread, ative o recurso Detecção de congestionamento.
Esse recurso é útil para certificações de dispositivos que exigem a capacidade de detectar interferência de sinal 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 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á ativada:
- O Estado de detecção de atolamento é definido como
false
. - O nó faz a amostragem do RSSI várias vezes a cada intervalo de um segundo.
- Se o RSSI durante todo aquele intervalo de um segundo permanecer acima do Limiar RSSI configurado para cada amostra, esse intervalo de um segundo será considerado congestionado.
- Se um número agregado de intervalos de um segundo congestionados for maior ou igual ao número agregado de segundos de período ocupado configurados nos segundos da janela de detecção configurada anterior em qualquer momento, o Estado de detecção de congestionamento naquele momento é 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 dentro dos segundos da janela de detecção configurada anterior em qualquer momento, o estado de detecção de congestionamento naquele momento será definido como
false
.
Bitmap de história
Na API OpenThread e wpantund
propriedades wpantund
, um bitmap dos 63 segundos anteriores está disponível para recuperação. Este bitmap indica se o RSSI cruzou o Limiar RSSI configurado em cada um dos 63 segundos anteriores.
Por exemplo, você pode recuperar o seguinte bitmap:
0xC248068C416E7FF0
A conversão em binário produz cada instância em que o RSSI ultrapassou o limite configurado do RSSI durante os 63 segundos anteriores:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
Se a janela de detecção for definida para 16 segundos e o período ocupado for definido para 8 segundos, o estado de detecção de atolamento 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 período 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 seguinte gráfico, se -45 dBm for o limite RSSI configurado:

Como habilitar
Este recurso está desabilitado por padrão.
Por definir
Para ativar a detecção de atolamento, defina OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
como 1
no arquivo /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 interruptor
Como alternativa, use a JAM_DETECTION=1
compilação JAM_DETECTION=1
ao compilar OpenThread :
make -f examples/Makefile-<platform> JAM_DETECTION=1
Parâmetros
Os parâmetros de detecção de atolamento só podem ser configurados por meio da API OpenThread, o protocolo Spinel ou wpanctl
, a ferramenta de linha de comando wpantund
para gerenciamento de Co-Processador de Rede (NCP). Os valores padrão são aplicados se o recurso for habilitado sem configuração subsequente.
Personalize este recurso usando os seguintes parâmetros:
Parâmetros | |||||
---|---|---|---|---|---|
Limiar 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
- Gerenciar todos os parâmetros
- Recupere o bitmap de histórico de detecção de atolamento atual
- Registre uma função de retorno de chamada para quando um atolamento for detectado
Spinel
O protocolo Spinel permite que um dispositivo host se comunique diretamente com um NCP. Este protocolo expõe propriedades de detecção de Jam em /src/lib/spinel/spinel.h
que fornecem a seguinte funcionalidade:
- Iniciar e parar o recurso
- Ver o estado de detecção de atolamento
- Gerenciar todos os parâmetros
- Recupere o bitmap de histórico de detecção de atolamento atual
CLI
OpenThread
Não há comandos CLI OpenThread relacionados a este recurso.
Wpantund
Use o wpanctl
CLI para gerenciar o recurso Jam Detection para uma configuração OpenThread NCP. wpantund
retém toda a configuração de detecção de atolamento na 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 atolamento de um NCP:
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
Para definir o Limite RSSI de detecção de atolamento 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 propriedades wpantund
, consulte o repositório wpantund
GitHub .