#raw #include #include #include #include #include "defines.h" #include "configuration.h" #end raw tConfigBlock configBlock; const uint32_t MAGIC = 0xC0DE0001; extern ESP8266WebServer webServer; void configServeIndex() { bool configValid = (configBlock.magic == MAGIC); if (! configValid) { #for $configItem in $configItems #if $configItem.label != "_" #if $configItem.type == "C" strcpy(configBlock.$configItem.key, "$configItem.default"); #else if $configItem.type == "I" configBlock.$configItem.key = $configItem.default; #end if #end if #end for } String buffer = "" " " " ESP8266 Thermometer Configuration Page" " " " " "

ESP8266 Configuration Page

" "
" " " #for $configItem in $configItems #if $configItem.label != "_" " " " " #end if #end for " " " " " " "
" " " " " " " "
" " " "
" "
" " " ""; webServer.send(200, "text/html", buffer); #ifdef DEBUG Serial.println("indexHtml request served"); #endif } void configServeGetConfiguration() { String arg; #for $configItem in $configItems #if $configItem.label != "_" arg = webServer.arg("$configItem.key"); Serial.print("$configItem.key"); Serial.println(arg); #if $configItem.type == "C" strcpy(configBlock.$configItem.key, arg.c_str()); #else if $configItem.type == "I" configBlock.$configItem.key = atoi(arg.c_str()); #end if #end if #end for configBlock.magic = MAGIC; showConfiguration(); EEPROM.begin(512); for (uint16_t i = 0; i < sizeof(configBlock); i++) { char c = *(((char*)(&configBlock))+i); Serial.print("write to eeprom: "); Serial.print(i); Serial.print(" "); Serial.println(c); EEPROM.write(EEPROM_ADDR + i, c); } EEPROM.commit(); Serial.println("EEPROM saved"); webServer.send(200, "text/html", "configuration saved"); } void showConfiguration() { Serial.println("Configuration is"); #for $configItem in $configItems Serial.print("$configItem.key = "); Serial.println(configBlock.$configItem.key); #end for Serial.println("---"); }