cewkomator/firmware/src/menu.cpp

72 lines
1.4 KiB
C++

#include "input.h"
#include "buzzer.h"
#include "screen.h"
#include "characters.h"
#include "customize.h"
uint8_t menuPos = 0;
#define MENU_ITEMS 2
void menu_setup();
void menu_update();
void help();
void menu() {
menu_setup();
while (true) {
auto input = handleInput();
if (input.encoderEvent) {
tick();
menuPos = (menuPos + input.encoderEvent) % MENU_ITEMS;
if (menuPos == 255) {
menuPos = MENU_ITEMS - 1;
}
menu_update();
} else if (input.switchEvent == SWITCH_RELEASED) {
switch (menuPos) {
case 0:
customize();
break;
case 1:
help();
break;
}
menu_setup();
} else if (input.hasInput && input.switchEvent != SWITCH_PRESSED) {
beep();
}
}
}
void menu_setup() {
menuPos = 0;
lcd.clear();
lcd.print(" Wind coils");
lcd.setCursor(0, 1);
lcd.print(" Help");
menu_update();
}
void menu_update() {
lcd.setCursor(0, 0);
lcd.write(menuPos == 0 ? CHAR_SELECTION : ' ');
lcd.setCursor(0, 1);
lcd.write(menuPos == 1 ? CHAR_SELECTION : ' ');
}
void help() {
lcd.clear();
lcd.print("Use the source");
lcd.setCursor(0, 1);
lcd.print("code, Luke ;^)");
beep();
while (true) {
auto input = handleInput();
if (input.hasInput && input.switchEvent != SWITCH_PRESSED) {
tick();
break;
}
}
}