All elements take pointers now, more work on loop checking with new lists
This commit is contained in:
parent
bafffedd0c
commit
2e690a7864
3 changed files with 35 additions and 29 deletions
|
|
@ -60,19 +60,7 @@ struct cfglr_element {
|
|||
cfglr_signaler_t signalers[CFGLR_SIGNALERS_MAX];
|
||||
};
|
||||
|
||||
#define CFGLR_ELEMENT(KEY, TYPE, SIZE, DEFAULT, DEF_SIZE, SIGNALERS...) (cfglr_element_t){\
|
||||
.key = KEY,\
|
||||
.datatype = TYPE,\
|
||||
.datatype_size = SIZE,\
|
||||
.default_data = (void*)DEFAULT,\
|
||||
.default_size = DEF_SIZE,\
|
||||
.signalers = {\
|
||||
SIGNALERS,\
|
||||
{ NULL }\
|
||||
}\
|
||||
}
|
||||
|
||||
#define CFGLR_ELEMENT_PTR(KEY, POINTER, TYPE, SIZE, DEFAULT, DEF_SIZE, SIGNALERS...) (cfglr_element_t){\
|
||||
#define CFGLR_ELEMENT(KEY, POINTER, TYPE, SIZE, DEFAULT, DEF_SIZE, SIGNALERS...) (cfglr_element_t){\
|
||||
.key = KEY,\
|
||||
.data = POINTER,\
|
||||
.datatype = TYPE,\
|
||||
|
|
@ -85,16 +73,16 @@ struct cfglr_element {
|
|||
}\
|
||||
}
|
||||
|
||||
#define CFGLR_ELEMENT_U8(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_U8, sizeof(uint8_t), DEFAULT, 1, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_I8(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_I8, sizeof(int8_t), DEFAULT, 1, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_U16(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_U16, sizeof(uint16_t), DEFAULT, 2, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_I16(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_I16, sizeof(int16_t), DEFAULT, 2, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_U32(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_U32, sizeof(uint32_t), DEFAULT, 4, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_I32(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_I32, sizeof(int32_t), DEFAULT, 4, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_U64(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_U64, sizeof(uint64_t), DEFAULT, 8, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_I64(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_I64, sizeof(int64_t), DEFAULT, 8, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_BIN(KEY, SIZE, DEFAULT, DEF_SIZE, SIGNALERS...) CFGLR_ELEMENT(KEY, CFGLR_DATATYPE_BIN, SIZE, DEFAULT, DEF_SIZE, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_STR(KEY, POINTER, SIZE, DEFAULT, SIGNALERS...) CFGLR_ELEMENT_PTR(KEY, POINTER, CFGLR_DATATYPE_STR, SIZE, DEFAULT, strlen(DEFAULT), SIGNALERS)
|
||||
#define CFGLR_ELEMENT_U8(KEY, POINTER, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_U8, sizeof(uint8_t), DEFAULT, 1, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_I8(KEY, POINTER, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_I8, sizeof(int8_t), DEFAULT, 1, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_U16(KEY, POINTER, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_U16, sizeof(uint16_t), DEFAULT, 2, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_I16(KEY, POINTER, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_I16, sizeof(int16_t), DEFAULT, 2, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_U32(KEY, POINTER, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_U32, sizeof(uint32_t), DEFAULT, 4, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_I32(KEY, POINTER, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_I32, sizeof(int32_t), DEFAULT, 4, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_U64(KEY, POINTER, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_U64, sizeof(uint64_t), DEFAULT, 8, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_I64(KEY, POINTER, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_I64, sizeof(int64_t), DEFAULT, 8, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_BIN(KEY, POINTER, SIZE, DEFAULT, DEF_SIZE, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_BIN, SIZE, DEFAULT, DEF_SIZE, SIGNALERS)
|
||||
#define CFGLR_ELEMENT_STR(KEY, POINTER, SIZE, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, POINTER, CFGLR_DATATYPE_STR, SIZE, DEFAULT, strlen(DEFAULT), SIGNALERS)
|
||||
|
||||
typedef struct cfglr_backend cfglr_backend_t;
|
||||
|
||||
|
|
@ -143,7 +131,8 @@ extern cfglr_handle_t *configulator;
|
|||
|
||||
uint8_t cfglr_init(cfglr_handle_t *handle);
|
||||
uint8_t cfglr_fetch_data(cfglr_backend_t *backend, cfglr_element_t *element, cfglr_handle_t *handler);
|
||||
cfglr_element_t * cfglr_get_element(cfglr_handle_t *handle, const char *name);
|
||||
cfglr_element_t *cfglr_get_element(cfglr_handle_t *handle, const char *name);
|
||||
cfglr_element_t *cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *element);
|
||||
|
||||
#include "cfglr_log.h"
|
||||
#include "cfglr_nvs.h"
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ void cfglr_backend_nvs_open(cfglr_backend_t *backend, cfglr_handle_t *handle) {
|
|||
|
||||
esp_err_t err = nvs_open(handle->namespace, NVS_READWRITE, (nvs_handle_t*)&backend->handle);
|
||||
|
||||
CFGLR_LOGI(TAG, "backend->handle: %p", (nvs_handle_t*)&backend->handle);
|
||||
|
||||
ESP_ERROR_CHECK(err);
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +83,15 @@ uint16_t cfglr_backend_nvs_get(cfglr_backend_t *backend, cfglr_element_t *elemen
|
|||
uint16_t cfglr_backend_nvs_set(cfglr_backend_t *backend, cfglr_element_t *element, cfglr_handle_t *handle) {
|
||||
esp_err_t err = ESP_OK;
|
||||
|
||||
CFGLR_LOGI(TAG, "setting %s", element->key);
|
||||
CFGLR_LOGD(TAG, "setting %s", element->key);
|
||||
|
||||
CFGLR_LOGD(TAG, "handle: %p", handle);
|
||||
|
||||
CFGLR_LOGD(TAG, "backend: %p", backend);
|
||||
CFGLR_LOGD(TAG, "backend->handle: %p", backend->handle);
|
||||
|
||||
CFGLR_LOGD(TAG, "element: %p", element);
|
||||
CFGLR_LOGD(TAG, "element->data: %p", element->data);
|
||||
|
||||
switch(element->datatype) {
|
||||
case CFGLR_DATATYPE_U8:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ element_list_node_t *cfglr_element_list_add(cfglr_handle_t *handle, cfglr_elemen
|
|||
return element_list_add(handle->extra, node);
|
||||
}
|
||||
|
||||
uint8_t cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *element) {
|
||||
cfglr_element_t *cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *element) {
|
||||
cfglr_signaler_t *signaler;
|
||||
|
||||
CFGLR_LOGI(TAG, "Initializing element: %s", element->key);
|
||||
|
|
@ -60,7 +60,10 @@ uint8_t cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *element) {
|
|||
} else {
|
||||
CFGLR_LOGI(TAG, "failed to load %s, setting default", element->key);
|
||||
|
||||
memcpy((void*)&element->data, (void*)&element->default_data, element->default_size);
|
||||
if(element->data == NULL) {
|
||||
memcpy((void*)&element->data, (void*)&element->default_data, element->default_size);
|
||||
}
|
||||
|
||||
signal = CFGLR_SIGNAL_INIT;
|
||||
|
||||
if(handle->backend.set(&handle->backend, element, handle) != 0) {
|
||||
|
|
@ -74,7 +77,7 @@ uint8_t cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *element) {
|
|||
|
||||
cfglr_element_list_add(handle, element);
|
||||
|
||||
return ++handle->element_count;
|
||||
return element;
|
||||
}
|
||||
|
||||
uint8_t cfglr_init(cfglr_handle_t *handle) {
|
||||
|
|
@ -92,10 +95,14 @@ uint8_t cfglr_init(cfglr_handle_t *handle) {
|
|||
|
||||
CFGLR_LOGI(TAG, "initializing elements");
|
||||
|
||||
while((element = &handle->elements[handle->element_count])) {
|
||||
uint8_t i = 0;
|
||||
|
||||
while((element = &handle->elements[i]) != NULL) {
|
||||
if(element->key == NULL) break;
|
||||
|
||||
cfglr_add_element(handle, element);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue