Para fornecer um mecanismo configurável de detecção de bloqueio de sinal em qualquer nó OpenThread, ative o recurso de detecção de bloqueio.
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 interferência monitora o RSSI (indicador de intensidade do sinal recebido) de um nó durante períodos especificados para determinar se o canal foi interferido.
Quando a detecção de congestionamento está ativada:
- O estado de detecção de congestionamento está definido como
false. - O nó faz amostragem do RSSI várias vezes em cada intervalo de um segundo.
- Se o RSSI em todo esse intervalo de um segundo permanecer acima do limite de RSSI configurado para cada amostra, esse intervalo de um segundo será considerado congestionado.
- Se um número agregado de intervalos de um segundo bloqueados for maior ou
igual a o número agregado de segundos de Período ocupado configurados nos segundos de Janela de detecção configurados anteriores a qualquer momento, o estado de detecção de bloqueio nesse momento será definido como
true. - Se um número agregado de intervalos de um segundo bloqueados for menor do que o número agregado de segundos de período ocupado configurados nos segundos de janela de detecção anteriores em qualquer momento, o estado de detecção de bloqueio nesse momento será definido como
false.
Bitmap do histórico
Na API OpenThread, um bitmap dos 63 segundos anteriores está disponível para recuperação. Esse bitmap indica se o RSSI cruzou o limite configurado nos últimos 63 segundos.
Por exemplo, você pode extrair o seguinte bitmap:
0xC248068C416E7FF0
A conversão para binário produz todas as instâncias em que o RSSI ficou acima do limite configurado durante os 63 segundos anteriores:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
Se a janela de detecção for definida como 16 segundos e o período ocupado como 8 segundos, o estado de detecção de interferência se tornará true aos 51 segundos, já que essa é a primeira instância em que o limite de RSSI foi excedido por pelo menos 8 segundos inteiros nos 16 segundos anteriores. Neste exemplo, o estado de detecção de bloqueio 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 -45 dBm for o limite de RSSI configurado:
Como ativar
Esse recurso fica desativado por padrão.
Por definição
Para ativar a detecção de bloqueio, 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 o
OpenThread:
./script/build -DOT_JAM_DETECTION=ON
Parâmetros
Os parâmetros de detecção de bloqueio só podem ser configurados pela API OpenThread ou pelo protocolo Spinel. Os valores padrão são aplicados se o recurso for ativado sem configuração posterior.
Personalize esse recurso usando os seguintes parâmetros:
| Parâmetros | |||||
|---|---|---|---|---|---|
| Limite de RSSI |
|
||||
| Janela de detecção |
|
||||
| Período de alta demanda |
|
||||
API
OpenThread
Use a API Jam Detection para gerenciar o recurso de detecção de interferências diretamente no aplicativo OpenThread. A API OpenThread oferece as seguintes funcionalidades:
- Iniciar e parar o recurso
- Ver o estado de detecção de congestionamento
- Gerenciar todos os parâmetros
- Recuperar o bitmap do histórico de detecção de congestionamento atual
- 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 bloqueio em
openthread/src/lib/spinel/spinel.h
que oferecem a seguinte funcionalidade:
- Iniciar e parar o recurso
- Ver o estado de detecção de congestionamento
- Gerenciar todos os parâmetros
- Recuperar o bitmap do histórico de detecção de congestionamento atual
CLI
OpenThread
Não há comandos da CLI do OpenThread relacionados a esse recurso.