You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
2.0 KiB
121 lines
2.0 KiB
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <curses.h>
|
|
#include <stdbool.h>
|
|
|
|
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();
|
|
}
|