diff --git a/ESP/lib/src/io/LEDManager/LEDManager.cpp b/ESP/lib/src/io/LEDManager/LEDManager.cpp index c7b0051..1b2ee4b 100644 --- a/ESP/lib/src/io/LEDManager/LEDManager.cpp +++ b/ESP/lib/src/io/LEDManager/LEDManager.cpp @@ -39,13 +39,11 @@ LEDManager::ledStateMap_t LEDManager::ledStateMap = { {LEDStates_e::_Camera_Error, {1, 500}}, }; -//!TODO: Change the parameters for each LED state to be unique. +//! TODO: Change the parameters for each LED state to be unique. -LEDManager::LEDManager(byte pin, - StateManager *stateManager) : _ledPin(pin), - stateManager(stateManager), - _previousMillis(0), - _ledState(false) {} +LEDManager::LEDManager(byte pin) : _ledPin(pin), + _previousMillis(0), + _ledState(false) {} LEDManager::~LEDManager() {} @@ -60,7 +58,7 @@ void LEDManager::begin() * @details This function must be called in the main loop * */ -void LEDManager::handleLED() +void LEDManager::handleLED(StateManager *stateManager) { if (ledStateMap.find(stateManager->getCurrentState()) != ledStateMap.end()) { @@ -81,6 +79,8 @@ void LEDManager::handleLED() } log_e("LED State not found"); + stateManager->setState(LEDStates_e::_LEDOff); // Set the state to off + onOff(false); } /** @@ -99,13 +99,25 @@ void LEDManager::onOff(bool state) const * @param times number of times to blink * @param delayTime delay between each blink */ -void LEDManager::blink(int times, int delayTime) +void LEDManager::blink(StateManager *stateManager) { - for (int i = 0; i < times; i++) + + if (ledStateMap.find(stateManager->getCurrentState()) != ledStateMap.end()) { - onOff(true); - delay(delayTime); - onOff(false); - delay(delayTime); + blinkPatterns = ledStateMap[stateManager->getCurrentState()]; // Get the blink pattern for the current state + for (int i = 0; i < blinkPatterns.times; i++) + { + onOff(true); + delay(blinkPatterns.delayTime); + onOff(false); + delay(blinkPatterns.delayTime); + } + stateManager->setState(LEDStates_e::_LEDOff); // Set the state to off + onOff(false); // Turn the LED off + return; } + + log_e("LED State not found"); + stateManager->setState(LEDStates_e::_LEDOff); // Set the state to off + onOff(false); } diff --git a/ESP/lib/src/io/LEDManager/LEDManager.hpp b/ESP/lib/src/io/LEDManager/LEDManager.hpp index f2cae7b..08497c5 100644 --- a/ESP/lib/src/io/LEDManager/LEDManager.hpp +++ b/ESP/lib/src/io/LEDManager/LEDManager.hpp @@ -7,18 +7,16 @@ class LEDManager { public: - LEDManager(byte pin, - StateManager *stateManager); + LEDManager(byte pin); virtual ~LEDManager(); void begin(); - void handleLED(); + void handleLED(StateManager *stateManager); void onOff(bool state) const; - void blink(int times, int delayTime); + void blink(StateManager *stateManager); private: byte _ledPin; - StateManager *stateManager; unsigned long _previousMillis; bool _ledState;