diff -r eafb140a1ddd -r 3ec477cda546 brewco/setup.c --- a/brewco/setup.c Fri Dec 04 14:21:25 2015 +0100 +++ b/brewco/setup.c Fri Dec 04 22:57:23 2015 +0100 @@ -36,9 +36,90 @@ -int toggleYesNo(int value, char *text) +void editFloat(float *value, float low, float high, char *text) { - int key, new = value; + int key; + float new = *value; + char pmpt[81]; + + prompt(0, NULL); + prompt(133, NULL); + + for (;;) { + snprintf(pmpt, Config.lcd_cols + 1, "%s: %5.1f\001", text, new); + prompt(200, pmpt); + if (new == low) + prompt(404, NULL); + else if (new == high) + prompt(402, NULL); + else + prompt(403, NULL); + + key = keywait(); + if ((key == KEY_RETURN) || my_shutdown) + return; + if (key == KEY_UP) { + new = new + 0.5; + if (new > high) + new = high; + } + if (key == KEY_DOWN) { + new = new - 0.5; + if (new < low) + new = low; + } + if (key == KEY_ENTER) { + *value = new; + return; + } + } +} + + + +void editInteger(int *value, int low, int high, char *text) +{ + int key, new = *value; + char pmpt[81]; + + prompt(0, NULL); + prompt(134, NULL); + + for (;;) { + snprintf(pmpt, Config.lcd_cols + 1, "%s: %2d mins", text, new); + prompt(200, pmpt); + if (new == low) + prompt(404, NULL); + else if (new == high) + prompt(402, NULL); + else + prompt(403, NULL); + + key = keywait(); + if ((key == KEY_RETURN) || my_shutdown) + return; + if (key == KEY_UP) { + new++; + if (new > high) + new = high; + } + if (key == KEY_DOWN) { + new--; + if (new < low) + new = low; + } + if (key == KEY_ENTER) { + *value = new; + return; + } + } +} + + + +void toggleYesNo(int *value, char *text) +{ + int key, new = *value; char pmpt[81]; prompt(0, NULL); @@ -56,13 +137,15 @@ key = keywait(); if ((key == KEY_RETURN) || my_shutdown) - return value; + return; if ((key == KEY_UP) && new) new = 0; else if ((key == KEY_DOWN) && (new == 0)) new = 1; - if (key == KEY_ENTER) - return new; + if (key == KEY_ENTER) { + *value = new; + return; + } } } @@ -132,7 +215,7 @@ case 13: snprintf(pmpt, Config.lcd_cols + 1, " Pump on-boil: %s", unit->pump_onboil ? (char *)"Yes":(char *)"No"); prompt(200, pmpt); break; - case 14: snprintf(pmpt, Config.lcd_cols + 1, " Pump stop: %3d\337C", unit->pump_stop); + case 14: snprintf(pmpt, Config.lcd_cols + 1, " Pump stop: %5.1f\001", unit->pump_stop); prompt(200, pmpt); break; case 15: snprintf(pmpt, Config.lcd_cols + 1, " Skip Add: %s", unit->skip_add ? (char *)"Yes":(char *)"No"); @@ -169,8 +252,32 @@ if (key == KEY_ENTER) { switch(index) { - case 7: unit->hlt_heater_mltfirst = toggleYesNo(unit->hlt_heater_mltfirst , (char *)"MLT heat b4 HLT"); - break; + + case 7: toggleYesNo(&unit->hlt_heater_mltfirst, (char *)"MLT heat b4 HLT"); + break; + case 8: editInteger(&unit->pump_cycle, 5, 15, (char *)"Pump cycle"); + break; + case 9: editInteger(&unit->pump_rest, 1, 5, (char *)"Pump rest "); + break; + case 10: toggleYesNo(&unit->pump_premash, (char *)" Pump pre-mash"); + break; + case 11: toggleYesNo(&unit->pump_onmash, (char *)" Pump on-mash"); + break; + case 12: toggleYesNo(&unit->pump_mashout, (char *)" Pump mashout"); + break; + case 13: toggleYesNo(&unit->pump_onboil, (char *)" Pump on-boil"); + break; + case 14: editFloat(&unit->pump_stop, 80.0, 110.0, (char *)" Pump stop"); + break; + case 15: toggleYesNo(&unit->skip_add, (char *)"Skip add water"); + break; + case 16: toggleYesNo(&unit->skip_remove, (char *)"Skip remove Mash"); + break; + case 17: toggleYesNo(&unit->skip_iodine, (char *)"Skip iodine test"); + break; + case 19: toggleYesNo(&unit->whirlpool, (char *)"Do a whirlpool"); + break; + } } // name