1 #include "aos/kv.h"
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6
7 #include "py/builtin.h"
8 #include "py/mperrno.h"
9 #include "py/obj.h"
10 #include "py/runtime.h"
11 #include "ulog/ulog.h"
12
13 #define LOG_TAG "DRIVER_KV"
14
15 #define KV_BUFFER_MAX_LEN 256
16
obj_setStorageSync(size_t n_args,const mp_obj_t * args)17 STATIC mp_obj_t obj_setStorageSync(size_t n_args, const mp_obj_t *args)
18 {
19 LOGD(LOG_TAG, "entern %s; n_args = %d;\n", __func__, n_args);
20 int ret = -1;
21 char *key;
22 char *value;
23 int32_t value_len = 0;
24
25 if (n_args < 2) {
26 LOGE(LOG_TAG, "%s: args num is illegal :n_args = %d;\n", __func__, n_args);
27 return MP_ROM_INT(-EINVAL);
28 }
29
30 key = (char *)mp_obj_str_get_str(args[0]);
31 value = (char *)mp_obj_str_get_str(args[1]);
32 value_len = strlen(value);
33
34 ret = aos_kv_set(key, value, value_len, 1);
35 if (ret != 0) {
36 LOGE(LOG_TAG, "%s:aos_kv_set failed\n", __func__);
37 }
38 LOGD(LOG_TAG, "%s:out\n", __func__);
39
40 return MP_ROM_INT(ret);
41 }
42 STATIC MP_DEFINE_CONST_FUN_OBJ_VAR(kv_obj_setStorageSync, 2, obj_setStorageSync);
43
obj_getStorageSync(size_t n_args,const mp_obj_t * args)44 STATIC mp_obj_t obj_getStorageSync(size_t n_args, const mp_obj_t *args)
45 {
46 LOGD(LOG_TAG, "entern %s; n_args = %d;\n", __func__, n_args);
47 int ret = -1;
48 int32_t value_len = KV_BUFFER_MAX_LEN;
49 char *key;
50 char *value;
51
52 if (n_args < 1) {
53 LOGE(LOG_TAG, "%s: args num is illegal :n_args = %d;\n", __func__, n_args);
54 return MP_ROM_INT(-EINVAL);
55 }
56
57 key = (char *)mp_obj_str_get_str(args[0]);
58 value = (char *)aos_malloc(KV_BUFFER_MAX_LEN);
59 if (value == NULL) {
60 LOGE(LOG_TAG, "allocate memory failed\n");
61 return MP_ROM_INT(-ENOMEM);
62 }
63
64 ret = aos_kv_get(key, value, &value_len);
65 if (ret != 0) {
66 LOGE(LOG_TAG, "aos_kv_get failed key = %s;\n", key);
67 return MP_ROM_INT(ret);
68 }
69
70 mp_obj_t val_str = mp_obj_new_str(value, strlen(value));
71
72 LOGD(LOG_TAG, "%s:key = %s;value = %s;\n", __func__, key, value);
73 aos_free(value);
74 LOGD(LOG_TAG, "%s:out\n", __func__);
75
76 return val_str;
77 }
78 STATIC MP_DEFINE_CONST_FUN_OBJ_VAR(kv_obj_getStorageSync, 1, obj_getStorageSync);
79
obj_removeStorageSync(size_t n_args,const mp_obj_t * args)80 STATIC mp_obj_t obj_removeStorageSync(size_t n_args, const mp_obj_t *args)
81 {
82 LOGD(LOG_TAG, "entern %s; n_args = %d;\n", __func__, n_args);
83 int ret = -1;
84 char *key;
85
86 if (n_args < 1) {
87 LOGE(LOG_TAG, "%s: args num is illegal :n_args = %d;\n", __func__, n_args);
88 return MP_ROM_INT(-EINVAL);
89 }
90
91 key = (char *)mp_obj_str_get_str(args[0]);
92 LOGD(LOG_TAG, "%s:key = %s;\n", __func__, key);
93
94 ret = aos_kv_del(key);
95 if (ret != 0) {
96 LOGE(LOG_TAG, "kv delete item failed\n");
97 return MP_ROM_INT(ret);
98 }
99 LOGD(LOG_TAG, "%s:out\n", __func__);
100
101 return MP_ROM_INT(ret);
102 }
103 STATIC MP_DEFINE_CONST_FUN_OBJ_VAR(kv_obj_removeStorageSync, 1, obj_removeStorageSync);
104
105 STATIC const mp_rom_map_elem_t kv_module_globals_table[] = {
106 { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_kv) },
107 { MP_ROM_QSTR(MP_QSTR_setStorageSync), MP_ROM_PTR(&kv_obj_setStorageSync) },
108 { MP_ROM_QSTR(MP_QSTR_getStorageSync), MP_ROM_PTR(&kv_obj_getStorageSync) },
109 { MP_ROM_QSTR(MP_QSTR_removeStorageSync), MP_ROM_PTR(&kv_obj_removeStorageSync) },
110 };
111
112 STATIC MP_DEFINE_CONST_DICT(kv_module_globals, kv_module_globals_table);
113 const mp_obj_module_t kv_module = {
114 .base = { &mp_type_module },
115 .globals = (mp_obj_dict_t *)&kv_module_globals,
116 };
117