设置

此模块包含用于非易失性存储设置的平台抽象。

摘要

枚举

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 使用 otPlatSettingsAdd() 方法。

平台层可以依赖并利用这一点来优化其实现。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aKey
与要更改的设置相关联的键。
[in] aValue
指向应从何处读取设置的新值的指针。如果 aValueLength 为非零值,则不得为 NULL。
[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
)

从设置存储区中移除设置。

从设置存储区中删除由 aKey 标识的设置中的特定值。

请注意,底层实现不需要维护与特定键关联的项的顺序。

具体说明
参数
[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 在不提取的情况下检查设置的长度。

请注意,底层存储实现无需保持具有多个值的设置的顺序。在对存储区执行任何写入操作后,这些值的顺序可能会发生变化。

具体说明
参数
[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
)

根据需要对设置子系统执行初始化。

还会设置应存储在安全区域的敏感密钥。

请注意,在销毁 aInstance 之前,不得释放 aSensitiveKeys 所指向的内存。

具体说明
参数
[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() 方法用于之前使用 otPlatSettingsSet() 设置(即包含单个值)或为空且/或已完全删除(不包含任何值)的 aKey

平台层可以依赖并利用这一点来优化其实现。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aKey
与要更改的设置相关联的键。
[in] aValue
指向应从何处读取设置的新值的指针。如果 aValueLength 为非零值,则不得为 NULL。
[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 上提供的源代码。如需了解详情,或者为我们的文档做贡献,请参阅资源