Progress towards a better application FSM, testing
This commit is contained in:
23
firmware/main_mcu/src/ButtonApplication.cpp
Normal file
23
firmware/main_mcu/src/ButtonApplication.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "Fsm.h"
|
||||
|
||||
class ButtonApplication : Fsm {
|
||||
|
||||
class ReadConfigValuesState : public State {
|
||||
public:
|
||||
ReadConfigValuesState(ButtonApplication &fsm) :
|
||||
fsm(fsm)
|
||||
{}
|
||||
|
||||
void onEntry() override {
|
||||
|
||||
}
|
||||
|
||||
void step() override {
|
||||
|
||||
}
|
||||
|
||||
private:
|
||||
ButtonApplication &fsm;
|
||||
} read_config_values_state {*this};
|
||||
|
||||
};
|
||||
@@ -3,9 +3,12 @@
|
||||
#include <PubSubClient.h>
|
||||
#include <Wire.h>
|
||||
|
||||
#include "ArduinoGpio.h"
|
||||
#include "config.h"
|
||||
#include "mqtt.h"
|
||||
#include "util.h"
|
||||
#include "DebounceFsm.h"
|
||||
#include "ArduinoClock.h"
|
||||
|
||||
#define BTN_PIN D0
|
||||
#define RED_LED_PIN 4
|
||||
@@ -17,6 +20,10 @@
|
||||
static WiFiClient wifiClient;
|
||||
static PubSubClient mqttClient;
|
||||
|
||||
static ArduinoClock main_clock;
|
||||
static ArduinoGpioInput button_input(BTN_PIN);
|
||||
static DebounceFsm button_fsm(main_clock, button_input, 50, true, [](){}, [](){});
|
||||
|
||||
void blink(int pin, int times, int onMillis, int offMillis) {
|
||||
// for (int i = 0; i < times; i++) {
|
||||
// digitalWrite(pin, HIGH);
|
||||
@@ -111,6 +118,23 @@ void setup() {
|
||||
ESP.deepSleep(0, RFMode::RF_NO_CAL);
|
||||
}
|
||||
|
||||
enum ApplicationState {
|
||||
READ_CONFIG_VALUES,
|
||||
INIT_WIFI_CONFIG_SERVER,
|
||||
INIT_WIFI_CLIENT,
|
||||
INIT_MQTT,
|
||||
RUN_WIFI_CONFIG_SERVER,
|
||||
READ_SENSOR,
|
||||
PUBLISH_MQTT,
|
||||
SLEEP,
|
||||
} app_state;
|
||||
|
||||
enum SensorState {
|
||||
INIT_BUS,
|
||||
REQUESTING_STATUS,
|
||||
DONE,
|
||||
} sensor_state;
|
||||
|
||||
void loop() {
|
||||
|
||||
}
|
||||
|
||||
0
firmware/main_mcu/src/timer.h
Normal file
0
firmware/main_mcu/src/timer.h
Normal file
Reference in New Issue
Block a user