71 lines
2.7 KiB
C++
71 lines
2.7 KiB
C++
#include "StateMachine.h"
|
|
#include "Controllers.h"
|
|
|
|
PausedState::PausedState() : duration(0), elapsedTime(0), pauseEnter(0) {}
|
|
|
|
void PausedState::enter()
|
|
{
|
|
Serial.println("Entering Paused State");
|
|
pauseEnter = millis(); // Record the time when the pause started
|
|
ledController.setBreath(YELLOW, -1, false, 20);
|
|
|
|
// Register state-specific handlers
|
|
inputController.onPressHandler([this]()
|
|
{
|
|
Serial.println("Paused State: Button Pressed");
|
|
|
|
// Send 'Start' webhook (resume)
|
|
networkController.sendWebhookAction("start");
|
|
|
|
// Transition back to TimerState with the stored duration and elapsed time
|
|
StateMachine::timerState.setTimer(duration, elapsedTime);
|
|
displayController.showTimerResume();
|
|
stateMachine.changeState(&StateMachine::timerState); // Transition back to Timer State
|
|
});
|
|
|
|
inputController.onDoublePressHandler([]()
|
|
{
|
|
Serial.println("Paused State: Button Double Pressed");
|
|
|
|
// Send 'Stop' webhook (canceled)
|
|
networkController.sendWebhookAction("stop");
|
|
displayController.showCancel();
|
|
stateMachine.changeState(&StateMachine::idleState); // Transition back to Idle State
|
|
});
|
|
}
|
|
|
|
void PausedState::update()
|
|
{
|
|
inputController.update();
|
|
ledController.update();
|
|
|
|
// Redraw the paused screen with remaining time
|
|
int remainingTime = (duration * 60) - elapsedTime;
|
|
displayController.drawPausedScreen(remainingTime);
|
|
|
|
unsigned long currentTime = millis();
|
|
|
|
// Check if the pause timeout has been reached
|
|
if (currentTime - pauseEnter >= (PAUSE_TIMEOUT * 60 * 1000))
|
|
{
|
|
// Timeout reached, transition to Idle State
|
|
Serial.println("Paused State: Timout");
|
|
|
|
// Send 'Stop' webhook (timeout)
|
|
networkController.sendWebhookAction("stop");
|
|
displayController.showCancel();
|
|
stateMachine.changeState(&StateMachine::idleState); // Transition back to Idle State
|
|
}
|
|
}
|
|
|
|
void PausedState::exit()
|
|
{
|
|
Serial.println("Exiting Paused State");
|
|
inputController.releaseHandlers();
|
|
}
|
|
|
|
void PausedState::setPause(int duration, unsigned long elapsedTime)
|
|
{
|
|
this->duration = duration;
|
|
this->elapsedTime = elapsedTime;
|
|
} |