diff -r 8bab04a663dd -r 28ee293654fd thermferm/rdconfig.c --- a/thermferm/rdconfig.c Wed Jul 02 22:17:10 2014 +0200 +++ b/thermferm/rdconfig.c Wed Jul 02 22:41:31 2014 +0200 @@ -29,8 +29,8 @@ #define MY_ENCODING "utf-8" -const char UNITMODE[5][8] = { "OFF", "NONE", "FRIDGE", "BEER", "PROFILE" }; - +const char UNITMODE[5][8] = { "OFF", "NONE", "FRIDGE", "BEER", "PROFILE" }; +const char PROFSTATE[4][6] = { "OFF", "PAUSE", "RUN", "DONE" }; @@ -342,7 +342,11 @@ syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); return 1; } - if ((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "UUID", "%d", (unsigned int)tmp3->prof_started)) < 0) { + if ((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "PROF_STARTED", "%d", (unsigned int)tmp3->prof_started)) < 0) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; + } + if ((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "PROF_STATE", "%s", PROFSTATE[tmp3->prof_state] )) < 0) { syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); return 1; } @@ -529,11 +533,12 @@ unit = (units_list *)malloc(sizeof(units_list)); unit->next = NULL; + unit->version = 1; unit->uuid = unit->name = unit->air_address = unit->beer_address = unit->io1_address = unit->io2_address = unit->profile = NULL; unit->volume = 0.0; unit->heater_available = unit->cooler_available = unit->fan_available = FALSE; unit->air_temp = unit->beer_temp = unit->beer_set = unit->fridge_set = 20.0; - unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->mode = 0; + unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->mode = unit->prof_state = 0; unit->temp_set_min = 1.0; unit->temp_set_max = 30.0; unit->idle_rangeH = 1.0; @@ -548,6 +553,7 @@ xmlFree(key); return 1; } + unit->version = 1; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"UUID"))) { @@ -647,6 +653,16 @@ unit->prof_started = ival; xmlFree(key); } + if ((!xmlStrcmp(cur->name, (const xmlChar *)"PROF_STATE"))) { + key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); + for (i = 0; i < 4; i++) { + if (! xmlStrcmp(key, (const xmlChar *)PROFSTATE[i])) { + unit->prof_state = i; + break; + } + } + xmlFree(key); + } cur = cur->next; }