Enclosure files + firmware
This commit is contained in:
71
firmware/src/states/PausedState.cpp
Normal file
71
firmware/src/states/PausedState.cpp
Normal file
@@ -0,0 +1,71 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user