101 lines
1.5 KiB
C++
101 lines
1.5 KiB
C++
#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<ScreenCountdown>();
|
|
break;
|
|
|
|
case 1:
|
|
ResetExposureTime();
|
|
getScreenManager()->show<ScreenSetTime>();
|
|
}
|
|
}
|
|
|
|
|
|
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<ScreenSetTime>();
|
|
}
|
|
|