NVS API
概述
非易失性存储(NVS)API 提供了在设备非易失性存储器中存储和检索变量的机制。此 API 可用于保存和加载配置设置、校准数据和其他持久变量。
此 API 的头文件是 os/MatrixOS.h 的一部分,实现位于 os/system/NVS.cpp。
保存的变量
NVS API 相当复杂,需要使用哈希来标识变量。在大多数情况下,建议使用 SavedVar 宏 来创建保存的变量,而不是直接使用 NVS API。
如果需要存储大量数据,如用户完成配置后保存音符布局的完整配置,而不是通过大量保存变量在每次小改动后 都保存,则需要直接使用 NVS API。
哈希
需要将键哈希为唯一值的方法?查看 哈希工具 了解更多信息。
MatrixOS::NVS::GetSize
size_t GetSize(uint32_t hash);
获取与给定哈希关联的变量的大小。
参数:
hash(uint32_t):标识变量的哈希值。
返回值:
size_t:变量的字节大小。如果变量不存在,返回的大小为 -1。
MatrixOS::NVS::GetVariable(重载)
版本 1:返回变量内容
vector<char> GetVariable(uint32_t hash);
将与给定哈希关联的变量内容作为 vector<char> 检索。
参数:
hash(uint32_t):标识变量的哈希值。
返回值:
vector<char>:变量的内容。如果变量不存在,返回的向量长度为零。
版本 2:将变量加载到指针中
int8_t GetVariable(uint32_t hash, void* pointer, uint16_t length);
将变量内容加载到提供的指针中。如果变量未定义,函数尝试使用指针处的当前值来定义变量。
参数:
hash(uint32_t):标识变量的哈希值。pointer(void*):指向将加载变量内容的内存位置的指针。length(uint16_t):要加载的数据大小。
返回值:
int8_t:表示成功或失败的状态代码。
MatrixOS::NVS::SetVariable
bool SetVariable(uint32_t hash, void* pointer, uint16_t length);
使用指针中提供的内容设置或更新由给定哈希标识的变量。
参数:
hash(uint32_t):标识变量的哈希值。pointer(void*):指向包含要存储数据的内存位置的指针。length(uint16_t):要存储的数据大小。
返回值:
bool:操作成功返回true,否则返回false。
MatrixOS::NVS::DeleteVariable
bool DeleteVariable(uint32_t hash);
删除与给定哈希关联 的变量。
参数:
hash(uint32_t):标识变量的哈希值。
返回值:
bool:变量成功删除返回true,否则返回false。
Comments