#include "ScreenMenu.h" #include "ScreenSetTime.h" #include "ScreenCountdown.h" #include "ExposureTimer.h" #include "Config.h" #include "Buzzer.h" void ScreenMenu::updateLastActivity() { mLastActivity = getCurrentTime(); } void ScreenMenu::printExposureTime() { getDisplay()->setCursor(0, 1); printTime(ExposureTime); } void ScreenMenu::printMenuCursor() { getDisplay()->setCursor(0, 0); getDisplay()->write(mSelected == 0 ? (byte)0 : ' '); getDisplay()->setCursor(9, 0); getDisplay()->write(mSelected == 1 ? (byte)0 : ' '); } void ScreenMenu::onShow() { updateLastActivity(); mSelected = 0; getDisplay()->setCursor(0, 0); getDisplay()->print(" Start Reset "); printMenuCursor(); printExposureTime(); } void ScreenMenu::onHide() { } void ScreenMenu::onButton() { buzzClick(); switch (mSelected) { case 0: digitalWrite(PinLED, HIGH); StartExposureTimer(getCurrentTime()); getScreenManager()->show(); break; case 1: ResetExposureTime(); getScreenManager()->show(); } } void ScreenMenu::onEncoder(long lastPosition, long newPosition) { updateLastActivity(); if (newPosition > lastPosition) { if (mSelected < 1) { buzzSelect(); mSelected++; printMenuCursor(); } } else { if (mSelected > 0) { buzzSelect(); mSelected--; printMenuCursor(); } } } void ScreenMenu::onTick() { if (getCurrentTime() - mLastActivity >= MenuTimeout) getScreenManager()->show(); }