138 |
139 |
139 case MENU_MODE_NONE: show_mode(); |
140 case MENU_MODE_NONE: show_mode(); |
140 lcdPuts(lcdHandle, "New mode NONE"); |
141 lcdPuts(lcdHandle, "New mode NONE"); |
141 break; |
142 break; |
142 |
143 |
143 case MENU_NONE_HEAT: snprintf(buf, 20, "Set heater %s", current_unit->heater_state ? "OFF":"ON"); |
144 case MENU_NONE_HEAT: snprintf(buf, Config.lcd_cols, "Set heater %s", current_unit->heater_state ? "OFF":"ON"); |
144 lcdPuts(lcdHandle, buf); |
145 lcdPuts(lcdHandle, buf); |
145 break; |
146 break; |
146 |
147 |
147 case MENU_NONE_COOL: snprintf(buf, 20, "Set cooler %s", current_unit->cooler_state ? "OFF":"ON"); |
148 case MENU_NONE_COOL: snprintf(buf, Config.lcd_cols, "Set cooler %s", current_unit->cooler_state ? "OFF":"ON"); |
148 lcdPuts(lcdHandle, buf); |
149 lcdPuts(lcdHandle, buf); |
149 break; |
150 break; |
150 |
151 |
151 case MENU_NONE_FAN: snprintf(buf, 20, "Set fan %s", current_unit->fan_state ? "OFF":"ON"); |
152 case MENU_NONE_FAN: snprintf(buf, Config.lcd_cols, "Set fan %s", current_unit->fan_state ? "OFF":"ON"); |
152 lcdPuts(lcdHandle, buf); |
153 lcdPuts(lcdHandle, buf); |
153 break; |
154 break; |
154 |
155 |
155 case MENU_MODE_BEER: show_mode(); |
156 case MENU_MODE_BEER: show_mode(); |
156 lcdPuts(lcdHandle, "New mode BEER"); |
157 lcdPuts(lcdHandle, "New mode BEER"); |
157 break; |
158 break; |
158 |
159 |
159 case MENU_BEER_TEMP: lcdPuts(lcdHandle, "Set beer temp"); |
160 case MENU_BEER_TEMP: lcdPuts(lcdHandle, "Set beer temp"); |
160 lcdPosition(lcdHandle, 0, 1); |
161 lcdPosition(lcdHandle, 0, 1); |
161 snprintf(buf, 20, "Set %.1f", temp_temp); |
162 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp); |
162 lcdPuts(lcdHandle, buf); |
163 lcdPuts(lcdHandle, buf); |
163 break; |
164 break; |
164 |
165 |
165 case MENU_MODE_FRIDGE: show_mode(); |
166 case MENU_MODE_FRIDGE: show_mode(); |
166 lcdPuts(lcdHandle, "New mode FRIDGE"); |
167 lcdPuts(lcdHandle, "New mode FRIDGE"); |
167 break; |
168 break; |
168 |
169 |
169 case MENU_FRIDGE_TEMP: lcdPuts(lcdHandle, "Set fridge temp"); |
170 case MENU_FRIDGE_TEMP: lcdPuts(lcdHandle, "Set fridge temp"); |
170 lcdPosition(lcdHandle, 0, 1); |
171 lcdPosition(lcdHandle, 0, 1); |
171 snprintf(buf, 20, "Set %.1f", temp_temp); |
172 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp); |
172 lcdPuts(lcdHandle, buf); |
173 lcdPuts(lcdHandle, buf); |
173 break; |
174 break; |
174 |
175 |
175 case MENU_MODE_PROFILE: show_mode(); |
176 case MENU_MODE_PROFILE: show_mode(); |
176 lcdPuts(lcdHandle, "New mode PROFILE"); |
177 lcdPuts(lcdHandle, "New mode PROFILE"); |
177 break; |
178 break; |
178 |
179 |
179 case MENU_PROFILE_SELECT: lcdPuts(lcdHandle, "Select profile"); |
180 case MENU_PROFILE_SELECT: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); |
|
181 lcdPuts(lcdHandle, buf); |
|
182 lcdPosition(lcdHandle, 0, 1); |
|
183 lcdPuts(lcdHandle, "Select profile"); |
180 break; |
184 break; |
181 |
185 |
182 case MENU_PROFILE_START: lcdPuts(lcdHandle, "Start profile"); |
186 case MENU_PROFILE_START: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); |
|
187 lcdPuts(lcdHandle, buf); |
|
188 lcdPosition(lcdHandle, 0, 1); |
|
189 lcdPuts(lcdHandle, "Start profile"); |
183 break; |
190 break; |
184 |
191 |
185 case MENU_PROFILE_PAUSE: lcdPuts(lcdHandle, "Pause profile"); |
192 case MENU_PROFILE_PAUSE: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); |
|
193 lcdPuts(lcdHandle, buf); |
|
194 lcdPosition(lcdHandle, 0, 1); |
|
195 lcdPuts(lcdHandle, "Pause profile"); |
186 break; |
196 break; |
187 |
197 |
188 case MENU_PROFILE_ABORT: lcdPuts(lcdHandle, "Abort profile"); |
198 case MENU_PROFILE_ABORT: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); |
|
199 lcdPuts(lcdHandle, buf); |
|
200 lcdPosition(lcdHandle, 0, 1); |
|
201 lcdPuts(lcdHandle, "Abort profile"); |
189 break; |
202 break; |
190 |
203 |
191 case MENU_PROFILE_RESUME: lcdPuts(lcdHandle, "Resume profile"); |
204 case MENU_PROFILE_RESUME: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); |
|
205 lcdPuts(lcdHandle, buf); |
|
206 lcdPosition(lcdHandle, 0, 1); |
|
207 lcdPuts(lcdHandle, "Resume profile"); |
192 break; |
208 break; |
193 |
209 |
194 case MENU_PROFILE_GOOFF: lcdPuts(lcdHandle, "Set profile OFF"); |
210 case MENU_PROFILE_GOOFF: snprintf(buf, Config.lcd_cols, "%s", current_profile->name); |
|
211 lcdPuts(lcdHandle, buf); |
|
212 lcdPosition(lcdHandle, 0, 1); |
|
213 lcdPuts(lcdHandle, "Set profile OFF"); |
195 break; |
214 break; |
196 |
215 |
197 case MENU_TOP_SYS: lcdPuts(lcdHandle, "System menu"); |
216 case MENU_TOP_SYS: lcdPuts(lcdHandle, "System menu"); |
198 break; |
217 break; |
199 |
218 |
514 go_menu(MENU_MODE_BEER); |
535 go_menu(MENU_MODE_BEER); |
515 } |
536 } |
516 break; |
537 break; |
517 |
538 |
518 case MENU_MODE_PROFILE: |
539 case MENU_MODE_PROFILE: |
|
540 if (current_unit->profile) { |
|
541 for (current_profile = Config.profiles; current_profile; current_profile = current_profile->next) { |
|
542 if (strcmp(current_profile->uuid, current_unit->profile) == 0) |
|
543 break; |
|
544 } |
|
545 } else { |
|
546 current_profile = NULL; |
|
547 } |
519 if (key == KEY_ESCAPE) |
548 if (key == KEY_ESCAPE) |
520 go_menu(MENU_UNITS); |
549 go_menu(MENU_UNITS); |
521 if (key == KEY_DOWN) |
550 if (key == KEY_DOWN) |
522 go_menu(MENU_MODE_OFF); |
551 go_menu(MENU_MODE_OFF); |
523 if (key == KEY_UP) |
552 if (key == KEY_UP) |
524 go_menu(MENU_MODE_BEER); |
553 go_menu(MENU_MODE_BEER); |
525 if (key == KEY_ENTER) { |
554 if (key == KEY_ENTER) { |
526 change_mode(UNITMODE_PROFILE); |
555 if (current_unit->mode == UNITMODE_PROFILE) { |
|
556 switch (current_unit->prof_state) { |
|
557 case PROFILE_OFF: if (current_unit->profile) |
|
558 go_menu(MENU_PROFILE_START); |
|
559 else |
|
560 go_menu(MENU_PROFILE_SELECT); |
|
561 break; |
|
562 case PROFILE_PAUSE: go_menu(MENU_PROFILE_RESUME); |
|
563 break; |
|
564 case PROFILE_RUN: go_menu(MENU_PROFILE_PAUSE); |
|
565 break; |
|
566 case PROFILE_DONE: go_menu(MENU_PROFILE_GOOFF); |
|
567 break; |
|
568 } |
|
569 } else { |
|
570 change_mode(UNITMODE_PROFILE); |
|
571 go_menu(MENU_MODE_PROFILE); |
|
572 } |
|
573 } |
|
574 break; |
|
575 |
|
576 case MENU_PROFILE_SELECT: |
|
577 if (key == KEY_ESCAPE) |
527 go_menu(MENU_MODE_PROFILE); |
578 go_menu(MENU_MODE_PROFILE); |
528 } |
579 if (key == KEY_DOWN) { |
529 break; |
580 if (current_profile->next) { |
530 |
581 current_profile = current_profile->next; |
531 case MENU_PROFILE_SELECT: |
582 go_menu(MENU_PROFILE_SELECT); |
|
583 } else { |
|
584 go_menu(MENU_PROFILE_START); |
|
585 } |
|
586 } |
|
587 if (key == KEY_UP) { |
|
588 for (profile = Config.profiles; profile; profile = profile->next) { |
|
589 if (profile->next && profile->next == current_profile) { |
|
590 current_profile = profile; |
|
591 go_menu(MENU_PROFILE_SELECT); |
|
592 break; |
|
593 } |
|
594 } |
|
595 go_menu(MENU_PROFILE_START); |
|
596 } |
|
597 if (key == KEY_ENTER) { |
|
598 current_unit->profile = current_profile->uuid; |
|
599 syslog(LOG_NOTICE, "Profile %s selected from panel", current_profile->name); |
|
600 go_menu(MENU_PROFILE_START); |
|
601 } |
532 break; |
602 break; |
533 |
603 |
534 case MENU_PROFILE_START: |
604 case MENU_PROFILE_START: |
|
605 if (key == KEY_ESCAPE) |
|
606 go_menu(MENU_MODE_PROFILE); |
|
607 if ((key == KEY_DOWN) || (key == KEY_UP)) |
|
608 go_menu(MENU_PROFILE_SELECT); |
|
609 if (key == KEY_ENTER) { |
|
610 current_unit->prof_state = PROFILE_RUN; |
|
611 current_unit->prof_started = time(NULL); |
|
612 current_unit->prof_paused = 0; |
|
613 syslog(LOG_NOTICE, "Profile started from the panel"); |
|
614 go_menu(MENU_MODE_PROFILE); |
|
615 } |
535 break; |
616 break; |
536 |
617 |
537 case MENU_PROFILE_PAUSE: |
618 case MENU_PROFILE_PAUSE: |
|
619 if (key == KEY_ESCAPE) |
|
620 go_menu(MENU_MODE_PROFILE); |
|
621 if ((key == KEY_DOWN) || (key == KEY_UP)) |
|
622 go_menu(MENU_PROFILE_ABORT); |
|
623 if (key == KEY_ENTER) { |
|
624 current_unit->prof_state = PROFILE_PAUSE; |
|
625 syslog(LOG_NOTICE, "Profile pause from the panel"); |
|
626 go_menu(MENU_MODE_PROFILE); |
|
627 } |
538 break; |
628 break; |
539 |
629 |
540 case MENU_PROFILE_ABORT: |
630 case MENU_PROFILE_ABORT: |
|
631 if (key == KEY_ESCAPE) |
|
632 go_menu(MENU_MODE_PROFILE); |
|
633 if ((key == KEY_DOWN) || (key == KEY_UP)) { |
|
634 if (current_unit->prof_state == PROFILE_PAUSE) |
|
635 go_menu(MENU_PROFILE_RESUME); |
|
636 else if (current_unit->prof_state == PROFILE_RUN) |
|
637 go_menu(MENU_PROFILE_PAUSE); |
|
638 } |
|
639 if ((key == KEY_ENTER) && ((current_unit->prof_state == PROFILE_RUN) || (current_unit->prof_state == PROFILE_PAUSE))) { |
|
640 current_unit->prof_state = PROFILE_OFF; |
|
641 current_unit->prof_started = 0; |
|
642 syslog(LOG_NOTICE, "Profile aborted from the panel"); |
|
643 go_menu(MENU_MODE_PROFILE); |
|
644 } |
541 break; |
645 break; |
542 |
646 |
543 case MENU_PROFILE_RESUME: |
647 case MENU_PROFILE_RESUME: |
|
648 if (key == KEY_ESCAPE) |
|
649 go_menu(MENU_MODE_PROFILE); |
|
650 if ((key == KEY_DOWN) || (key == KEY_UP)) |
|
651 go_menu(MENU_PROFILE_ABORT); |
|
652 if (key == KEY_ENTER) { |
|
653 current_unit->prof_state = PROFILE_RUN; |
|
654 syslog(LOG_NOTICE, "Profile resume from the panel"); |
|
655 go_menu(MENU_MODE_PROFILE); |
|
656 } |
544 break; |
657 break; |
545 |
658 |
546 case MENU_PROFILE_GOOFF: |
659 case MENU_PROFILE_GOOFF: |
|
660 if (key == KEY_ESCAPE) |
|
661 go_menu(MENU_MODE_PROFILE); |
|
662 if (key == KEY_ENTER) { |
|
663 if (current_unit->prof_state == PROFILE_DONE) { |
|
664 current_unit->prof_state = PROFILE_OFF; |
|
665 syslog(LOG_NOTICE, "Profile from done to off from the panel"); |
|
666 } |
|
667 } |
547 break; |
668 break; |
548 |
669 |
549 case MENU_TOP_SYS: |
670 case MENU_TOP_SYS: |
550 if (key == KEY_ESCAPE) |
671 if (key == KEY_ESCAPE) |
551 go_menu(MENU_NONE); |
672 go_menu(MENU_NONE); |
562 go_menu(MENU_TOP_SYS); |
683 go_menu(MENU_TOP_SYS); |
563 if (key == KEY_DOWN) |
684 if (key == KEY_DOWN) |
564 go_menu(MENU_SYS_REBOOT); |
685 go_menu(MENU_SYS_REBOOT); |
565 if (key == KEY_UP) |
686 if (key == KEY_UP) |
566 go_menu(MENU_SYS_THERMS); |
687 go_menu(MENU_SYS_THERMS); |
|
688 if (key == KEY_ENTER) { |
|
689 rc = system("/sbin/halt"); |
|
690 syslog(LOG_NOTICE, "System halt from panel: /sbin/halt rc=%d", rc); |
|
691 go_menu(MENU_NONE); |
|
692 } |
567 break; |
693 break; |
568 |
694 |
569 case MENU_SYS_REBOOT: |
695 case MENU_SYS_REBOOT: |
570 if (key == KEY_ESCAPE) |
696 if (key == KEY_ESCAPE) |
571 go_menu(MENU_TOP_SYS); |
697 go_menu(MENU_TOP_SYS); |
572 if (key == KEY_DOWN) |
698 if (key == KEY_DOWN) |
573 go_menu(MENU_SYS_MASH); |
699 go_menu(MENU_SYS_MASH); |
574 if (key == KEY_UP) |
700 if (key == KEY_UP) |
575 go_menu(MENU_SYS_HALT); |
701 go_menu(MENU_SYS_HALT); |
|
702 if (key == KEY_ENTER) { |
|
703 rc = system("/sbin/reboot"); |
|
704 syslog(LOG_NOTICE, "System reboot from panel: /sbin/reboot rc=%d", rc); |
|
705 go_menu(MENU_NONE); |
|
706 } |
576 break; |
707 break; |
577 |
708 |
578 case MENU_SYS_MASH: |
709 case MENU_SYS_MASH: |
579 if (key == KEY_ESCAPE) |
710 if (key == KEY_ESCAPE) |
580 go_menu(MENU_TOP_SYS); |
711 go_menu(MENU_TOP_SYS); |