設定

這個模組包含用於儲存非揮發性設定的平台抽象化機制。

摘要

列舉

anonymous enum{
  OT_SETTINGS_KEY_ACTIVE_DATASET = 0x0001,
  OT_SETTINGS_KEY_PENDING_DATASET = 0x0002,
  OT_SETTINGS_KEY_NETWORK_INFO = 0x0003,
  OT_SETTINGS_KEY_PARENT_INFO = 0x0004,
  OT_SETTINGS_KEY_CHILD_INFO = 0x0005,
  OT_SETTINGS_KEY_SLAAC_IID_SECRET_KEY = 0x0007,
  OT_SETTINGS_KEY_DAD_INFO = 0x0008,
  OT_SETTINGS_KEY_SRP_ECDSA_KEY = 0x000b,
  OT_SETTINGS_KEY_SRP_CLIENT_INFO = 0x000c,
  OT_SETTINGS_KEY_SRP_SERVER_INFO = 0x000d,
  OT_SETTINGS_KEY_BR_ULA_PREFIX = 0x000f,
  OT_SETTINGS_KEY_BR_ON_LINK_PREFIXES = 0x0010,
  OT_SETTINGS_KEY_BORDER_AGENT_ID = 0x0011
}
列舉
用於定義設定鍵。

函式

otPlatSettingsAdd(otInstance *aInstance, uint16_t aKey, const uint8_t *aValue, uint16_t aValueLength)
在設定中新增值。
otPlatSettingsDeinit(otInstance *aInstance)
void
視需要對設定子系統執行所有取消初始化作業。
otPlatSettingsDelete(otInstance *aInstance, uint16_t aKey, int aIndex)
從設定商店移除設定。
otPlatSettingsGet(otInstance *aInstance, uint16_t aKey, int aIndex, uint8_t *aValue, uint16_t *aValueLength)
擷取設定值。
otPlatSettingsInit(otInstance *aInstance, const uint16_t *aSensitiveKeys, uint16_t aSensitiveKeysLength)
void
視需要對設定子系統執行任何初始化作業。
otPlatSettingsSet(otInstance *aInstance, uint16_t aKey, const uint8_t *aValue, uint16_t aValueLength)
設定或取代設定的值。
otPlatSettingsWipe(otInstance *aInstance)
void
從設定商店移除所有設定。

列舉

匿名列舉

 anonymous enum

用於定義設定鍵。

注意:新增設定金鑰時,如果金鑰的對應設定包含安全性機密資訊,開發人員「必須」將金鑰加入透過 otPlatSettingsInit() 傳遞的陣列 aSensitiveKeys

屬性
OT_SETTINGS_KEY_ACTIVE_DATASET

執行中的作業資料集。

OT_SETTINGS_KEY_BORDER_AGENT_ID

專屬邊界代理程式/路由器 ID。

OT_SETTINGS_KEY_BR_ON_LINK_PREFIXES

BR 本地連結前置字元。

OT_SETTINGS_KEY_BR_ULA_PREFIX

BR ULA 前置字串。

OT_SETTINGS_KEY_CHILD_INFO

OT_SETTINGS_KEY_DAD_INFO

重複的地址偵測 (DAD) 資訊。

OT_SETTINGS_KEY_NETWORK_INFO

執行緒網路資訊。

OT_SETTINGS_KEY_PARENT_INFO

家長資訊。

OT_SETTINGS_KEY_PENDING_DATASET

待處理的作業資料集。

OT_SETTINGS_KEY_SLAAC_IID_SECRET_KEY

用於產生語意不透明 IID 的 SLAAC 金鑰。

OT_SETTINGS_KEY_SRP_CLIENT_INFO

SRP 用戶端資訊 (已選取 SRP 伺服器位址)。

OT_SETTINGS_KEY_SRP_ECDSA_KEY

SRP 用戶端 ECDSA 公開/私密金鑰組。

OT_SETTINGS_KEY_SRP_SERVER_INFO

SRP 伺服器資訊 (UDP 通訊埠)。

函式

otPlatSettingsAdd

otError otPlatSettingsAdd(
  otInstance *aInstance,
  uint16_t aKey,
  const uint8_t *aValue,
  uint16_t aValueLength
)

在設定中新增值。

將值加到 aKey 識別的設定,但不會替換任何現有值。

請注意,基礎實作不一定能維持與特定鍵關聯的項目順序。您可以在結尾、開頭,甚至是中間的位置加入附加價值。任何現有值的順序也可能會改變。

成功呼叫此函式可能會導致系統重新排序包含多個值的不相關設定。

OpenThread 堆疊保證會針對先前由 otPlatSettingsAdd() 管理的 aKey (即含有一或多個項目) 或空白和/或完全刪除 (不含任何值) 的 aKey 使用 otPlatSettingsAdd() 方法。

