TuyaOS
KV-DB功能

物联网平台碎片化严重,各种各样的芯片和操作系统,资源、能力差异非常大。但是物联网设备的存储需求又有非常高的安全性,因为涉及到用户的隐私问题;要有非常高的可靠性,因为客户的场景不可控,必须在各种极端的情况下保证用户设备的可用性;还要有性能的要求,保证用户的使用体验。涂鸦TuyaOS提供了KV DB支持在文件系统、Flash上实现一套基于Key-Value存储的加密数据库,屏蔽了底层介质、操作系统的差异,为开发者提供了安全、可靠、高效的数据存储服务。

接口描述

KV DB写入

OPERATE_RET wd_common_write(IN CONST CHAR_T *key, IN CONST BYTE_T *value, IN CONST UINT_T len);
OPERATE_RET wd_common_write(IN CONST CHAR_T *key, IN CONST BYTE_T *value, IN CONST UINT_T len)
tuya key-value database write entry

KV DB读取

OPERATE_RET wd_common_read(IN CONST CHAR_T *key, OUT BYTE_T **value, OUT UINT_T *p_len);
OPERATE_RET wd_common_read(IN CONST CHAR_T *key, OUT BYTE_T **value, OUT UINT_T *p_len)
tuya key-value database read entry

KV DB模糊读取

OPERATE_RET wd_common_fuzzy_read(IN CONST CHAR_T *fuzzy_name, INOUT UINT_T *index, OUT BYTE_T **data, OUT UINT_T *len);
OPERATE_RET wd_common_fuzzy_read(IN CONST CHAR_T *fuzzy_name, INOUT UINT_T *index, OUT BYTE_T **data, OUT UINT_T *len)
tuya key-value database fuzzy read entry

KV DB模糊读取数据释放

OPERATE_RET wd_common_free_data(IN BYTE_T *data);
OPERATE_RET wd_common_free_data(IN BYTE_T *data)
free the buffer which allocated by wd_common_read or wd_common_fuzzy_read

KV DB删除数据

OPERATE_RET wd_common_delete(IN CONST CHAR_T *key);
OPERATE_RET wd_common_delete(IN CONST CHAR_T *key)
delete the entry from key-value database

KV DB模糊删除数据

OPERATE_RET wd_common_fuzzy_delete(IN CONST CHAR_T *key);
OPERATE_RET wd_common_fuzzy_delete(IN CONST CHAR_T *key)
fuzzy delete the entry from key-value database

KV DB写入用户自定义数据

OPERATE_RET wd_user_param_write(IN CONST BYTE_T *data, IN CONST UINT_T len);
OPERATE_RET wd_user_param_write(IN CONST BYTE_T *data, IN CONST UINT_T len)
write the user parameter to tuya key-value database

KV DB读取用户自定义数据

OPERATE_RET wd_user_param_read(OUT BYTE_T **buf, OUT UINT_T *len);
OPERATE_RET wd_user_param_read(OUT BYTE_T **buf, OUT UINT_T *len)
read the user parameter from tuya key-value database

示例代码

sample_kv()
{
int rt = OPRT_OK;
rt = wd_common_write("ddi-xxx", "hello-world-x", 13);
EXPECT_EQ(rt, OPRT_OK);
BYTE_T *value = NULL;
UINT_T len = 0;
rt = wd_common_read("ddi-xxx", &value, &len);
EXPECT_EQ(rt, OPRT_OK);
EXPECT_EQ(memcmp(value, "hello-world-x", 13), 0);
value = NULL;
len = 0;
rt = wd_common_write("ddi-yyy", "hello-world-y", 13);
EXPECT_EQ(rt, OPRT_OK);
rt = wd_common_write("ddi-xxx", "hello-world-z", 13);
EXPECT_EQ(rt, OPRT_OK);
UINT index = 0;
while(rt == OPRT_OK) {
rt = wd_common_fuzzy_read("ddi-", &index, &value, &len);
if(value) {
value = NULL;
}
}
rt = wd_common_delete("ddi-xxx");
EXPECT_EQ(rt, OPRT_OK);
rt = wd_common_fuzzy_delete("ddi-");
EXPECT_EQ(rt, OPRT_OK);
return OPRT_OK;
}
VOID ws_db_uninit(VOID)
tuya key-value database de-initialization