From d4de1f6efb589e6adf5fc2a52b34a212500abb6a Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Fri, 15 Dec 2023 23:21:27 +0100 Subject: [PATCH] Deleted Exception in platformio config. Added ServerException (dead code). Created MainComponent singleton. --- embedded/lib/Component/MainComponent.cpp | 19 +++++++++++ embedded/lib/Component/MainComponent.hpp | 34 +++++++++++++++++++ .../lib/ServerHandler/ServerException.hpp | 22 ++++++++++++ embedded/platformio.ini | 3 +- embedded/src/main.cpp | 20 ++++------- 5 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 embedded/lib/Component/MainComponent.cpp create mode 100644 embedded/lib/Component/MainComponent.hpp create mode 100644 embedded/lib/ServerHandler/ServerException.hpp diff --git a/embedded/lib/Component/MainComponent.cpp b/embedded/lib/Component/MainComponent.cpp new file mode 100644 index 0000000..2ed38c5 --- /dev/null +++ b/embedded/lib/Component/MainComponent.cpp @@ -0,0 +1,19 @@ +#include "MainComponent.hpp" + +MainComponent::MainComponent() + : _humidity(ComponentType::Analog, PIN_A0), _led(D8, D7, 2), _dht(DHT11, D3) +{ +} + +MainComponent::~MainComponent() +{} + +void MainComponent::setup() +{ + _led.setup(); + _dht.setup(); +} + +Component& MainComponent::getHumidity() { return _humidity; } +LedComponent& MainComponent::getLed() { return _led; } +DHTComponent& MainComponent::getDHT() { return _dht; } diff --git a/embedded/lib/Component/MainComponent.hpp b/embedded/lib/Component/MainComponent.hpp new file mode 100644 index 0000000..e7dfe87 --- /dev/null +++ b/embedded/lib/Component/MainComponent.hpp @@ -0,0 +1,34 @@ +#ifndef _HEADER_COMPONENT_MAIN +#define _HEADER_COMPONENT_MAIN + +#include "Component.hpp" +#include "LedComponent.hpp" +#include "DHTComponent.hpp" + +class MainComponent { +public: + // Singleton + static MainComponent& GetInstance() + { + static MainComponent instance; + return instance; + } + // Public functions + void setup(); + Component& getHumidity(); + LedComponent& getLed(); + DHTComponent& getDHT(); +private: + // Singleton + MainComponent(); + ~MainComponent(); + MainComponent(const MainComponent&) = delete; + MainComponent& operator=(const MainComponent&) = delete; + + // Components + Component _humidity; + LedComponent _led; + DHTComponent _dht; +}; + +#endif // \ No newline at end of file diff --git a/embedded/lib/ServerHandler/ServerException.hpp b/embedded/lib/ServerHandler/ServerException.hpp new file mode 100644 index 0000000..d9564a0 --- /dev/null +++ b/embedded/lib/ServerHandler/ServerException.hpp @@ -0,0 +1,22 @@ +#ifndef _HEADER_SERVER_EXCEPTION +#define _HEADER_SERVER_EXCEPTION +#include +#include +#include "ServerException.hpp" + +class ServerException : public std::exception +{ + public: + ServerException(const char* msg, uint8_t code) + : _msg(msg), _code(code) + { + } + + uint8_t code() { return _code; } + const char* what() { return _msg; } + private: + const char* _msg; + uint8_t _code; +}; + +#endif // _HEADER_SERVER_EXCEPTION \ No newline at end of file diff --git a/embedded/platformio.ini b/embedded/platformio.ini index 45b3c04..b4fe499 100644 --- a/embedded/platformio.ini +++ b/embedded/platformio.ini @@ -11,7 +11,8 @@ [env:nodemcuv2] platform = espressif8266 board = nodemcuv2 -build_flags = -fexceptions +build_flags = + -std=c++11 framework = arduino lib_deps = tzapu/WiFiManager@^0.16.0 diff --git a/embedded/src/main.cpp b/embedded/src/main.cpp index 4dc913d..7f67a90 100644 --- a/embedded/src/main.cpp +++ b/embedded/src/main.cpp @@ -3,9 +3,7 @@ #include #include "ServerHandler.hpp" -#include "Component.hpp" -#include "LedComponent.hpp" -#include "DHTComponent.hpp" +#include "MainComponent.hpp" #include "Screen.hpp" #ifdef SSID_CLOVER @@ -15,16 +13,12 @@ const char* pswd = PSWD_CLOVER; #endif -Component humidity(ComponentType::Analog, PIN_A0); -LedComponent led(D8,D7,2); -DHTComponent airSensor(DHT11,D3); - void setup() { // Sensors/Acuators setup - led.setup(); - airSensor.setup(); + MainComponent::GetInstance().setup(); // Lights are off when powered + auto& led = MainComponent::GetInstance().getLed(); led.setColor(0,{0,0,0}); led.setColor(1,{0,0,0}); @@ -43,8 +37,6 @@ void loop() auto& serverHandler = ServerHandler::GetInstance(); auto& dataHandler = DataHandler::GetInstance(); auto& screen = Display::Screen::GetInstance(); - led.setColor(0,{32,0,0}); - led.setColor(1,{0,32,0}); // Could not connect after setup: Showing screen failure if(!serverHandler.isConnected()) @@ -71,9 +63,9 @@ void loop() // Data gathered from various sensors // 0 -> air(0), 0-300 -> dry(20), 300-700 -> humid (580), 700-950 -> water(940) - auto soilHumidityData = static_cast(std::any_cast(humidity.getValue())); - auto airTemperatureData = airSensor.getTemperature(); - auto airHumidityData = airSensor.getHumidity(); + auto soilHumidityData = static_cast(std::any_cast(MainComponent::GetInstance().getHumidity().getValue())); + auto airTemperatureData = MainComponent::GetInstance().getDHT().getTemperature(); + auto airHumidityData = MainComponent::GetInstance().getDHT().getHumidity(); // Updating the data handler dataHandler.updateSoilMoistureData(soilHumidityData);