moved 'setDouble' from 'Fermenter' to 'console'

This commit is contained in:
Patrick Haßel 2024-04-22 12:32:52 +02:00
parent de4bdfa98b
commit 77890778d4
3 changed files with 27 additions and 25 deletions

View File

@ -248,3 +248,28 @@ const char *getFlashChipMode() {
return "[???]";
}
}
bool setDouble(const char *name, double *destinationPtr, double min, double max) {
const char *valueStr = strtok(nullptr, "");
if (valueStr == nullptr) {
consolePrintUsage();
return false;
}
double value = strtod(valueStr, nullptr);
if (isnan(value)) {
error("Failed to parse double for \"%s\": %s", name, valueStr);
return false;
}
if ((!isnan(min) && value < min) || (!isnan(max) && value > max)) {
error("Value out of range for \"%s\" [%f..%f]: %f", name, min, max, value);
return false;
}
if (*destinationPtr != value) {
*destinationPtr = value;
info("Value for \"%s\" set to: %f", name, value);
configPutDouble(name, value);
} else {
info("Value for \"%s\" unchanged: %f", name, value);
}
return true;
}

View File

@ -11,4 +11,6 @@ bool patrix_command(char *cmd);
void consolePrintUsage();
bool setDouble(const char *name, double *destinationPtr, double min, double max);
#endif

View File

@ -136,31 +136,6 @@ void writeDecimal(int *digit, double value) {
lc.setDigit(0, (*digit)++, integer / 10 % 10, false);
}
bool setDouble(const char *name, double *destinationPtr, double min, double max) {
const char *valueStr = strtok(nullptr, "");
if (valueStr == nullptr) {
consolePrintUsage();
return false;
}
double value = strtod(valueStr, nullptr);
if (isnan(value)) {
error("Failed to parse double for \"%s\": %s", name, valueStr);
return false;
}
if ((!isnan(min) && value < min) || (!isnan(max) && value > max)) {
error("Value out of range for \"%s\" [%f..%f]: %f", name, min, max, value);
return false;
}
if (*destinationPtr != value) {
*destinationPtr = value;
info("Value for \"%s\" set to: %f", name, value);
configPutDouble(name, value);
} else {
info("Value for \"%s\" unchanged: %f", name, value);
}
return true;
}
bool patrix_command(char *first) {
bool result = false;
if (strcmp(first, "over") == 0 || strcmp(first, "o") == 0) {