68 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { |
68 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { |
69 driver_state->mlt_sp = stageTemp; |
69 driver_state->mlt_sp = stageTemp; |
70 xSemaphoreGive(xSemaphoreDriver); |
70 xSemaphoreGive(xSemaphoreDriver); |
71 } |
71 } |
72 log_msg(TAG, "Changed sp to %.2f", stageTemp); |
72 log_msg(TAG, "Changed sp to %.2f", stageTemp); |
|
73 } |
|
74 |
|
75 |
|
76 |
|
77 void change_tl(int max) |
|
78 { |
|
79 if (max) { |
|
80 if (TimeLeft < max) |
|
81 TimeLeft += 60; |
|
82 else |
|
83 TimeLeft = max; |
|
84 } else { |
|
85 if (TimeLeft > 60) |
|
86 TimeLeft -= 60; |
|
87 else |
|
88 TimeLeft = 0; |
|
89 } |
|
90 log_msg(TAG, "Changed timeleft to %d", TimeLeft / 60); |
73 } |
91 } |
74 |
92 |
75 |
93 |
76 |
94 |
77 /* |
95 /* |
298 if ((Main_Screen == MAIN_AUTO_COOLING_M) && (! recipe.Whirlpool6)) { |
316 if ((Main_Screen == MAIN_AUTO_COOLING_M) && (! recipe.Whirlpool6)) { |
299 // Skip cooling before whirlpool 63 degrees. |
317 // Skip cooling before whirlpool 63 degrees. |
300 Main_Screen = MAIN_AUTO_COOLING_C; |
318 Main_Screen = MAIN_AUTO_COOLING_C; |
301 return true; //goto startover; |
319 return true; //goto startover; |
302 } |
320 } |
|
321 log_msg(TAG, "Prompt start cooling"); |
303 TopMessage((char *)"Start koelen?"); |
322 TopMessage((char *)"Start koelen?"); |
304 Buttons_Add( 40, 100, 80, 40, (char *)"Start", 0); |
323 Buttons_Add( 40, 100, 80, 40, (char *)"Start", 0); |
305 Buttons_Add(200, 100, 80, 40, (char *)"Stop", 1); |
324 Buttons_Add(200, 100, 80, 40, (char *)"Stop", 1); |
306 Buttons[1].dark = true; |
325 Buttons[1].dark = true; |
307 Buttons_Show(); |
326 Buttons_Show(); |
335 // Skip final whirlpool. |
354 // Skip final whirlpool. |
336 Main_Screen = MAIN_AUTO_DONE; |
355 Main_Screen = MAIN_AUTO_DONE; |
337 return true; //goto startover; |
356 return true; //goto startover; |
338 } |
357 } |
339 |
358 |
|
359 log_msg(TAG, "Prompt start whirlpool"); |
340 TopMessage((char *)"Start Whirlpool?"); |
360 TopMessage((char *)"Start Whirlpool?"); |
341 Buttons_Add( 40, 100, 80, 40, (char *)"Start", 0); |
361 Buttons_Add( 40, 100, 80, 40, (char *)"Start", 0); |
342 Buttons_Add(200, 100, 80, 40, (char *)"Stop", 1); |
362 Buttons_Add(200, 100, 80, 40, (char *)"Stop", 1); |
343 Buttons[1].dark = true; |
363 Buttons[1].dark = true; |
344 Buttons_Show(); |
364 Buttons_Show(); |
704 TimerSet(stageTime * 60); |
724 TimerSet(stageTime * 60); |
705 } |
725 } |
706 Resume = false; |
726 Resume = false; |
707 runtime.StageTimeLeft = TimeLeft / 60; |
727 runtime.StageTimeLeft = TimeLeft / 60; |
708 updateRuntime = true; |
728 updateRuntime = true; |
709 log_msg(TAG, "Mash step %d temperature reached, rest time %d", Main_Screen - MAIN_AUTO_MASH_IN, TimeLeft / 60); |
729 log_msg(TAG, "Mash step %d temperature reached, rest %d minutes", Main_Screen - MAIN_AUTO_MASH_IN, TimeLeft / 60); |
710 Buttons_Clear(); |
730 Buttons_Clear(); |
711 Buttons_Add( 0, 120, 60, 40, (char *)"+1m", 0); |
731 Buttons_Add( 0, 120, 60, 40, (char *)"+1m", 0); |
712 Buttons_Add(260, 120, 60, 40, (char *)"-1m", 1); |
732 Buttons_Add(260, 120, 60, 40, (char *)"-1m", 1); |
713 Buttons_Show(); |
733 Buttons_Show(); |
714 } |
734 } |
715 switch (Buttons_Scan()) { |
735 switch (Buttons_Scan()) { |
716 case 0: if (stageTemp < MaxMash) { |
736 case 0: if (stageTemp < MaxMash) |
717 change_sp(true); |
737 change_sp(true); |
718 } |
|
719 break; |
738 break; |
720 |
739 |
721 case 1: if (stageTemp > MinMash) { |
740 case 1: if (stageTemp > MinMash) |
722 change_sp(false); |
741 change_sp(false); |
723 } |
|
724 break; |
742 break; |
725 |
743 |
726 default: |
744 default: |
727 break; |
745 break; |
728 } |
746 } |
740 pumpTime = 0; |
758 pumpTime = 0; |
741 } |
759 } |
742 if (pumpTime >= equipment.PumpCycle) { |
760 if (pumpTime >= equipment.PumpCycle) { |
743 if (! pumpRest) { |
761 if (! pumpRest) { |
744 pumpRest = true; |
762 pumpRest = true; |
745 log_msg(TAG, "Pump rest"); |
763 log_msg(TAG, "Pump stop"); |
746 } |
764 } |
747 } else { |
765 } else { |
748 if (pumpRest) { |
766 if (pumpRest) { |
749 pumpRest = false; |
767 pumpRest = false; |
750 log_msg(TAG, "Pump start"); |
768 log_msg(TAG, "Pump start"); |
751 } |
769 } |
752 } |
770 } |
753 } |
771 } |
754 if (TimeLeft) { |
772 if (TimeLeft) { |
755 switch (Buttons_Scan()) { |
773 switch (Buttons_Scan()) { |
756 case 0: TimeLeft += 60; |
774 case 0: change_tl(21600); |
757 runtime.StageTimeLeft = TimeLeft / 60; |
775 runtime.StageTimeLeft = TimeLeft / 60; |
758 updateRuntime = true; |
776 updateRuntime = true; |
759 log_msg(TAG, "Changed resttime to %d", runtime.StageTimeLeft); |
|
760 break; |
777 break; |
761 |
778 |
762 case 1: if (TimeLeft < 60) |
779 case 1: change_tl(0); |
763 TimeLeft = 0; |
|
764 else |
|
765 TimeLeft -= 60; |
|
766 runtime.StageTimeLeft = TimeLeft / 60; |
780 runtime.StageTimeLeft = TimeLeft / 60; |
767 updateRuntime = true; |
781 updateRuntime = true; |
768 log_msg(TAG, "Changed resttime to %d", runtime.StageTimeLeft); |
|
769 break; |
782 break; |
770 |
783 |
771 default: break; |
784 default: break; |
772 } |
785 } |
773 } |
786 } |
774 |
787 |
775 if (TimeLeft == 0) { |
788 if (TimeLeft == 0) { |
776 runtime.StageTimeLeft = TimeLeft / 60; |
789 runtime.StageTimeLeft = 0; |
777 updateRuntime = true; |
790 updateRuntime = true; |
778 if ((Main_Screen == MAIN_AUTO_MASH_IN) && config.AskAdd) { |
791 if ((Main_Screen == MAIN_AUTO_MASH_IN) && config.AskAdd) { |
779 /* |
792 /* |
780 * Add Mash prompt. |
793 * Add Mash prompt. |
781 */ |
794 */ |
850 if (NewMinute) { |
863 if (NewMinute) { |
851 runtime.StageTimeLeft = TimeLeft / 60; |
864 runtime.StageTimeLeft = TimeLeft / 60; |
852 updateRuntime = true; |
865 updateRuntime = true; |
853 } |
866 } |
854 } |
867 } |
855 } else if (MashState == MASH_ADD) { |
868 } else if (MashState == MASH_ADD || MashState == MASH_IODINE || MashState == MASH_REMOVE) { |
|
869 if (MashState == MASH_IODINE) { |
|
870 if (TimeSpent % 45 == 0) { |
|
871 if (! beeped) { |
|
872 SoundPlay(SOUND_Warn); |
|
873 beeped = true; |
|
874 } |
|
875 } else { |
|
876 beeped = false; |
|
877 } |
|
878 } |
856 switch (Buttons_Scan()) { |
879 switch (Buttons_Scan()) { |
857 case 0: Main_Screen = MAIN_AUTO_ABORT; |
880 case 0: Main_Screen = MAIN_AUTO_ABORT; |
858 break; |
881 break; |
859 case 1: Main_Screen++; |
882 case 1: Main_Screen++; |
860 break; |
883 break; |
861 default: break; |
884 default: break; |
862 } |
885 } |
863 } else if (MashState == MASH_IODINE) { |
886 if (MashState == MASH_IODINE && TimeLeft == 0) { |
864 if (TimeSpent % 45 == 0) { |
|
865 if (! beeped) { |
|
866 SoundPlay(SOUND_Warn); |
|
867 beeped = true; |
|
868 } |
|
869 } else { |
|
870 beeped = false; |
|
871 } |
|
872 switch (Buttons_Scan()) { |
|
873 case 0: Main_Screen = MAIN_AUTO_ABORT; |
|
874 break; |
|
875 case 1: Main_Screen++; |
|
876 break; |
|
877 default: break; |
|
878 } |
|
879 if (TimeLeft == 0) { |
|
880 Main_Screen++; |
887 Main_Screen++; |
881 } |
|
882 } else if (MashState == MASH_REMOVE) { |
|
883 switch (Buttons_Scan()) { |
|
884 case 0: Main_Screen = MAIN_AUTO_ABORT; |
|
885 break; |
|
886 case 1: Main_Screen++; |
|
887 break; |
|
888 default: break; |
|
889 } |
888 } |
890 } else if (MashState == MASH_INFUSE) { |
889 } else if (MashState == MASH_INFUSE) { |
891 switch (Buttons_Scan()) { |
890 switch (Buttons_Scan()) { |
892 case 0: Main_Screen = MAIN_AUTO_ABORT; |
891 case 0: Main_Screen = MAIN_AUTO_ABORT; |
893 break; |
892 break; |
1004 case 1: if (stageTemp > 80) { |
1003 case 1: if (stageTemp > 80) { |
1005 change_sp(false); |
1004 change_sp(false); |
1006 } |
1005 } |
1007 break; |
1006 break; |
1008 |
1007 |
1009 case 2: TimeLeft += 60; |
1008 case 2: change_tl(21600); |
1010 log_msg(TAG, "Increase boiltime to %d minutes", TimeLeft / 60); |
|
1011 break; |
1009 break; |
1012 |
1010 |
1013 case 3: if (TimeLeft > 60) |
1011 case 3: change_tl(0); |
1014 TimeLeft -= 60; |
|
1015 else |
|
1016 TimeLeft = 0; |
|
1017 log_msg(TAG, "Decrease boiltime to %d minutes", TimeLeft / 60); |
|
1018 break; |
1012 break; |
1019 |
1013 |
1020 case 4: if (BoilPower < 100) |
1014 case 4: if (BoilPower < 100) |
1021 BoilPower++; |
1015 BoilPower++; |
1022 log_msg(TAG, "Increase boilpower to %d%%", BoilPower); |
1016 log_msg(TAG, "Increase boilpower to %d%%", BoilPower); |
1305 } |
1299 } |
1306 |
1300 |
1307 MLT_info(71, 26, true); |
1301 MLT_info(71, 26, true); |
1308 TimerShow(TimeLeft, 65, 122); |
1302 TimerShow(TimeLeft, 65, 122); |
1309 switch (Buttons_Scan()) { |
1303 switch (Buttons_Scan()) { |
1310 case 0: TimeLeft += 60; |
1304 case 0: change_tl(7200); |
1311 break; |
1305 break; |
1312 case 1: if (TimeLeft > 60) |
1306 case 1: change_tl(0); |
1313 TimeLeft -= 60; |
|
1314 else |
|
1315 TimeLeft = 0; |
|
1316 break; |
1307 break; |
1317 case 2: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { |
1308 case 2: if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { |
1318 if (driver_state->mlt_pv < equipment.PumpMaxTemp) { |
1309 if (driver_state->mlt_pv < equipment.PumpMaxTemp) { |
1319 if (driver_state->pump_run) |
1310 if (driver_state->pump_run) |
1320 driver_state->pump_run = 0; |
1311 driver_state->pump_run = 0; |
1321 else |
1312 else |
1322 driver_state->pump_run = 1; |
1313 driver_state->pump_run = 1; |
|
1314 log_msg(TAG, "Pump switched %s", (driver_state->pump_run)?"on":"off"); |
1323 } else { |
1315 } else { |
1324 driver_state->pump_run = 0; |
1316 driver_state->pump_run = 0; |
1325 } |
1317 } |
1326 xSemaphoreGive(xSemaphoreDriver); |
1318 xSemaphoreGive(xSemaphoreDriver); |
1327 } |
1319 } |