We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
无法使用迭代器遍历所有键值对,添加新的键值对之后,也无法通过迭代器遍历到这个键值对,但是如果直接调用get的接口,是可以读取到数据的。 这是遍历的代码: ` void pt_check_wireless_device(uint8_t dbid, uint8_t type, uint8_t max_size) { struct fdb_kv_iterator iterator; fdb_kv_t cur_kv; struct fdb_blob blob; size_t data_size; uint8_t data_buf; int32_t i = 0; uint32_t y = 0; uint32_t wireless_base_data = dbid1000; uint32_t addr = 0;
int count = 0; fdb_kv_iterator_init(&iterator); while (fdb_kv_iterate(ptr_pt_global_kvdb, &iterator)) { cur_kv = &(iterator.curr_kv); data_size = (size_t) cur_kv->value_len; data_buf = (uint8_t *) malloc(data_size); if (data_buf == NULL) { break; } fdb_blob_read((fdb_db_t) ptr_pt_global_kvdb, fdb_kv_to_blob(cur_kv, fdb_blob_make(&blob, data_buf, data_size))); // 无线设备键值解析 y = atoi(cur_kv->name); i = y-(wireless_base_data); addr = *((uint32_t *)data_buf); PT_LOGD("[index:%d]kv_name:%s ,addr: 0x%x", count++, cur_kv->name, addr); if(i > 0 && i <max_size && !(addr & 0xff00000f) && addr != 0) { cache_wireless_id[cache_wireless_count].addr = addr; cache_wireless_id[cache_wireless_count].id = i; cache_wireless_id[cache_wireless_count].type = type; cache_wireless_count++; if(cache_wireless_count >= 128+32 -1) { return; } } free(data_buf); }
} `
这是读取和添加新键值对的代码: ` pt_db_data_t read_data = { .type = PT_DATA_UINT32 }; int err = pt_fdb_read(9, 1, &read_data); PT_LOGD("err:%d addr:0x%x", err, read_data.val.val_u32); rt_thread_mdelay(2000);
pt_db_data_t write_data = { .type = PT_DATA_UINT32, .val.val_u32 = 90, .len = sizeof(uint32_t) }; err = pt_fdb_write(31, 1, &write_data); PT_LOGD("err:%d addr:0x%x", err, write_data.val.val_u32); rt_thread_mdelay(2000); err = pt_fdb_read(31, 1, &read_data); PT_LOGD("err:%d addr:0x%x", err, read_data.val.val_u32); rt_thread_mdelay(2000);
` 不管我如何添加新的键值对,迭代器都无法遍历到新的键值对,但是如果直接调用读取函数,是直接可以读取到的
The text was updated successfully, but these errors were encountered:
没啥思路,你先单步分析一下?
Sorry, something went wrong.
No branches or pull requests
无法使用迭代器遍历所有键值对,添加新的键值对之后,也无法通过迭代器遍历到这个键值对,但是如果直接调用get的接口,是可以读取到数据的。
这是遍历的代码:
`
void pt_check_wireless_device(uint8_t dbid, uint8_t type, uint8_t max_size)
{
struct fdb_kv_iterator iterator;
fdb_kv_t cur_kv;
struct fdb_blob blob;
size_t data_size;
uint8_t data_buf;
int32_t i = 0;
uint32_t y = 0;
uint32_t wireless_base_data = dbid1000;
uint32_t addr = 0;
}
`
这是读取和添加新键值对的代码:
`
pt_db_data_t read_data = {
.type = PT_DATA_UINT32
};
int err = pt_fdb_read(9, 1, &read_data);
PT_LOGD("err:%d addr:0x%x", err, read_data.val.val_u32);
rt_thread_mdelay(2000);
`
不管我如何添加新的键值对,迭代器都无法遍历到新的键值对,但是如果直接调用读取函数,是直接可以读取到的
The text was updated successfully, but these errors were encountered: