diff --git a/main.c b/main.c new file mode 100644 index 0000000..958794b --- /dev/null +++ b/main.c @@ -0,0 +1,120 @@ +#include +#include +#include +#include + +bool buttonLeftPressed=false; +void buttonLeft() { + buttonLeftPressed=true; +} + +bool buttonRightPressed=false; +void buttonRight() { + buttonRightPressed=true; +} + +bool buttonMidPressed=false; +void buttonMid() { + buttonMidPressed=true; +} + +bool turnedLeft=false; +void turnLeft() { + turnedLeft=true; +} + +bool turnedRight=false; +void turnRight() { + turnedRight=true; +} + +bool rotPressed=false; +void pressRot() { + rotPressed=true; +} + +void lcdPut(char* text) { + printf("%c[2K", 27); + printf("\r%s", text ); + fflush(stdout); +} + + +void grind(int time) { + lcdPut("grinding..."); + usleep(time*1000); + lcdPut("Fin..."); + usleep(800000); +} + + +void boilerplate() { + int foo = getch(); + switch(foo) { + case 113: // q + buttonLeft(); break; + case 119: // w + buttonMid(); break; + case 101: // e + buttonRight(); break; + case 97: // a + turnLeft(); break; + case 115: // s + pressRot(); break; + case 100: // + turnRight(); break; + default: + break; + } +} + + +int activeTimer=0; +int timerLens[3]; +void loop() { + boilerplate(); + + char str[16]; + sprintf(str, "T%1d: %10d", activeTimer, timerLens[activeTimer]); + lcdPut(str); + + if(buttonLeftPressed) { + buttonLeftPressed=false; + activeTimer=0; + } + if(buttonRightPressed) { + buttonRightPressed=false; + activeTimer=2; + } + if(buttonMidPressed) { + buttonMidPressed=false; + activeTimer=1; + } + if(turnedLeft) { + turnedLeft=false; + timerLens[activeTimer] -= 5; + } + if(turnedRight) { + turnedRight=false; + timerLens[activeTimer] += 5; + } + if(rotPressed) { + rotPressed=false; + grind(timerLens[activeTimer]); + } + + usleep(150); +} + +int main( int argc, const char* argv[] ) +{ + + timerLens[0] = 1000; + timerLens[1] = 250; + timerLens[2] = 2500; + WINDOW *w = initscr(); + cbreak(); + nodelay(w, TRUE); + + while(1) loop(); +}