Compare commits

..

No commits in common. "2e690a786443773b4bfddd9e631e04293c947c17" and "7f44da58b5b565e0a763a56bffa31ea321b9e4bc" have entirely different histories.

5 changed files with 29 additions and 73 deletions

View file

@ -60,7 +60,19 @@ struct cfglr_element {
cfglr_signaler_t signalers[CFGLR_SIGNALERS_MAX];
};
#define CFGLR_ELEMENT(KEY, POINTER, TYPE, SIZE, DEFAULT, DEF_SIZE, SIGNALERS...) (cfglr_element_t){\
#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){\
.key = KEY,\
.data = POINTER,\
.datatype = TYPE,\
@ -73,16 +85,16 @@ struct cfglr_element {
}\
}
#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)
#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)
typedef struct cfglr_backend cfglr_backend_t;
@ -131,8 +143,7 @@ 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_add_element(cfglr_handle_t *handle, cfglr_element_t *element);
cfglr_element_t * cfglr_get_element(cfglr_handle_t *handle, const char *name);
#include "cfglr_log.h"
#include "cfglr_nvs.h"

View file

@ -1,17 +0,0 @@
#ifndef __ELEMENT_LIST_H__
#define __ELEMENT_LIST_H__
typedef struct element_list_node element_list_node_t;
struct element_list_node {
element_list_node_t *first;
element_list_node_t *last;
element_list_node_t *next;
element_list_node_t *prev;
cfglr_element_t *element;
};
element_list_node_t *element_list_add(element_list_node_t *list, element_list_node_t *node);
#endif

View file

@ -7,8 +7,6 @@ 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);
}
@ -83,15 +81,7 @@ 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_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);
CFGLR_LOGI(TAG, "setting %s", element->key);
switch(element->datatype) {
case CFGLR_DATATYPE_U8:

View file

@ -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);
}
cfglr_element_t *cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *element) {
uint8_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,10 +60,7 @@ cfglr_element_t *cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *elem
} else {
CFGLR_LOGI(TAG, "failed to load %s, setting default", element->key);
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) {
@ -77,7 +74,7 @@ cfglr_element_t *cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *elem
cfglr_element_list_add(handle, element);
return element;
return ++handle->element_count;
}
uint8_t cfglr_init(cfglr_handle_t *handle) {
@ -95,14 +92,10 @@ uint8_t cfglr_init(cfglr_handle_t *handle) {
CFGLR_LOGI(TAG, "initializing elements");
uint8_t i = 0;
while((element = &handle->elements[i]) != NULL) {
while((element = &handle->elements[handle->element_count])) {
if(element->key == NULL) break;
cfglr_add_element(handle, element);
i++;
}
return 0;

View file

@ -1,21 +0,0 @@
#include "configulator.h"
#include "element_list.h"
element_list_node_t *element_list_add(element_list_node_t *list, element_list_node_t *node) {
element_list_node_t *last = list->last;
node->first = list->first;
node->prev = last;
last->next = node;
element_list_node_t *next = node;
while(next) {
next->last = node;
next = next->prev;
}
return node;
}