From 4c22639015b5227c08a3ce7fd45e533b28248c33 Mon Sep 17 00:00:00 2001 From: Federico Lolli <federico.lolli@skywarder.eu> Date: Sun, 12 May 2024 15:01:01 +0200 Subject: [PATCH] [ARP] Fix cppcheck --- .../Groundstation/Automated/Leds/Leds.cpp | 10 ++++++---- .../Groundstation/Automated/Leds/Leds.h | 19 ++++++++++--------- .../Automated/SMController/SMController.h | 2 +- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/boards/Groundstation/Automated/Leds/Leds.cpp b/src/boards/Groundstation/Automated/Leds/Leds.cpp index e01d49c24..80d82cd63 100644 --- a/src/boards/Groundstation/Automated/Leds/Leds.cpp +++ b/src/boards/Groundstation/Automated/Leds/Leds.cpp @@ -33,10 +33,12 @@ namespace Antennas Leds::Leds(TaskScheduler* scheduler) : scheduler(scheduler) { - *led_ref(LedColor::RED) = LedState::OFF; - *led_ref(LedColor::YELLOW) = LedState::OFF; - *led_ref(LedColor::ORANGE) = LedState::OFF; - *led_ref(LedColor::GREEN) = LedState::OFF; + for (size_t i = 0; i < led_states.size(); i++) + { + led_states[i] = LedState::OFF; + led_mutexes[i] = make_unique<mutex>(); + led_cvs[i] = make_unique<condition_variable>(); + } } bool Leds::start() diff --git a/src/boards/Groundstation/Automated/Leds/Leds.h b/src/boards/Groundstation/Automated/Leds/Leds.h index f1f2d358d..a2e1da63f 100644 --- a/src/boards/Groundstation/Automated/Leds/Leds.h +++ b/src/boards/Groundstation/Automated/Leds/Leds.h @@ -24,6 +24,7 @@ #include <scheduler/TaskScheduler.h> +#include <array> #include <condition_variable> #include <map> #include <mutex> @@ -47,7 +48,7 @@ enum class LedColor : uint8_t class Leds : public Boardcore::Module { public: - Leds(Boardcore::TaskScheduler* scheduler); + explicit Leds(Boardcore::TaskScheduler* scheduler); /** * @brief Start the blinking LED thread @@ -75,9 +76,9 @@ public: void endless_blink(LedColor color); protected: - enum class LedState + enum class LedState : uint8_t { - OFF, + OFF = 0, ON, BLINKING }; @@ -88,23 +89,23 @@ protected: LedState* led_ref(LedColor color) { - return &leds[static_cast<uint8_t>(color)]; + return &led_states[static_cast<uint8_t>(color)]; } std::mutex* mutex_ref(LedColor color) { - return &led_mutex[static_cast<uint8_t>(color)]; + return led_mutexes[static_cast<uint8_t>(color)].get(); } std::condition_variable* cv_ref(LedColor color) { - return &cv[static_cast<uint8_t>(color)]; + return led_cvs[static_cast<uint8_t>(color)].get(); } Boardcore::TaskScheduler* scheduler; - LedState leds[4]; - std::mutex led_mutex[4]; - std::condition_variable cv[4]; + std::array<LedState, 4> led_states; + std::array<unique_ptr<std::mutex>, 4> led_mutexes; + std::array<unique_ptr<std::condition_variable>, 4> led_cvs; }; } // namespace Antennas diff --git a/src/boards/Groundstation/Automated/SMController/SMController.h b/src/boards/Groundstation/Automated/SMController/SMController.h index b7d1b6407..5eb7dcd69 100644 --- a/src/boards/Groundstation/Automated/SMController/SMController.h +++ b/src/boards/Groundstation/Automated/SMController/SMController.h @@ -42,7 +42,7 @@ class SMController : public Boardcore::Module, public Boardcore::HSM<SMController> { public: - SMController(Boardcore::TaskScheduler* scheduler); + explicit SMController(Boardcore::TaskScheduler* scheduler); // FSM States -- GitLab