如要在任何 OpenThread 節點上針對設定 Jam 偵測功能的設定機制進行設定,請啟用 Jam 偵測功能。
這項功能適用於需要偵測特定管道信號幹擾情況的裝置認證。可設為滿足各類型認證的要求。
運作方式
Jam Detection 會在指定的時間範圍內監控節點的 RSSI (接收訊號強度指標),判斷管道是否卡住了。
Jam 偵測功能啟用時:
- Jam 偵測狀態已設為
false
。 - 節點每隔 1 秒多次對 RSSI 進行取樣。
- 如果跨越一個間隔的 RSSI 超過各樣本的 RSSI 門檻,則系統會將該 1 秒的間隔視為卡住。
- 如果卡住了一秒的間隔時間,不論其時間多寡,都「等於」或「等於」在上述任一「偵測視窗」秒數內設定的「忙碌時間範圍」秒數,該時間點的 Jam 偵測狀態就會設為
true
。 - 如果卡住了一秒的時間間隔,而且該時間的時間間隔少於先前任何時間點的偵測期間秒數設定的「忙碌期間」秒數,那麼在該時間點的 Jam 偵測狀態就會設為
false
。
歷史點陣圖
在 OpenThread API 和 wpantund
屬性中,您可以使用 63 秒的點陣圖來擷取資料。此點陣圖會指出 RSSI 是否超過了前 63 秒的設定的 RSSI 門檻。
例如,您可以擷取下列點陣圖:
0xC248068C416E7FF0
轉換為二進位檔案後,會讓 RSSI 在上述 63 秒內超過設定的 RSSI 門檻:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
如果偵測期間設為 16 秒,而忙碌時段設為 8 秒,Jam Detection 狀態會在 51 秒後變成 true
,因為這是前 16 秒有 RSSI 門檻超過 8 個整秒的第一個例項。在本範例中,Jam Detection 狀態在接下來 13 秒仍維持 true
。
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
如果將 -45 dBm 設為設定的 RSSI 閾值,如下圖所示:

如何啟用
這項功能預設為停用。
定義
如要啟用 Jam 偵測,請在建構 OpenThread 之前,在 openthread/src/core/config/openthread-core-default-config.h
檔案中將 OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
定義為 1
:
#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif
依選項
或者,在建立 OpenThread 時使用 -DOT_JAM_DETECTION=ON
建構選項:
./script/build -DOT_JAM_DETECTION=ON
參數
Jam Detection 參數只能透過 OpenThread API、Spinel 通訊協定或 wpanctl
(用於控制網路協同程式 (NCP) 的 wpantund
指令列工具) 設定。如果在不啟用後續設定的情況下啟用這項功能,系統就會套用預設值。
使用下列參數自訂這項功能:
參數 | |||||
---|---|---|---|---|---|
RSSI 門檻 |
|
||||
偵測視窗 |
|
||||
忙碌時段 |
|
API
OpenThread
使用 Jam Detection API 直接在 OpenThread 應用程式中管理 Jam 偵測功能。OpenThread API 提供下列功能:
- 啟動及停止功能
- 查看 Jam 偵測狀態
- 管理所有參數
- 擷取目前的 Jam 偵測記錄點陣圖
- 在註冊 Jam 時註冊回呼函式
尖尾
Spinel 通訊協定可讓主機裝置直接與 NCP 通訊。這個通訊協定會在 openthread/src/lib/spinel/spinel.h
中公開提供 Jam 偵測屬性,其中包含以下功能:
- 啟動及停止功能
- 查看 Jam 偵測狀態
- 管理所有參數
- 擷取目前的 Jam 偵測記錄點陣圖
CLI
OpenThread
沒有與此功能相關的 OpenThread CLI 指令。
Wpantund
使用 wpanctl
CLI 管理 OpenThread NCP 設定的 Jam 偵測功能。wpantund
會在 NCP 重設後保留所有 Jam 偵測設定。
wpanctl
可讓您存取下列 wpantund
屬性:
屬性 | |||||
---|---|---|---|---|---|
JamDetection:Status |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
舉例來說,如要取得 NCP 的 Jam 偵測狀態:
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
如何在 NCP 上將 Jam 偵測 RSSI 閾值設為 -45 dBm:
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
如要進一步瞭解 wpantund
屬性,請參閱 wpantund
GitHub 存放區一文。