diff --git a/src/boards/Groundstation/Automated/Leds/Leds.cpp b/src/boards/Groundstation/Automated/Leds/Leds.cpp index ca775eb36398b4e1a30ce6c3791a5adeb9af876a..95a9f13efaf05ffd5dd84e597227648684512195 100644 --- a/src/boards/Groundstation/Automated/Leds/Leds.cpp +++ b/src/boards/Groundstation/Automated/Leds/Leds.cpp @@ -30,6 +30,7 @@ namespace Antennas Leds::Leds(TaskScheduler* scheduler) : scheduler(scheduler) { leds_state.fill(LedState::OFF); + led_toggles.fill(false); led_steps.fill(0); } @@ -54,7 +55,7 @@ void Leds::update() LedState state; LedColor color; - for (size_t i = 0; i < leds_state.size(); i++) + for (uint8_t i = 0; i < leds_state.size(); i++) { state = leds_state[i]; color = static_cast<LedColor>(i); @@ -62,7 +63,7 @@ void Leds::update() switch (state) { case LedState::BLINK_SLOW: - if (led_steps[i]++ == 1) + if (led_steps[i]++ >= 1) { ledToggle(color); led_steps[i] = 0; @@ -109,7 +110,7 @@ void Leds::endlessBlink(LedColor color) void Leds::ledToggle(LedColor color) { - size_t i = static_cast<size_t>(color); + uint8_t i = static_cast<uint8_t>(color); led_toggles[i] ? ledOn(color) : ledOff(color); led_toggles[i] = !led_toggles[i]; } @@ -131,22 +132,24 @@ void Leds::ledOn(LedColor color) case LedColor::GREEN: miosix::led1On(); break; + case LedColor::BLUE: + break; } #else switch (color) { case LedColor::RED: - miosix::ledOn(); + miosix::led3On(); break; - case LedColor::YELLOW: + case LedColor::BLUE: miosix::led2On(); break; - case LedColor::ORANGE: - miosix::led3On(); - break; case LedColor::GREEN: miosix::led1On(); break; + case LedColor::ORANGE: + case LedColor::YELLOW: + break; } #endif } @@ -168,22 +171,24 @@ void Leds::ledOff(LedColor color) case LedColor::GREEN: miosix::led1Off(); break; + case LedColor::BLUE: + break; } #else switch (color) { case LedColor::RED: - miosix::ledOff(); + miosix::led3Off(); break; - case LedColor::YELLOW: + case LedColor::BLUE: miosix::led2Off(); break; - case LedColor::ORANGE: - miosix::led3Off(); - break; case LedColor::GREEN: miosix::led1Off(); break; + case LedColor::ORANGE: + case LedColor::YELLOW: + break; } #endif } diff --git a/src/boards/Groundstation/Automated/Leds/Leds.h b/src/boards/Groundstation/Automated/Leds/Leds.h index 1c81ea9f2c04f2278a411b5ea82d47c181578cb7..3d51048195e0108fb0583da78dcbaf0aad9dab7f 100644 --- a/src/boards/Groundstation/Automated/Leds/Leds.h +++ b/src/boards/Groundstation/Automated/Leds/Leds.h @@ -40,6 +40,7 @@ enum class LedColor : uint8_t RED = 0, YELLOW, ORANGE, + BLUE, GREEN }; @@ -110,11 +111,11 @@ private: // scheduler to run the update blink function Boardcore::TaskScheduler* scheduler; // toggles to allow led to blink - std::array<bool, 4> led_toggles; + std::array<bool, 5> led_toggles; // counter to keep track of slow blink - std::array<uint32_t, 4> led_steps; + std::array<uint32_t, 5> led_steps; // state of the leds - std::array<LedState, 4> leds_state; + std::array<LedState, 5> leds_state; }; } // namespace Antennas