提供可設定的機制,用於偵測任何 OpenThread 節點,啟用 Jam 偵測功能。
如果裝置認證需要 偵測特定頻道上的訊號幹擾。可設定為符合各類型認證的要求。
運作方式
Jam 偵測功能會監控節點的 RSSI (接收的訊號強度指標) 來判斷頻道是否已 卡住了。
啟用 Jam 偵測功能時:
- 干擾偵測狀態設為
false
。 - 節點每隔一秒就會對 RSSI 進行多次取樣。
- 如果整段間隔的 RSSI 仍高於 為每個樣本設定 RSSI 門檻, 就會視為卡住
- 如果在任何時間點,每秒遭到干擾的間隔總數的總和超過或等於等於在先前設定的偵測時間窗格秒內,所設定忙碌期間秒的總和,則該時間點的干擾偵測狀態會設為
true
。 - 如果在任何時間點,經過設定的 偵測時間窗口秒內,經過設定的繁忙期間秒的總數,小於經過經過設定的 1 秒間隔的總數,則該時間點的雜訊偵測狀態會設為
false
。
歷史記錄點陣圖
在 OpenThread API 和 wpantund
屬性中,
前 63 秒的點陣圖可供擷取。這個位元資料會指出 RSSI 是否在前 63 秒的每個時間點超過設定的 RSSI 閾值。
舉例來說,您可以擷取下列點陣圖:
0xC248068C416E7FF0
轉換為二進位檔會產生高於設定值的每個 RSSI 前 63 秒內的 RSSI 門檻:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
如果偵測時間窗格設為 16 秒,而忙碌期間設為 8 秒,則在 51 秒時,干擾偵測狀態會變成 true
,因為這是在前 16 秒內,RSSI 門檻至少超過 8 秒的第一次例子。在這個例子中,Jam 的偵測狀態會維持原樣
未來 13 秒的費用為 true
。
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
如果 -45 dBm 是 -45 dBm 設定的 RSSI 門檻:
啟用方式
這項功能預設為停用。
您可以透過定義
如要啟用 Jam Detection,請在建構 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
依選項
您也可以在建構時使用 -DOT_JAM_DETECTION=ON
建構選項
OpenThread:
./script/build -DOT_JAM_DETECTION=ON
參數
您只能透過 OpenThread API、Spinel 通訊協定或 wpanctl
設定塞車偵測參數,wpanctl
是用於管理網路協同處理器 (NCP) 的 wpantund
指令列工具。如果地圖項目
啟用,且無須後續設定。
使用下列參數自訂此功能:
參數 | |||||
---|---|---|---|---|---|
RSSI 門檻 |
|
||||
偵測視窗 |
|
||||
繁忙期間 |
|
API
OpenThread
使用 Jam Detection API 進行以下操作: 直接在 OpenThread 應用程式管理 Jam 偵測功能。OpenThread API 提供下列功能:
- 啟動及停止功能
- 查看 Jam 偵測狀態
- 管理所有參數
- 擷取目前的 Jam Detection 記錄點陣圖
- 註冊在偵測到 Jam 時的回呼函式
旋轉式
Spinel 通訊協定可讓主機裝置直接與 NCP 通訊。
這個通訊協定會在 openthread/src/lib/spinel/spinel.h
中公開干擾偵測屬性,提供下列功能:
- 啟動及停止這項功能
- 查看 Jam 偵測狀態
- 管理所有參數
- 擷取目前的 Jam Detection 記錄點陣圖
CLI
OpenThread
沒有與這項功能相關的 OpenThread CLI 指令。
wpantund
使用 wpanctl
CLI 管理 OpenThread NCP 設定的壅塞偵測功能。「wpantund
」會在 NCP 上保留所有 Jam 偵測設定
重設。
wpanctl
提供下列 wpantund
屬性的存取權:
屬性 | |||||
---|---|---|---|---|---|
JamDetection:Status |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
舉例來說,如要取得 NCP 的干擾偵測狀態,請按照下列步驟操作:
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
存放區