From 5aeff5d0ce651a98a9a80f0e281fe55a5863e688 Mon Sep 17 00:00:00 2001 From: morgan Date: Sat, 1 Aug 2026 21:35:27 -0700 Subject: [PATCH] move adding element to own function, still needs to properly increment --- src/configulator.c | 87 ++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/src/configulator.c b/src/configulator.c index bf8138a..e41a092 100644 --- a/src/configulator.c +++ b/src/configulator.c @@ -4,10 +4,54 @@ #define TAG "CFGLR" +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); + CFGLR_LOGI(TAG, "size: %d", element->datatype_size); + + element->handle = handle; + element->data = (void*)malloc(element->datatype_size); + bzero(element->data, 0); + CFGLR_LOGD(TAG, "malloc: %d @ %p", element->datatype_size, element->data); + + //CFGLR_LOGI(TAG, "element->data: %p", element->data); + + while((signaler = &element->signalers[element->signaler_count])) { + if(signaler->init == NULL && signaler->dispatch == NULL) break; + + if(signaler->init != NULL) { + signaler->init(signaler, element, handle); + } + + element->signaler_count++; + } + + bool dispatch = false; + + if(handle->backend.get(&handle->backend, element, handle) == 0) { + dispatch = true; + } else { + CFGLR_LOGI(TAG, "failed to load %s, setting default", element->key); + + memcpy((void*)&element->data, (void*)&element->default_data, element->default_size); + if(handle->backend.set(&handle->backend, element, handle) == 0) { + dispatch = true; + } + } + + if(dispatch) { + for(uint8_t i = 0; i < element->signaler_count; i++) { + element->signalers[i].dispatch(&element->signalers[i], element, CFGLR_SIGNAL_LOADED); + } + } + + return ++handle->element_count; +} + uint8_t cfglr_init(cfglr_handle_t *handle) { cfglr_backend_t *backend = &handle->backend; cfglr_element_t *element; - cfglr_signaler_t *signaler; handle->element_count = 0; @@ -23,46 +67,7 @@ uint8_t cfglr_init(cfglr_handle_t *handle) { while((element = &handle->elements[handle->element_count])) { if(element->key == NULL) break; - CFGLR_LOGI(TAG, "Initializing element: %s", element->key); - CFGLR_LOGI(TAG, "size: %d", element->datatype_size); - - element->handle = handle; - element->data = (void*)malloc(element->datatype_size); - bzero(element->data, 0); - CFGLR_LOGD(TAG, "malloc: %d @ %p", element->datatype_size, element->data); - - //CFGLR_LOGI(TAG, "element->data: %p", element->data); - - while((signaler = &element->signalers[element->signaler_count])) { - if(signaler->init == NULL && signaler->dispatch == NULL) break; - - if(signaler->init != NULL) { - signaler->init(signaler, element, handle); - } - - element->signaler_count++; - } - - bool dispatch = false; - - if(handle->backend.get(&handle->backend, element, handle) == 0) { - dispatch = true; - } else { - CFGLR_LOGI(TAG, "failed to load %s, setting default", element->key); - - memcpy((void*)&element->data, (void*)&element->default_data, element->default_size); - if(handle->backend.set(&handle->backend, element, handle) == 0) { - dispatch = true; - } - } - - if(dispatch) { - for(uint8_t i = 0; i < element->signaler_count; i++) { - element->signalers[i].dispatch(&element->signalers[i], element, CFGLR_SIGNAL_LOADED); - } - } - - ++handle->element_count; + cfglr_add_element(handle, element); } return 0;