arduino-doughboy/src/main.cpp

100 lines
2.1 KiB
C++

#include "main.h"
DoughBoyState state = CONFIGURING;
Dough::Logger logger("MAIN");
void setup()
{
Dough::Logger::setup();
logger.log("s", "Initializing device");
auto app = Dough::App::Instance();
app->setup();
app->ui.onoffButton.onPress(handleOnoffButtonPress);
app->ui.setupButton.onPress(handleSetupButtonPress);
logger.log("s", "Initialization completed, starting device");
}
void loop()
{
auto app = Dough::App::Instance();
app->loop();
// if (state == CONFIGURING)
// {
// if (app->config.isOk())
// {
// setStateToMeasuring();
// }
// }
// else if (state == MEASURING && !app->config.isOk())
// {
// setStateToConfiguring();
// }
// else if (state == MEASURING)
// {
// app->measure();
// }
// else if (state == CALIBRATING)
// {
// delay(3000);
// setStateToPaused();
// }
// else if (state == PAUSED)
// {
// app->clearHistory();
// }
}
void handleOnoffButtonPress()
{
if (state == MEASURING)
{
setStateToPaused();
}
else if (state == PAUSED)
{
setStateToMeasuring();
}
}
void handleSetupButtonPress()
{
setStateToCalibrating();
}
void setStateToConfiguring()
{
auto app = Dough::App::Instance();
logger.log("s", "Waiting for configuration ...");
state = CONFIGURING;
app->ui.notifyWaitingForConfiguration();
app->mqtt.publish("state", "configuring");
}
void setStateToMeasuring()
{
auto app = Dough::App::Instance();
logger.log("s", "Starting measurements");
state = MEASURING;
app->ui.notifyMeasurementsActive();
app->mqtt.publish("state", "measuring");
}
void setStateToPaused()
{
auto app = Dough::App::Instance();
logger.log("s", "Pausing measurements");
state = PAUSED;
app->ui.notifyMeasurementsPaused();
app->mqtt.publish("state", "paused");
}
void setStateToCalibrating()
{
auto app = Dough::App::Instance();
logger.log("s", "Requested device calibration");
state = CALIBRATING;
app->ui.notifyCalibrating();
app->mqtt.publish("state", "calibrating");
}