Rilevamento Jam

Visualizza sorgente su GitHub

Per fornire un meccanismo configurabile per il rilevamento del Jam di segnale su qualsiasi nodo OpenThread, abilita la funzionalità di rilevamento dei Jam.

Questa funzionalità è utile per le certificazioni dispositivo che richiedono la capacità di rilevare l'ingorgo di segnali su un canale specifico. Può essere configurato per soddisfare i requisiti di ogni tipo di certificazione.

Come funziona

Rilevamento Jam monitora l'RSSI (indicatore di potenza del segnale ricevuto) di un nodo durante le finestre di tempo specificate per determinare se il canale è stato bloccato.

Quando Rilevamento Jam è attivo:

  1. Lo stato di rilevamento del Jam è impostato su false.
  2. Il nodo campiona l'RSSI più volte ogni ogni secondo.
  3. Se l'RSSI nell'intero intervallo di un secondo rimane al di sopra della soglia RSSI configurata per ogni campione, tale intervallo viene considerato inceppato.
  4. Se un numero aggregato di intervalli con inceppamento di un secondo è maggiore o uguale a il numero aggregato di periodi di disponibilità configurati all'interno della precedente finestra di rilevamento configurata in qualsiasi momento, lo stato di rilevamento del Jam in quel momento è impostato su true.
  5. Se un numero aggregato di intervalli bloccati di un secondo corrisponde aminore di il numero aggregato di configurazioniPeriodo pieno secondi all'interno della configurazione precedenteFinestra di rilevamento secondi in qualsiasi momento, il rilevamento del Jam in quel momento è impostato sufalse ,

Bitmap cronologia

Nelle proprietà API OpenThread e wpantund è disponibile per il recupero una bitmap dei 63 secondi precedenti. Questa bitmap indica se l'RSSI ha superato la soglia RSSI configurata in ciascuno dei 63 secondi precedenti.

Ad esempio, potresti recuperare la seguente bitmap:

0xC248068C416E7FF0

La conversione in binario produce ogni istanza in cui l'RSSI è andato al di sopra della soglia RSSI configurata durante i 63 secondi precedenti:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Se la finestra di rilevamento è impostata su 16 secondi e il periodo di attività è impostato su 8 secondi, lo stato di rilevamento del Jam diventa true a 51 secondi, poiché è la prima istanza in cui la soglia RSSI era ha superato almeno 8 secondi nei 16 secondi precedenti. In questo esempio, lo stato di rilevamento del Jam rimane true per i 13 secondi successivi.

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

Questa bitmap potrebbe essere rappresentata dal seguente grafico, se -45 dBm era la soglia RSSI configurata:

Rilevamento Jam OT

Come attivarla

Questa funzionalità è disattivata per impostazione predefinita.

Per definizione

Per abilitare il rilevamento del Jam, definisci OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE come 1 nel file openthread/src/core/config/openthread-core-default-config.h, prima di creare OpenThread:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Per opzione

In alternativa, usa l'opzione di compilazione -DOT_JAM_DETECTION=ON durante la creazione di OpenThread:

./script/build -DOT_JAM_DETECTION=ON

Parametri

I parametri di rilevamento dei Jam possono essere configurati solo tramite l'API OpenThread, il protocollo Spinel o wpanctl, lo strumento a riga di comando wpantund per la gestione del Network-Co-Processor (NCP). I valori predefiniti vengono applicati se la funzionalità è abilitata senza configurazione successiva.

Personalizza questa funzionalità utilizzando i seguenti parametri:

Parametri
Soglia RSS
Valore predefinito
0 dBm
Descrizione
Specifica il livello RSSI della soglia in dBm oltre il quale considerare il canale inceppato.
Finestra di rilevamento
Valore predefinito
63 secondi
Descrizione
Specifica la finestra in secondi in cui verificare la presenza di inceppamenti del segnale. Intervallo: 1-63.
Periodo occupato
Valore predefinito
63 secondi
Descrizione
Specifica il numero di secondi aggregati nella finestra di rilevamento in cui il codice RSSI deve essere superiore alla soglia RSSI per attivare il rilevamento del Jam. Deve essere inferiore alla finestra di rilevamento. Intervallo: 1-63.

API

OpenThread

Utilizza l'API Jam Detection per gestire la funzionalità di rilevamento dei Jam direttamente nell'applicazione OpenThread. L'API OpenThread offre le seguenti funzionalità:

  • Avviare e interrompere la funzionalità
  • Visualizzare lo stato di rilevamento del Jam
  • Gestisci tutti i parametri
  • Recuperare la bitmap della cronologia di Rilevamento Jam attuale
  • Registra una funzione di callback per quando viene rilevato un Jam

Spinello

Il protocollo Spinel consente a un dispositivo host di comunicare direttamente con un NCP. Questo protocollo espone le proprietà di rilevamento dei Jam in openthread/src/lib/spinel/spinel.h che forniscono le seguenti funzionalità:

  • Avviare e interrompere la funzionalità
  • Visualizzare lo stato di rilevamento del Jam
  • Gestisci tutti i parametri
  • Recuperare la bitmap della cronologia di Rilevamento Jam attuale

interfaccia a riga di comando

OpenThread

Non sono presenti comandi dell'interfaccia a riga di comando OpenThread correlati a questa funzionalità.

Wpantund

Utilizza l'interfaccia a riga di comando wpanctl per gestire la funzionalità di rilevamento dei Jam per una configurazione OpenCP NCP. wpantund conserva tutte le configurazioni di rilevamento del Jam al momento del ripristino di NCP.

wpanctl fornisce l'accesso alle seguenti proprietà wpantund:

Proprietà
JamDetection:Status
Formato
boolean
Descrizione
Sola lettura. Stato rilevamento Jam. Indica se è stato rilevato un inceppamento del segnale.
JamDetection:Enable
Formato
boolean
Descrizione
Attiva o disattiva la funzionalità di rilevamento del Jam.
JamDetection:RssiThreshold
Formato
dBm
Descrizione
Specifica il livello RSSI della soglia in dBm oltre il quale considerare il canale bloccato.
JamDetection:Window
Formato
secondi
Descrizione
Specifica la finestra in secondi in cui verificare la presenza di inceppamenti del segnale. Intervallo: 1-63.
JamDetection:BusyPeriod
Formato
secondi
Descrizione
Specifica il numero di secondi aggregati all'interno di JamDetection:Window in cui i valori RSSI devono essere superiori a JamDetection:RssiThreshold per attivare il rilevamento del Jam. Deve essere inferiore a JamDetection:Window. Intervallo: 1-63.
JamDetection:Debug:HistoryBitmap
Formato
Valore a 64 bit
Descrizione
Fornisce informazioni sulla cronologia dello stato di rilevamento dei Jam a scopo di monitoraggio e debug.

Ad esempio, per ottenere lo stato di rilevamento del Jam per un NCP:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Per impostare la soglia RSSI di rilevamento del Jam a -45 dBm su un NCP:

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

Per ulteriori informazioni sulle proprietà wpantund, consulta il repository GitHub wpantund.