//#include <Keypad.h>
#include "ui.h"
extern void set_up();
/*const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 36, 37, 38, 39 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 32, 33, 34, 35 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
#define KEY_PLAY '#'
#define KEY_SETPOINT 'A'
#define KEY_SET_TIMER 'D'
bool playState = false;
byte uiState = 0;
uint32_t uiTimeout;
*/
struct AbsType {
const byte type;
void *ptr;
};
struct WData {
const byte row;
const byte col;
void *data;
byte type;
};
struct Float_t {
const byte row;
const byte col;
float &var;
};
float tFloat = 12.5;
struct WData labelSet = { 0, 0, "SET:", 1};
struct WData wd_tFloat = { 1, 0, &tFloat, 2};
struct Float_t variableFloat = {0, 0, tFloat};
AbsType var0 = {1, &variableFloat};
void lcdPrint(struct WData &l) {
lcd.setCursor(l.col, l.row);
switch (l.type) {
case 1:
lcd.print((char*)l.data);
break;
case 2:
lcd.print(*(float*)l.data);
break;
}
}
void lcdPrintAbs(struct AbsType &v) {
Float_t var = *(Float_t*)v.ptr;
lcd.setCursor(var.col, var.row);
lcd.print(var.var);
}
void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT);
uiSetup();
//lcdPrint(labelSet);
//lcdPrint(wd_tFloat);
lcdPrintAbs(var0);
//set_up();
}
static MainState oldMainState = PLAY;
static MainState mainState = PAUSE;
void loop() {
mainState = uiLoop();
switch (mainState) {
case PLAY:
if (oldMainState != mainState) {
Serial.println("PLAY");
//oldMainState = mainState;
}
break;
case PAUSE:
if (oldMainState != mainState) {
Serial.println("PAUSE");
//oldMainState = mainState;
}
break;
}
oldMainState = mainState;
//uiRun();
//char key = keypad.getKey();
//userInterface(key);
//if (changeState) {
// Serial.println(uiStateNames[uiState]);
//}
}