Wykrywanie Jamów

Wyświetl źródło na GitHubie

Aby zapewnić konfigurowalny mechanizm wykrywania zakłóceń sygnału na dowolnym węźle OpenThread, włącz funkcję wykrywania zakłóceń.

Ta funkcja jest przydatna w przypadku certyfikatów urządzeń, które wymagają wykrywania zakłóceń sygnału na określonym kanale. Można go skonfigurować tak, aby spełniał wymagania dotyczące każdego typu certyfikatu.

Jak to działa

Funkcja wykrywania zakłóceń monitoruje wskaźnik RSSI (wskaźnik siły odbieranego sygnału) węzła w określonych przedziałach czasu, aby określić, czy kanał został zablokowany.

Gdy funkcja wykrywania zakłóceń jest włączona:

  1. Stan wykrywania tłoku jest ustawiony na false.
  2. Węzeł próbkuje RSSI kilka razy w ciągu każdego 1-sekundowego interwału.
  3. Jeśli w przypadku każdego próbkowania w ciągu 1 sekundy wartość RSSI pozostaje powyżej skonfigurowanego progresji RSSI, 1-sekundowy przedział czasu jest uznawany za zablokowany.
  4. Jeśli łączna liczba zablokowanych 1-sekundowych interwałów jest większa lub równa łącznej liczbie skonfigurowanych okresów zajętości w sekundach w skonfigurowanym oknie wykrywania w dowolnym momencie, stan wykrywania tłoku w danym momencie jest ustawiony na true.
  5. Jeśli łączna liczba zaciętych jednosekundowych odstępów jest mniej niż łączna liczba skonfigurowanych sekund w okresie zajętości w dowolnym momencie w skonfigurowanym wcześniej oknie wykrywania w dowolnym momencie, stan wykrywania Jamu w tym momencie jest ustawiany na false.

Bitmapa historii

W interfejsie OpenThread API i we właściwościach wpantund dostępna jest do pobrania mapa bitowa z poprzednimi 63 sekundami. Ta bitmapa wskazuje, czy RSSI przekroczył skonfigurowany próg RSSI w ciągu ostatnich 63 sekund.

Możesz na przykład pobrać tę bitmapę:

0xC248068C416E7FF0

Konwersja na binarną wygeneruje wszystkie przypadki, w których wartość RSSI przekroczyła skonfigurowany próg RSSI w ciągu ostatnich 63 sekund:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Jeśli okno wykrywania jest ustawione na 16 sekund, a okres zajętości na 8 sekund, stan wykrywania zakłóceń staje się true w 51. sekundzie, ponieważ jest to pierwszy przypadek, w którym próg RSSI został przekroczony przez co najmniej 8 sekund w ciągu ostatnich 16 sekund. W tym przykładzie stan wykrywania zakłóceń pozostaje ustawiony natrue przez następne 13 sekund.

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

Bitmapa może być przedstawiona w postaci poniższego wykresu, jeśli skonfigurowany próg RSSI wynosił -45 dBm:

Wykrywanie zakłóceń OT

Jak włączyć

Ta funkcja jest domyślnie wyłączona.

Według definicji

Aby włączyć wykrywanie zakłóceń, w pliku openthread/src/core/config/openthread-core-default-config.h zdefiniuj parametr OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE jako 1, zanim utworzysz OpenThread:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Według opcji

Możesz też użyć opcji -DOT_JAM_DETECTION=ON podczas tworzenia OpenThread:

./script/build -DOT_JAM_DETECTION=ON

Parametry

Parametry wykrywania zakłóceń można skonfigurować tylko za pomocą interfejsu OpenThread API, protokołu Spinel lub narzędzia wiersza poleceń wpanctl wpantund do zarządzania współprocesorem sieciowym (NCP). Jeśli funkcja jest włączona bez dalszej konfiguracji, są stosowane wartości domyślne.

Możesz dostosować tę funkcję za pomocą tych parametrów:

Parametry
Próg RSSI
Wartość domyślna
0 dBm
Opis
Określa prógowy poziom RSSI w dBm, powyżej którego kanał jest uważany za zablokowany.
Okno wykrywania
Wartość domyślna
63 sekund
Opis
Określa przedział czasu (w sekundach) potrzebny do sprawdzenia, czy sygnał nie jest zakłócany. Zakres: 1–63.
Okres zajętości
Wartość domyślna
63 sekund
Opis
Określa liczbę sekund w oknie wykrywania, w których wartość RSSI musi być wyższa od progu RSSI, aby można było uruchomić wykrywanie zakłóceń. Wartość musi być mniejsza niż okno wykrywania. Zakres: 1–63.

Interfejs API

OpenThread

Aby zarządzać funkcją wykrywania Jamów bezpośrednio w aplikacji OpenThread, użyj interfejsu Jam Detection API. Interfejs OpenThread API udostępnia te funkcje:

  • Uruchamianie i zatrzymywanie funkcji
  • Wyświetlanie stanu wykrywania zakłóceń
  • Zarządzanie wszystkimi parametrami
  • Pobieranie bieżącej bitmapy historii wykrywania tłoku
  • Rejestrowanie funkcji wywołania zwrotnego na wypadek wykrycia utknięcia

Spinel

Protokół Spinel umożliwia urządzeniu hostującemu bezpośrednią komunikację z NCP. Ten protokół udostępnia właściwości wykrywania zakłóceń w openthread/src/lib/spinel/spinel.h, które zapewniają te funkcje:

  • Uruchamianie i zatrzymywanie funkcji
  • Wyświetlanie stanu wykrywania zakłóceń
  • Zarządzanie wszystkimi parametrami
  • Pobieranie bieżącej bitmapy historii wykrywania tłoku

interfejs CLI

OpenThread

Z tą funkcją nie są powiązane żadne polecenia OpenThread CLI.

Wpantund

Aby zarządzać funkcją wykrywania zakłóceń w przypadku konfiguracji OpenThread NCP, użyj interfejsu wiersza poleceń wpanctl. wpantund zachowuje całą konfigurację wykrywania zakłóceń po zresetowaniu NCP.

wpanctl zapewnia dostęp do tych właściwości wpantund:

Właściwości
JamDetection:Status
Format
wartość logiczna
Opis
Tylko do odczytu. Stan wykrywania zakłóceń. Wskazuje, czy obecnie wykryto tłok sygnału.
JamDetection:Enable
Format
wartość logiczna
Opis
Włącz lub wyłącz funkcję wykrywania zakłóceń.
JamDetection:RssiThreshold
Format
dBm
Opis
Określa wartość progowa RSSI w dBm, powyżej której kanał jest uważany za zablokowany.
JamDetection:Window
Format
s
Opis
Określa przedział czasu (w sekundach) potrzebny do sprawdzenia, czy sygnał nie jest zakłócany. Zakres: 1–63.
JamDetection:BusyPeriod
Format
s
Opis
Określa liczbę sekund w okresie JamDetection:Window, w których wartość RSSI musi być większa niż JamDetection:RssiThreshold, aby można było uruchomić wykrywanie zakłóceń. Wartość musi być mniejsza niż JamDetection:Window. Zakres: 1–63.
JamDetection:Debug:HistoryBitmap
Format
Wartość 64-bitowa
Opis
Zawiera informacje o historii stanu wykrywania zatoru na potrzeby monitorowania i debugowania.

Aby na przykład uzyskać stan wykrywania zakłóceń w przypadku NCP:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Aby ustawić próg RSSI wykrywania zakłóceń na -45 dBm w urządzeniu NCP:

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

Więcej informacji o właściwościach wpantund znajdziesz w repozytorium GitHub wpantund.