跳到主要内容
版本:3.0 Beta 🧪

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