Detecção de jam

Veja o código-fonte no GitHub

Para fornecer um mecanismo configurável para a detecção de obstrução de sinal em qualquer Nó OpenThread, ativar o recurso de detecção de Jams.

Esse recurso é útil para certificações de dispositivos que exigem a capacidade de detectar obstruções de sinal em um canal específico. Ele pode ser configurado para atender aos e 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 emperrado.

Quando a detecção de Jams está ativada:

  1. O estado de detecção de interferência está definido como false.
  2. O nó faz amostras do RSSI várias vezes em cada intervalo de um segundo.
  3. Se o RSSI nesse intervalo inteiro de um segundo permanecer acima do configurou Limite de RSSI para cada amostra, aquele que é considerado emperrado.
  4. Se um número agregado de intervalos de um segundo travados for maior ou igual ao número agregado do Período ocupado configurado de acordo com os segundos configurados anteriormente na janela de detecção a qualquer momento, o estado de detecção do Jam é definido para true.
  5. Se o número agregado de intervalos de um segundo travados for menor que o número agregado de segundos configurados de Período ocupado dentro de os segundos da janela de detecção configurados anteriormente a qualquer momento momento, o estado de detecção de Jam é definido como false.

Bitmap de histórico

Nas propriedades API OpenThread e wpantund, um bitmap dos 63 segundos anteriores está disponível para recuperação. Este bitmap indica se o RSSI ultrapassou o limite de RSSI configurado em cada nos últimos 63 segundos.

Por exemplo, você pode recuperar o seguinte bitmap:

0xC248068C416E7FF0

A conversão para binário produz todas as instâncias que o RSSI ultrapassou a Limite de RSSI 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 congestionamento 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 seguinte gráfico, se -45 dBm foi o Limite de RSSI configurado:

Detecção de Jams OT

Como ativar

Esse recurso fica desativado por padrão.

Por definição

Para ativar a Detecção de Jams, defina OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE como 1 em 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 Jam só podem ser configurados pela API OpenThread, o protocolo Spinel, ou wpanctl, a ferramenta de linha de comando wpantund para rede Gerenciamento de coprocessador (NCP). Os valores padrão serão aplicados se o recurso for ativado sem configuração posterior.

Personalize esse recurso usando os seguintes parâmetros:

Parâmetros
Limite de RSSI
Valor padrão
0 dBm
Descrição
Especifica o nível de RSSI de limite em dBm acima do qual o canal é considerado bloqueado.
Janela de detecção
Valor padrão
63 segundos
Descrição
Especifica o período em segundos em que a interferência de sinal será verificada. Intervalo: de 1 a 63.
Período ocupado
Valor padrão
63 segundos
Descrição
Especifica o número de segundos agregados dentro da janela de detecção em que o RSSI precisa estar acima do limite de RSSI para acionar a detecção de Jam. Precisa ser menor que a janela de detecção. Intervalo: de 1 a 63.

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 Jam 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 parar 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 Jam para um NCP do OpenThread configuração do Terraform. wpantund mantém toda a configuração da detecção de interferência após a redefinição do NCP.

wpanctl fornece acesso às seguintes propriedades do wpantund:

Propriedades
JamDetection:Status
Formato
booleano
Descrição
Somente leitura. Estado de detecção de Jam. Indica se uma interferência de sinal está sendo detectada.
JamDetection:Enable
Formato
booleano
Descrição
Ative ou desative o recurso de detecção de interferência.
JamDetection:RssiThreshold
Formato
dBm
Descrição
Especifica o nível de RSSI limite em dBm acima do qual deve ser considerado o canal bloqueado.
JamDetection:Window
Formato
segundos
Descrição
Especifica a janela em segundos na qual verificar a interferência de sinal. Intervalo: de 1 a 63.
JamDetection:BusyPeriod
Formato
segundos
Descrição
Especifica o número de segundos agregados em JamDetection:Window em que o RSSI precisa estar acima de JamDetection:RssiThreshold para acionar a detecção de interferência. Precisa ser menor que JamDetection:Window. Intervalo: 1 a 63.
JamDetection:Debug:HistoryBitmap
Formato
Valor de 64 bits
Descrição
Fornece informações sobre o histórico do estado da detecção de congestionamento para fins de monitoramento e depuração.

Por exemplo, para descobrir o estado de detecção de Jam de um NCP:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Para definir o limite de RSSI da detecção de interferência em -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.