fixed statemanager class

- Implemented a proper templated statemanager
- Any number of program states can be passed to the class.
This commit is contained in:
ZanzyTHEbar 2022-07-18 15:27:14 +01:00 committed by Zdzislaw Goik
parent abd1443bf5
commit fca754d2cc
4 changed files with 29 additions and 37 deletions

View File

@ -1,23 +0,0 @@
#include "StateManager.hpp"
template <class T>
StateManager<T>::StateManager() {}
template <class T>
StateManager<T>::~StateManager() {}
template <class T>
void StateManager<T>::setState(T state)
{
_current_state = state;
}
/*
* Get States
* Returns the current state of the device
*/
template <class T>
T StateManager<T>::getCurrentState()
{
return _current_state;
}

View File

@ -85,15 +85,27 @@ template <class T>
class StateManager
{
public:
StateManager();
virtual ~StateManager();
StateManager() {}
void setState(T state);
virtual ~StateManager() {}
T getCurrentState();
void setState(T state)
{
_current_state = state;
}
/*
* Get States
* Returns the current state of the device
*/
T getCurrentState()
{
return _current_state;
}
private:
static T _current_state;
T _current_state;
};
#endif // STATEMANAGER_HPP

View File

@ -15,7 +15,7 @@ void WiFiHandler::setupWifi(const char *ssid, const char *password, StateManager
{
wifi_status = WiFi.status();
Serial.print(".");
stateManager->setState(ProgramStates::DeviceStates::WiFiState_e::WiFiState_Connecting);
stateManager->setState((ProgramStates::DeviceStates::WiFiState_e::WiFiState_Connecting));
time_spent_connecting += 1600;
delay(1600);
}

View File

@ -10,17 +10,20 @@
#include <network/OTA/OTA.hpp>
const char *MDSNTrackerName = "OpenIrisTracker";
int STREAM_SERVER_PORT = 80;
int CONTROL_SERVER_PORT = 81;
StateManager<ProgramStates::DeviceStates::MDNSState_e> mdns_stateManager;
StateManager<ProgramStates::DeviceStates::WiFiState_e> wifi_stateManager;
StateManager<ProgramStates::DeviceStates::WebServerState_e> web_stateManager;
StateManager<ProgramStates::DeviceStates::CameraState_e> camera_stateManager;
StateManager<ProgramStates::DeviceStates::ButtonState_e> button_stateManager;
StateManager<ProgramStates::DeviceStates::StreamState_e> stream_stateManager;
StateManager<ProgramStates::DeviceStates::State_e> stateManager;
StateManager<ProgramStates::DeviceStates::WiFiState_e> wifiStateManager;
StateManager<ProgramStates::DeviceStates::WebServerState_e> webServerStateManager;
StateManager<ProgramStates::DeviceStates::MDNSState_e> mdnsStateManager;
StateManager<ProgramStates::DeviceStates::CameraState_e> cameraStateManager;
StateManager<ProgramStates::DeviceStates::ButtonState_e> buttonStateManager;
StateManager<ProgramStates::DeviceStates::StreamState_e> streamStateManager;
OTA ota;
LEDManager ledManager(33);
@ -35,8 +38,8 @@ void setup()
ledManager.begin();
cameraHandler.setupCamera();
WiFiHandler::setupWifi(ssid, password, &wifi_stateManager);
MDNSHandler::setupMDNS(MDSNTrackerName, &mdns_stateManager);
WiFiHandler::setupWifi(ssid, password, &wifiStateManager);
MDNSHandler::setupMDNS(MDSNTrackerName, &mdnsStateManager);
apiServer.startAPIServer();
streamServer.startStreamServer();
ledManager.onOff(true);