1111
1212#include " Module.h"
1313
14- void ModuleState::setupData () {
14+ void setDefaults (JsonObject root, JsonArray definition) {
15+ for (JsonObject property: definition) {
16+ if (property[" type" ] != " array" ) {
17+ root[property[" name" ]] = property[" default" ];
18+ } else {
19+ JsonArray array = root[property[" name" ]].to <JsonArray>();
20+ // loop over detail propertys (recursive)
21+ JsonObject object = array.add <JsonObject>(); // add one row
22+ setDefaults (object, property[" n" ].as <JsonArray>());
23+ }
24+ }
25+ }
1526
16- ESP_LOGD ( " " , " ModuleState::setupData size %d " , data. size ());
27+ void ModuleState::setupData () {
1728
1829 // only if no file ...
1930 if (data.size () == 0 ) {
31+ ESP_LOGD (" " , " ModuleState::setupData size %d" , data.size ());
2032 JsonDocument definition;
2133 if (setupDefinition)
2234 setupDefinition (definition.to <JsonArray>());
@@ -25,32 +37,24 @@ void ModuleState::setupData() {
2537
2638 char buffer[256 ];
2739 serializeJson (definition, buffer, sizeof (buffer));
28- ESP_LOGD (" " , " setupDefinition %s" , buffer);
40+ // ESP_LOGD("", "setupDefinition %s", buffer);
2941
3042 JsonObject root = data.to <JsonObject>();
3143
32- // create doc based on definition... only top level properties
33- for (JsonObject property: definition.as <JsonArray>()) {
34- if (property[" type" ] != " array" ) {
35- root[property[" name" ]] = property[" default" ];
36- } else {
37- root[property[" name" ]].to <JsonArray>();
38- // loop over detail propertys (recursive)
39- }
40- }
44+ setDefaults (root, definition.as <JsonArray>());
4145
4246 // char buffer[256];
43- serializeJson (root, buffer, sizeof (buffer));
44- ESP_LOGD (" " , " setupData %s" , buffer);
47+ // serializeJson(root, buffer, sizeof(buffer));
48+ // ESP_LOGD("", "setupData %s", buffer);
4549 }
4650
4751 // to do: check if the file matches the definition
4852}
4953
5054void ModuleState::read (ModuleState &state, JsonObject &root)
5155{
52- TaskHandle_t httpdTask = xTaskGetHandle ( " httpd " );
53- ESP_LOGI (" " , " Module::read task %s %d" , pcTaskGetName (httpdTask ), uxTaskGetStackHighWaterMark (httpdTask ));
56+ TaskHandle_t currentTask = xTaskGetCurrentTaskHandle ( );
57+ ESP_LOGI (" " , " Module::read task %s %d" , pcTaskGetName (currentTask ), uxTaskGetStackHighWaterMark (currentTask ));
5458
5559 root.set (state.data .as <JsonObject>()); // copy
5660
@@ -90,8 +94,8 @@ StateUpdateResult ModuleState::update(JsonObject &root, ModuleState &state)
9094{
9195
9296 if (root.size () != 0 ) { // in case of empty file
93- TaskHandle_t httpdTask = xTaskGetHandle ( " httpd " );
94- ESP_LOGI (" " , " Module::update task %s %d" , pcTaskGetName (httpdTask ), uxTaskGetStackHighWaterMark (httpdTask ));
97+ TaskHandle_t currentTask = xTaskGetCurrentTaskHandle ( );
98+ ESP_LOGI (" " , " Module::update task %s %d" , pcTaskGetName (currentTask ), uxTaskGetStackHighWaterMark (currentTask ));
9599 state.updatedItems .clear ();
96100
97101 // check which propertys have updated
0 commit comments