UVControl/src/screen/countdown.cpp

73 lines
1.3 KiB
C++

#include "countdown.h"
#include "screen/menu.h"
#include "display.h"
#include "state.h"
#include "config.h"
#include "buzzer.h"
void CountdownScreen::printRemainingTime()
{
const char* time = FormatTime(ExposureTime - ((getCurrentTime() - ExposureTimerStart) / 1000));
// TODO blank out, center, etc
LCDPrintLineCentered(getDisplay(), 1, time);
}
void CountdownScreen::onShow()
{
mLastDisplayed = (uint32_t)-1;
LCDPrintLine(getDisplay(), 0, "Exposing...");
printRemainingTime();
digitalWrite(PinLED, HIGH);
}
void CountdownScreen::onHide()
{
digitalWrite(PinLED, LOW);
}
void CountdownScreen::onButton()
{
// TODO Confirmation?
Buzzer::click();
getScreenManager()->show<MenuScreen>();
}
void CountdownScreen::onEncoder(long lastPosition, long newPosition)
{
// TODO Allow adding / removing time?
}
void CountdownScreen::onTick()
{
uint32_t elapsed = (getCurrentTime() - ExposureTimerStart) / 1000;
if (elapsed >= ExposureTime)
{
getDisplay()->setCursor(0, 0);
getDisplay()->print("Done! ");
printRemainingTime();
digitalWrite(PinLED, LOW);
Buzzer::completed();
ExposureTimerStart = 0;
getScreenManager()->show<MenuScreen>();
}
else if (elapsed != mLastDisplayed)
{
printRemainingTime();
mLastDisplayed = elapsed;
}
}