--- a/brewco/rdconfig.c Fri Dec 04 14:21:25 2015 +0100 +++ b/brewco/rdconfig.c Fri Dec 04 22:57:23 2015 +0100 @@ -376,7 +376,7 @@ syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); return 1; } - if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "PUMP_STOP", "%d", unit->pump_stop)) < 0)) { + if (((rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "PUMP_STOP", "%.3f", unit->pump_stop)) < 0)) { syslog(LOG_NOTICE, "wrconfig: error at xmlTextWriterWriteFormatElement"); return 1; } @@ -774,7 +774,7 @@ { xmlChar *key; int i, ival; - float val; + float fval; units_list *unit, *tmp; unit = (units_list *)malloc(sizeof(units_list)); @@ -792,7 +792,7 @@ unit->pump_onmash = 1; unit->pump_mashout = 0; unit->pump_onboil = 0; - unit->pump_stop = 90; + unit->pump_stop = 90.0; unit->skip_add = 0; unit->skip_remove = 0; unit->skip_iodine = 0; @@ -988,8 +988,8 @@ } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PUMP_STOP"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%d", &ival) == 1) - unit->pump_stop = ival; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->pump_stop = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"SKIP_ADD"))) { @@ -1029,62 +1029,62 @@ if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_IMAX"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->iMax = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->iMax = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_IGAIN"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->iGain = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->iGain = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_PGAIN"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->pGain = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->pGain = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_DGAIN"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->dGain = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->dGain = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_INPUT"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->Input = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->Input = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_ERR"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->Err = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->Err = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_ERRLAST"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->ErrLast = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->ErrLast = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_ISTATE"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->iState = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->iState = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_SETP"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->SetP = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->SetP = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_OUTP"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_hlt->OutP = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_hlt->OutP = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_HLT_MODE"))) { @@ -1100,62 +1100,62 @@ if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_IMAX"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->iMax = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->iMax = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_IGAIN"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->iGain = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->iGain = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_PGAIN"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->pGain = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->pGain = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_DGAIN"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->dGain = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->dGain = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_INPUT"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->Input = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->Input = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_ERR"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->Err = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->Err = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_ERRLAST"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->ErrLast = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->ErrLast = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_ISTATE"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->iState = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->iState = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_SETP"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->SetP = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->SetP = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_OUTP"))) { key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); - if (sscanf((const char *)key, "%f", &val) == 1) - unit->PID_mlt->OutP = val; + if (sscanf((const char *)key, "%f", &fval) == 1) + unit->PID_mlt->OutP = fval; xmlFree(key); } if ((!xmlStrcmp(cur->name, (const xmlChar *)"PID_MLT_MODE"))) {