diff -r dc88583a068d -r df81d583c2c3 thermferm/rdconfig.c --- a/thermferm/rdconfig.c Tue Aug 26 14:45:03 2014 +0200 +++ b/thermferm/rdconfig.c Sat Aug 30 13:06:07 2014 +0200 @@ -350,6 +350,10 @@ syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); return 1; } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "HEATER_DELAY", "%d", tmp3->heater_delay)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; + } } if (tmp3->cooler_address) { if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "COOLER_ADDRESS", "%s", tmp3->cooler_address)) < 0)) { @@ -360,6 +364,10 @@ syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); return 1; } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "COOLER_DELAY", "%d", tmp3->cooler_delay)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; + } } if (tmp3->fan_address) { if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "FAN_ADDRESS", "%s", tmp3->fan_address)) < 0)) { @@ -370,6 +378,10 @@ syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); return 1; } + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "FAN_DELAY", "%d", tmp3->fan_delay)) < 0)) { + syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); + return 1; + } } if (tmp3->door_address) { if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "DOOR_ADDRESS", "%s", tmp3->door_address)) < 0)) { @@ -837,6 +849,8 @@ unit->air_temperature = unit->beer_temperature = unit->beer_set = unit->fridge_set = 20.0; unit->air_state = unit->beer_state = 1; // missing unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->mode = unit->prof_state = 0; + unit->heater_delay = unit->cooler_delay = unit->fan_delay = 20; /* 5 minutes delay */ + unit->heater_wait = unit->cooler_wait = unit->fan_wait = 0; unit->temp_set_min = 1.0; unit->temp_set_max = 30.0; unit->idle_rangeH = 1.0; @@ -900,12 +914,30 @@ if ((!xmlStrcmp(cur->name, (const xmlChar *)"HEATER_ADDRESS"))) { unit->heater_address = (char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); } + if ((!xmlStrcmp(cur->name, (const xmlChar *)"HEATER_DELAY"))) { + key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); + if (sscanf((const char *)key, "%d", &ival) == 1) + unit->heater_delay = ival; + xmlFree(key); + } if ((!xmlStrcmp(cur->name, (const xmlChar *)"COOLER_ADDRESS"))) { unit->cooler_address = (char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); } + if ((!xmlStrcmp(cur->name, (const xmlChar *)"COOLER_DELAY"))) { + key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); + if (sscanf((const char *)key, "%d", &ival) == 1) + unit->cooler_delay = ival; + xmlFree(key); + } if ((!xmlStrcmp(cur->name, (const xmlChar *)"FAN_ADDRESS"))) { unit->fan_address = (char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); } + if ((!xmlStrcmp(cur->name, (const xmlChar *)"FAN_DELAY"))) { + key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); + if (sscanf((const char *)key, "%d", &ival) == 1) + unit->fan_delay = ival; + xmlFree(key); + } if ((!xmlStrcmp(cur->name, (const xmlChar *)"DOOR_ADDRESS"))) { unit->door_address = (char *)xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); }