兒童監督

在 GitHub 上查看來源

如要為休眠終端裝置 (SED) 提供節能機制,確認裝置仍連線至上層裝置 (列於上層裝置的子項表格中),請啟用子項監護功能。

根據 Thread 規格,SED 必須定期與上層執行 MLE 子項更新要求和回應交換,以驗證連線。兒童監督功能是驗證 SED 與家長連線的替代解決方案,可將訊息傳輸的負擔轉移給家長,而非能源受限的 SED。

運作方式

這項功能有兩種運作方式,視節點類型和設定的參數而定:

在上層發布商的帳戶中

如果家長未在 OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL 內將 SED 傳送給孩子,家長會將 Child Supervision 訊息排入佇列並傳送給孩子的 SED。「兒童監督」訊息是 MAC 影格,內含下列資訊:

  • MAC 標頭中 SED 的目的地 RLOC16
  • 空白酬載。

根據預設,MAC 標頭包含 802.15.4 ACK 要求。如要在「兒童帳戶監督」訊息中停用這項要求,請將 OPENTHREAD_CONFIG_CHILD_SUPERVISION_MSG_NO_ACK_REQUEST 參數設為 1。

在孩子身上

如果 SED 在 OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT 一段時間內未收到父項的訊息,就會假設與父項失去連線,並啟動 MLE Attach 程序,重新連線至網路。

如何啟用

這項功能預設為停用。

依定義

如要啟用孩童監督功能,請在openthread/src/core/config/child_supervision.h檔案中將 OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 定義為 1,然後建構 OpenThread

#ifndef OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE
#define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE 1
#endif

依選項

或者,您也可以在建構 OpenThread 時使用 -DOT_CHILD_SUPERVISION=ON 建構選項:

./script/build -DOT_CHILD_SUPERVISION=ON

參數

openthread/src/core/config/child_supervision.h 中使用下列參數,自訂這項功能:

參數
OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL
預設值
129 秒
說明
指定家長使用的監督時間間隔 (以秒為單位)。如要停用家長的監護程序,請將值設為 0。
OPENTHREAD_CONFIG_SUPERVISION_CHECK_TIMEOUT
預設值
190 秒
說明
指定裝置處於孩子狀態時,監護檢查逾時的時間間隔 (以秒為單位)。設為 0 可停用對子女的監督檢查程序。
OPENTHREAD_CONFIG_SUPERVISION_MSG_NO_ACK_REQUEST
預設值
0 (已啟用 ACK 要求)
說明
設為 1 可清除/停用監控訊息 MAC 標頭中的 802.15.4 ACK 要求。

API

使用 Child Supervision API 直接在 OpenThread 應用程式中管理監督功能,並檢查逾時間隔。

CLI

這項功能沒有相關的 CLI 指令。