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:
- Stan wykrywania tłoku jest ustawiony na
false
. - Węzeł próbkuje RSSI kilka razy w ciągu każdego 1-sekundowego interwału.
- 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.
- 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
. - 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:
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 |
|
||||
Okno wykrywania |
|
||||
Okres zajętości |
|
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 |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
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
.