mirror of https://github.com/sqfmi/Watchy.git
commit
15179cfa0c
107
src/Watchy.cpp
107
src/Watchy.cpp
|
@ -153,6 +153,81 @@ void Watchy::handleButtonPress(){
|
||||||
showMenu(menuIndex, true);
|
showMenu(menuIndex, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***************** fast menu *****************/
|
||||||
|
bool timeout = false;
|
||||||
|
long lastTimeout = millis();
|
||||||
|
pinMode(MENU_BTN_PIN, INPUT);
|
||||||
|
pinMode(BACK_BTN_PIN, INPUT);
|
||||||
|
pinMode(UP_BTN_PIN, INPUT);
|
||||||
|
pinMode(DOWN_BTN_PIN, INPUT);
|
||||||
|
while(!timeout){
|
||||||
|
if(millis() - lastTimeout > 5000){
|
||||||
|
timeout = true;
|
||||||
|
}else{
|
||||||
|
if(digitalRead(MENU_BTN_PIN) == 1){
|
||||||
|
lastTimeout = millis();
|
||||||
|
if(guiState == MAIN_MENU_STATE){//if already in menu, then select menu item
|
||||||
|
switch(menuIndex)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
showBattery();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
showBuzz();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
showAccelerometer();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
setTime();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
setupWifi();
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
showUpdateFW();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}else if(guiState == FW_UPDATE_STATE){
|
||||||
|
updateFWBegin();
|
||||||
|
}
|
||||||
|
}else if(digitalRead(BACK_BTN_PIN) == 1){
|
||||||
|
lastTimeout = millis();
|
||||||
|
if(guiState == MAIN_MENU_STATE){//exit to watch face if already in menu
|
||||||
|
RTC.alarm(ALARM_2); //resets the alarm flag in the RTC
|
||||||
|
RTC.read(currentTime);
|
||||||
|
showWatchFace(false);
|
||||||
|
break; //leave loop
|
||||||
|
}else if(guiState == APP_STATE){
|
||||||
|
showMenu(menuIndex, false);//exit to menu if already in app
|
||||||
|
}else if(guiState == FW_UPDATE_STATE){
|
||||||
|
showMenu(menuIndex, false);//exit to menu if already in app
|
||||||
|
}
|
||||||
|
}else if(digitalRead(UP_BTN_PIN) == 1){
|
||||||
|
lastTimeout = millis();
|
||||||
|
if(guiState == MAIN_MENU_STATE){//increment menu index
|
||||||
|
menuIndex--;
|
||||||
|
if(menuIndex < 0){
|
||||||
|
menuIndex = MENU_LENGTH - 1;
|
||||||
|
}
|
||||||
|
showFastMenu(menuIndex);
|
||||||
|
}
|
||||||
|
}else if(digitalRead(DOWN_BTN_PIN) == 1){
|
||||||
|
lastTimeout = millis();
|
||||||
|
if(guiState == MAIN_MENU_STATE){//decrement menu index
|
||||||
|
menuIndex++;
|
||||||
|
if(menuIndex > MENU_LENGTH - 1){
|
||||||
|
menuIndex = 0;
|
||||||
|
}
|
||||||
|
showFastMenu(menuIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display.hibernate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Watchy::showMenu(byte menuIndex, bool partialRefresh){
|
void Watchy::showMenu(byte menuIndex, bool partialRefresh){
|
||||||
|
@ -181,7 +256,36 @@ void Watchy::showMenu(byte menuIndex, bool partialRefresh){
|
||||||
}
|
}
|
||||||
|
|
||||||
display.display(partialRefresh);
|
display.display(partialRefresh);
|
||||||
display.hibernate();
|
//display.hibernate();
|
||||||
|
|
||||||
|
guiState = MAIN_MENU_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Watchy::showFastMenu(byte menuIndex){
|
||||||
|
display.setFullWindow();
|
||||||
|
display.fillScreen(GxEPD_BLACK);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
|
||||||
|
int16_t x1, y1;
|
||||||
|
uint16_t w, h;
|
||||||
|
int16_t yPos;
|
||||||
|
|
||||||
|
const char *menuItems[] = {"Check Battery", "Vibrate Motor", "Show Accelerometer", "Set Time", "Setup WiFi", "Update Firmware"};
|
||||||
|
for(int i=0; i<MENU_LENGTH; i++){
|
||||||
|
yPos = 30+(MENU_HEIGHT*i);
|
||||||
|
display.setCursor(0, yPos);
|
||||||
|
if(i == menuIndex){
|
||||||
|
display.getTextBounds(menuItems[i], 0, yPos, &x1, &y1, &w, &h);
|
||||||
|
display.fillRect(x1-1, y1-10, 200, h+15, GxEPD_WHITE);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
display.println(menuItems[i]);
|
||||||
|
}else{
|
||||||
|
display.setTextColor(GxEPD_WHITE);
|
||||||
|
display.println(menuItems[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
display.display(true);
|
||||||
|
|
||||||
guiState = MAIN_MENU_STATE;
|
guiState = MAIN_MENU_STATE;
|
||||||
}
|
}
|
||||||
|
@ -419,7 +523,6 @@ void Watchy::showAccelerometer(){
|
||||||
// Get acceleration data
|
// Get acceleration data
|
||||||
bool res = sensor.getAccel(acc);
|
bool res = sensor.getAccel(acc);
|
||||||
uint8_t direction = sensor.getDirection();
|
uint8_t direction = sensor.getDirection();
|
||||||
display.setFullWindow();
|
|
||||||
display.fillScreen(GxEPD_BLACK);
|
display.fillScreen(GxEPD_BLACK);
|
||||||
display.setCursor(0, 30);
|
display.setCursor(0, 30);
|
||||||
if(res == false) {
|
if(res == false) {
|
||||||
|
|
Loading…
Reference in New Issue