頻道監控

這個模組包含頻道監控功能的函式。

摘要

啟用頻道監控功能 (OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE) 後,即可使用本單元中的函式。

頻道監控功能會定期監控所有頻道,藉此決定所有乾淨管道 (幹擾程度較低的頻道)。

啟用頻道監控功能後,系統會執行零時差的能量掃描,針對每個取樣間隔收集各管道的 RSSI 樣本。RSSI 範例會與預先設定的 RSSI 門檻進行比較。頻道監控模組可維持管道品質,並提供高於指定頻率 (大約) 的取樣期 (以頻道可住人數計算) 門檻的平均值/百分比。

函式

otChannelMonitorGetChannelOccupancy(otInstance *aInstance, uint8_t aChannel)
uint16_t
取得特定頻道目前的可住人數。
otChannelMonitorGetRssiThreshold(otInstance *aInstance)
int8_t
取得頻道監控 RSSI 門檻 (dBm)。
otChannelMonitorGetSampleCount(otInstance *aInstance)
uint32_t
取得頻道監控 RSS 樣本的總數 (每個頻道)。
otChannelMonitorGetSampleInterval(otInstance *aInstance)
uint32_t
以毫秒為單位取得管道監控範例。
otChannelMonitorGetSampleWindow(otInstance *aInstance)
uint32_t
取得頻道監控的平均取樣期長度 (樣本數)。
otChannelMonitorIsEnabled(otInstance *aInstance)
bool
指出管道監控功能是否已啟用且正在執行。
otChannelMonitorSetEnabled(otInstance *aInstance, bool aEnabled)
啟用或停用管道監控作業。

函式

otChannelMonitorGetChannelOccupancy

uint16_t otChannelMonitorGetChannelOccupancy(
  otInstance *aInstance,
  uint8_t aChannel
)

取得特定頻道目前的可住人數。

頻道可住人數值代表 RSSI 取樣率超過 RSSI 門檻 (「不適合」的 RSSI 樣本) 的平均比率/百分比。

第一個「取樣期」樣本的平均值會維持為實際百分比 (即「不良」樣本數除以樣本數) 的平均值。在「窗型」樣本後,平均值使用指數加權移動平均值。簡單來說,這表示在最新 kSampleWindow 樣本中,平均值代表最多 3 * window 個樣本 (具有最高權重)。

0xffff 的最大值表示所有 RSSI 樣本都高於 RSSI 門檻 (亦即 100% 樣本為「不良」)。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aChannel
要取得連結佔用率的頻道。
傳回
特定頻道目前的可住人數。

otChannelMonitorGetRssiThreshold

int8_t otChannelMonitorGetRssiThreshold(
  otInstance *aInstance
)

取得頻道監控 RSSI 門檻 (dBm)。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
dBm 中的 RSSI 門檻。

otChannelMonitorGetSampleCount

uint32_t otChannelMonitorGetSampleCount(
  otInstance *aInstance
)

取得頻道監控 RSS 樣本的總數 (每個頻道)。

這項數值代表自啟用開始的執行緒數量 (自 Thread 網路介面啟用後),每個頻道監控模組總數。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
截至目前為止,RSS 樣本 (每個頻道) 的總數。

otChannelMonitorGetSampleInterval

uint32_t otChannelMonitorGetSampleInterval(
  otInstance *aInstance
)

以毫秒為單位取得管道監控範例。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
頻道會監控取樣的時間間隔 (以毫秒為單位)。

otChannelMonitorGetSampleWindow

uint32_t otChannelMonitorGetSampleWindow(
  otInstance *aInstance
)

取得頻道監控的平均取樣期長度 (樣本數)。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
平均範例視窗。

otChannelMonitorIsEnabled

bool otChannelMonitorIsEnabled(
  otInstance *aInstance
)

指出管道監控功能是否已啟用且正在執行。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
如果已啟用管道監控功能,則傳回 TRUE,否則傳回 FALSE。

otChannelMonitorSetEnabled

otError otChannelMonitorSetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

啟用或停用管道監控作業。

開始操作後,系統會清除先前收集的所有資料。不過在作業停用後,先前收集的資料仍為有效且可以讀取。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aEnabled
TRUE 表示啟用/啟動頻道監控作業,False 則為停用/停止。
回傳值
OT_ERROR_NONE
已成功變更管道監控狀態
OT_ERROR_ALREADY
管道監控功能已處於相同的狀態。

資源

OpenThread API 參考資料主題源自原始碼,可於 GitHub 取得。如需更多資訊或為說明文件貢獻心力,請參閱資源