diff -r 1193bd7d460f -r 6b80a37fdf8d brewco/setup.c --- a/brewco/setup.c Sat Nov 28 21:00:29 2015 +0100 +++ b/brewco/setup.c Wed Dec 02 17:16:41 2015 +0100 @@ -36,11 +36,166 @@ +int toggleYesNo(int value, char *text) +{ + int key, new = value; + char pmpt[81]; + + prompt(0, NULL); + prompt(132, NULL); + + for (;;) { + + snprintf(pmpt, Config.lcd_cols + 1, "%s: %s", text, new ? (char *)"Yes":(char *)"No "); + prompt(200, pmpt); + if (new) { + prompt(404, NULL); + } else { + prompt(402, NULL); + } + + key = keywait(); + if ((key == KEY_RETURN) || my_shutdown) + return value; + if ((key == KEY_UP) && new) + new = 0; + else if ((key == KEY_DOWN) && (new == 0)) + new = 1; + if (key == KEY_ENTER) + return new; + } +} + + + void editUnit(units_list *unit) { + int index = 1, key; + char pmpt[81]; + if (debug) fprintf(stdout, "Start edit brewsystem %d %s\n", unit->number, unit->uuid); + prompt(0, NULL); + + for (;;) { + + prompt(0, NULL); + prompt(131, NULL); + + if (index == 1) + prompt(402, NULL); + else if (index == 21) + prompt(404, NULL); + else + prompt(403, NULL); + + switch (index) { // 12345678901234567890 + case 1: snprintf(pmpt, Config.lcd_cols + 1, "Unit name:"); + prompt(200, pmpt); + snprintf(pmpt, Config.lcd_cols + 1, "%s", unit->name); + prompt(300, pmpt); + break; + case 2: snprintf(pmpt, Config.lcd_cols + 1, " HLT sensor setup"); + prompt(200, pmpt); + break; + case 3: snprintf(pmpt, Config.lcd_cols + 1, " HLT heater setup"); + prompt(200, pmpt); + break; + case 4: snprintf(pmpt, Config.lcd_cols + 1, " MLT sensor setup"); + prompt(200, pmpt); + break; + case 5: snprintf(pmpt, Config.lcd_cols + 1, " MLT heater setup"); + prompt(200, pmpt); + break; + case 6: snprintf(pmpt, Config.lcd_cols + 1, " MLT pump setup"); + prompt(200, pmpt); + break; + case 7: snprintf(pmpt, Config.lcd_cols + 1, "MLT heat b4 HLT: %s", unit->hlt_heater_mltfirst ? (char *)"Yes":(char *)"No"); + prompt(200, pmpt); + break; + case 8: snprintf(pmpt, Config.lcd_cols + 1, "Pump cycle: %2d mins", unit->pump_cycle); + prompt(200, pmpt); + break; + case 9: snprintf(pmpt, Config.lcd_cols + 1, "Pump rest : %2d mins", unit->pump_rest); + prompt(200, pmpt); + break; + case 10: snprintf(pmpt, Config.lcd_cols + 1, " Pump pre-mash: %s", unit->pump_premash ? (char *)"Yes":(char *)"No"); + prompt(200, pmpt); + break; + case 11: snprintf(pmpt, Config.lcd_cols + 1, " Pump on-mash: %s", unit->pump_onmash ? (char *)"Yes":(char *)"No"); + prompt(200, pmpt); + break; + case 12: snprintf(pmpt, Config.lcd_cols + 1, " Pump mashout: %s", unit->pump_mashout ? (char *)"Yes":(char *)"No"); + prompt(200, pmpt); + break; + 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); + prompt(200, pmpt); + break; + case 15: snprintf(pmpt, Config.lcd_cols + 1, " Skip Add: %s", unit->skip_add ? (char *)"Yes":(char *)"No"); + prompt(200, pmpt); + break; + case 16: snprintf(pmpt, Config.lcd_cols + 1, " Skip Remove: %s", unit->skip_remove ? (char *)"Yes":(char *)"No"); + prompt(200, pmpt); + break; + case 17: snprintf(pmpt, Config.lcd_cols + 1, " Skip Iodine: %s", unit->skip_iodine ? (char *)"Yes":(char *)"No"); + prompt(200, pmpt); + break; + case 18: snprintf(pmpt, Config.lcd_cols + 1, "Iodine time: %3d min", unit->iodine_time); + prompt(200, pmpt); + break; + case 19: snprintf(pmpt, Config.lcd_cols + 1, " Whirlpool: %s", unit->whirlpool ? (char *)"Yes":(char *)"No"); + prompt(200, pmpt); + break; + case 20: snprintf(pmpt, Config.lcd_cols + 1, " HLT PID setup"); + prompt(200, pmpt); + break; + case 21: snprintf(pmpt, Config.lcd_cols + 1, " MLT PID setup"); + prompt(200, pmpt); + break; + } + + key = keywait(); + if ((key == KEY_RETURN) || my_shutdown) + return; + + if ((key == KEY_UP) && (index > 1)) + index--; + if ((key == KEY_DOWN) && (index < 21)) + index++; + + if (key == KEY_ENTER) { + switch(index) { + case 7: unit->hlt_heater_mltfirst = toggleYesNo(unit->hlt_heater_mltfirst , (char *)"MLT heat b4 HLT"); + break; + } + } + // name + // hlt_sensor picklist + // hlt_heater picklist + value range + // mlt_sensor picklist + // mlt_heater picklist + value range + // mlt_pump picklist + value range + // hlt_heater_mltfirst 0/1 + // pump_cycle 5..15 + // pump_rest 1..5 + // pump_premash 0/1 + // pump_onmash 0/1 + // pump_mashout 0/1 + // pump_onboil 0/1 + // pump_stop 80..110 + // skip_add 0/1 + // skip_remove 0/1 + // skip_iodine 0/1 + // iodine_time 0..90 + // whirlpool 0/1 + // PID_hlt + // PID_mlt + } + if (debug) fprintf(stdout, "End edit brewsystem %d %s\n", unit->number, unit->uuid); } @@ -113,19 +268,19 @@ for (;;) { if (debug) fprintf(stdout, "setup() option=%d\n", option); - prompt(0); - prompt(102); - prompt(option); + prompt(0, NULL); + prompt(102, NULL); + prompt(option, NULL); if (option == 202) - prompt(402); + prompt(402, NULL); #ifdef USE_SIMULATOR else if (option == 205) #else else if (option == 204) #endif - prompt(404); + prompt(404, NULL); else - prompt(403); + prompt(403, NULL); key = keywait(); @@ -142,6 +297,22 @@ option++; } + if (key == KEY_ENTER) { + switch(option) { + case 202: // recipes + break; + case 203: editUnit(Config.units); /* If more units, via a selector */ + break; + case 204: // devices + break; +#ifdef USE_SIMULATOR + case 205: // simulator + break; +#endif + } + if (my_shutdown) + return; + } } }