平台層可以運用這項結果來改善實作方式。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aKey
與要變更的設定相關聯的金鑰。
[in] aValue
指向設定新值讀取位置的指標。如果 aValueLength 不為零,則不得為空值。
[in] aValueLength
aValue 指向的資料長度。可以是零。
傳回值
OT_ERROR_NONE
已新增或準備將指定設定新增。
OT_ERROR_NOT_IMPLEMENTED
這個平台並未實作此功能。
OT_ERROR_NO_BUFS
沒有剩餘空間可儲存指定設定。

otPlatSettingsDeinit

void otPlatSettingsDeinit(
  otInstance *aInstance
)

視需要對設定子系統執行所有取消初始化作業。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。

otPlatSettingsDelete

otError otPlatSettingsDelete(
  otInstance *aInstance,
  uint16_t aKey,
  int aIndex
)

從設定商店移除設定。

從設定儲存庫中,刪除由 Key 識別的設定值。

請注意,基礎實作不一定能維持與特定鍵關聯的項目順序。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aKey
與要求設定相關聯的金鑰。
[in] aIndex
要移除的值索引。如果設為 -1,系統會移除這個 aKey 的所有值。
傳回值
OT_ERROR_NONE
已成功找到並移除指定的金鑰和索引。
OT_ERROR_NOT_FOUND
設定儲存庫中找不到指定的鍵或索引。
OT_ERROR_NOT_IMPLEMENTED
這個平台並未實作此功能。

otPlatSettingsGet

otError otPlatSettingsGet(
  otInstance *aInstance,
  uint16_t aKey,
  int aIndex,
  uint8_t *aValue,
  uint16_t *aValueLength
)

擷取設定值。

擷取 aKey 識別的設定值,並將其寫入 aValue 指向的記憶體。接著,將長度寫入 aValueLength 指向的整數。aValueLength 的初始值是寫入 aValue 的位元組上限。

只要將 aValueaValueLength 設為 NULL,就能在不擷取值的情況下檢查鍵是否存在。您也可以在不擷取設定的情況下,將 aValue 設為 NULL,藉此檢查設定的長度。

請注意,實作儲存體時並不需要基礎儲存體,來維持具有多個值的設定順序。在儲存 ANY 寫入作業後,這些值的順序可能會變更。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aKey
與要求設定相關聯的金鑰。
[in] aIndex
要取得的特定項目索引。
[out] aValue
應寫入設定值的位置指標。如果只是測試設定是否存在或長度,則可設為 NULL。
[in,out] aValueLength
指向值長度的指標。呼叫時,此指標應指向一個整數,其中包含可寫入 aValue 的最大值。屆時會寫入設定的實際長度。如果在執行在家狀態檢查,這個值可能會設為 NULL。
傳回值
OT_ERROR_NONE
已找到指定的設定並成功擷取。
OT_ERROR_NOT_FOUND
設定儲存庫中找不到指定的設定。
OT_ERROR_NOT_IMPLEMENTED
這個平台並未實作此功能。

otPlatSettingsInit

void otPlatSettingsInit(
  otInstance *aInstance,
  const uint16_t *aSensitiveKeys,
  uint16_t aSensitiveKeysLength
)

視需要對設定子系統執行任何初始化作業。

並將應儲存在安全區域的機密金鑰設為安全範圍。

請注意,aSensitiveKeys 指向的記憶體在刪除 aInstance 之前就不得釋放。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aSensitiveKeys
指向包含機密鍵清單的陣列的指標。只有在 aSensitiveKeysLength 為 0 時 (也就是沒有機密鍵) 才可能為 NULL。
[in] aSensitiveKeysLength
aSensitiveKeys 陣列中的項目數量。

otPlatSettingsSet

otError otPlatSettingsSet(
  otInstance *aInstance,
  uint16_t aKey,
  const uint8_t *aValue,
  uint16_t aValueLength
)

設定或取代設定的值。

設定或取代由 aKey 識別的設定值。

成功呼叫此函式可能會導致系統重新排序包含多個值的不相關設定。

OpenThread 堆疊保證會針對先前使用 otPlatSettingsSet() 設定的 aKey (即包含單一值),或空白和/或完全刪除 (不含任何值) 的 aKey 使用 otPlatSettingsSet() 方法。

平台層可以運用這項結果來改善實作方式。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。
[in] aKey
與要變更的設定相關聯的金鑰。
[in] aValue
指向設定新值讀取位置的指標。如果 aValueLength 不為零,則不得為空值。
[in] aValueLength
由 aValue 指向的資料長度。可以是零。
傳回值
OT_ERROR_NONE
指定設定已變更或分階段。
OT_ERROR_NOT_IMPLEMENTED
這個平台並未實作此功能。
OT_ERROR_NO_BUFS
沒有剩餘空間可儲存指定設定。

otPlatSettingsWipe

void otPlatSettingsWipe(
  otInstance *aInstance
)

從設定商店移除所有設定。

刪除設定存放區中的所有設定,恢復原廠設定。

詳細說明
參數
[in] aInstance
OpenThread 執行個體結構。

資源

OpenThread API 參考資料主題源自原始碼,請前往 GitHub 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源