Compare commits
No commits in common. "2e690a786443773b4bfddd9e631e04293c947c17" and "7f44da58b5b565e0a763a56bffa31ea321b9e4bc" have entirely different histories.
2e690a7864
...
7f44da58b5
5 changed files with 29 additions and 73 deletions
|
|
@ -60,7 +60,19 @@ struct cfglr_element {
|
||||||
cfglr_signaler_t signalers[CFGLR_SIGNALERS_MAX];
|
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,\
|
.key = KEY,\
|
||||||
.data = POINTER,\
|
.data = POINTER,\
|
||||||
.datatype = TYPE,\
|
.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_U8(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, 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_I8(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, 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_U16(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, 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_I16(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, 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_U32(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, 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_I32(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, 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_U64(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, 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_I64(KEY, DEFAULT, SIGNALERS...) CFGLR_ELEMENT(KEY, 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_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(KEY, POINTER, CFGLR_DATATYPE_STR, SIZE, DEFAULT, strlen(DEFAULT), 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;
|
typedef struct cfglr_backend cfglr_backend_t;
|
||||||
|
|
||||||
|
|
@ -132,7 +144,6 @@ extern cfglr_handle_t *configulator;
|
||||||
uint8_t cfglr_init(cfglr_handle_t *handle);
|
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);
|
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_log.h"
|
||||||
#include "cfglr_nvs.h"
|
#include "cfglr_nvs.h"
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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);
|
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);
|
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) {
|
uint16_t cfglr_backend_nvs_set(cfglr_backend_t *backend, cfglr_element_t *element, cfglr_handle_t *handle) {
|
||||||
esp_err_t err = ESP_OK;
|
esp_err_t err = ESP_OK;
|
||||||
|
|
||||||
CFGLR_LOGD(TAG, "setting %s", element->key);
|
CFGLR_LOGI(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) {
|
switch(element->datatype) {
|
||||||
case CFGLR_DATATYPE_U8:
|
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);
|
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_signaler_t *signaler;
|
||||||
|
|
||||||
CFGLR_LOGI(TAG, "Initializing element: %s", element->key);
|
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 {
|
} else {
|
||||||
CFGLR_LOGI(TAG, "failed to load %s, setting default", element->key);
|
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);
|
memcpy((void*)&element->data, (void*)&element->default_data, element->default_size);
|
||||||
}
|
|
||||||
|
|
||||||
signal = CFGLR_SIGNAL_INIT;
|
signal = CFGLR_SIGNAL_INIT;
|
||||||
|
|
||||||
if(handle->backend.set(&handle->backend, element, handle) != 0) {
|
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);
|
cfglr_element_list_add(handle, element);
|
||||||
|
|
||||||
return element;
|
return ++handle->element_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t cfglr_init(cfglr_handle_t *handle) {
|
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");
|
CFGLR_LOGI(TAG, "initializing elements");
|
||||||
|
|
||||||
uint8_t i = 0;
|
while((element = &handle->elements[handle->element_count])) {
|
||||||
|
|
||||||
while((element = &handle->elements[i]) != NULL) {
|
|
||||||
if(element->key == NULL) break;
|
if(element->key == NULL) break;
|
||||||
|
|
||||||
cfglr_add_element(handle, element);
|
cfglr_add_element(handle, element);
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
Loading…
Add table
Reference in a new issue