From 32c187042f1936c3c83bf501aa52bccd8393a9d9 Mon Sep 17 00:00:00 2001 From: Alberto Nidasio <alberto.nidasio@skywarder.eu> Date: Wed, 4 Oct 2023 16:48:21 +0200 Subject: [PATCH] Made TaskScheduler and Logger modules --- src/shared/algorithms/AirBrakes/AirBrakesPI.cpp | 5 ++++- src/shared/diagnostic/LogSink.h | 5 +---- src/shared/diagnostic/PrintLogger.cpp | 4 +++- src/shared/diagnostic/StackLogger.h | 3 ++- src/shared/logger/Logger.h | 8 +++----- src/shared/scheduler/TaskScheduler.h | 3 ++- 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/shared/algorithms/AirBrakes/AirBrakesPI.cpp b/src/shared/algorithms/AirBrakes/AirBrakesPI.cpp index 4e4f868ee..2e438d5c3 100644 --- a/src/shared/algorithms/AirBrakes/AirBrakesPI.cpp +++ b/src/shared/algorithms/AirBrakes/AirBrakesPI.cpp @@ -27,9 +27,11 @@ #include <utils/Constants.h> #include <limits> +#include <utils/ModuleManager/ModuleManager.hpp> #include "drivers/timer/TimestampTimer.h" #include "utils/Debug.h" + using namespace std; namespace Boardcore @@ -101,7 +103,8 @@ void AirBrakesPI::chooseTrajectory(TrajectoryPoint currentPosition) chosenTrajectory = &(trajectorySet.trajectories[trjIndexMin]); - Logger::getInstance().log(AirBrakesChosenTrajectory{trjIndexMin}); + ModuleManager::getInstance().get<Logger>()->log( + AirBrakesChosenTrajectory{trjIndexMin}); } TrajectoryPoint AirBrakesPI::getSetpoint(TrajectoryPoint currentPosition) diff --git a/src/shared/diagnostic/LogSink.h b/src/shared/diagnostic/LogSink.h index c06917f36..0f44ba9f6 100644 --- a/src/shared/diagnostic/LogSink.h +++ b/src/shared/diagnostic/LogSink.h @@ -88,13 +88,10 @@ protected: class FileLogSinkBuffered : public FileLogSink { public: - FileLogSinkBuffered() : logger(Logger::getInstance()) {} + FileLogSinkBuffered() {} protected: void logImpl(const std::string& l) override; - -private: - Logger& logger; }; } // namespace Boardcore diff --git a/src/shared/diagnostic/PrintLogger.cpp b/src/shared/diagnostic/PrintLogger.cpp index 0aa1c4e5b..cb3bb59f6 100644 --- a/src/shared/diagnostic/PrintLogger.cpp +++ b/src/shared/diagnostic/PrintLogger.cpp @@ -22,6 +22,8 @@ #include "PrintLogger.h" +#include <utils/ModuleManager/ModuleManager.hpp> + using miosix::Lock; namespace Boardcore @@ -75,7 +77,7 @@ void FileLogSinkBuffered::logImpl(const string& l) Lock<FastMutex> lock(mutex); LoggingString s; strncpy(s.logString, l.c_str(), MAX_LOG_STRING_SIZE - 1); - logger.log(s); + ModuleManager::getInstance().get<Logger>()->log(s); } PrintLogger PrintLogger::getChild(const string& name) diff --git a/src/shared/diagnostic/StackLogger.h b/src/shared/diagnostic/StackLogger.h index c7998375a..1c55b449f 100644 --- a/src/shared/diagnostic/StackLogger.h +++ b/src/shared/diagnostic/StackLogger.h @@ -27,6 +27,7 @@ #include <logger/Logger.h> #include <map> +#include <utils/ModuleManager/ModuleManager.hpp> #include "StackData.h" @@ -74,7 +75,7 @@ public: Lock<FastMutex> l(mutex); for (auto it = stacks.begin(); it != stacks.end(); it++) { - Logger::getInstance().log(it->second); + ModuleManager::getInstance().get<Logger>()->log(it->second); } } } diff --git a/src/shared/logger/Logger.h b/src/shared/logger/Logger.h index 088b91fe2..dd9632c9e 100644 --- a/src/shared/logger/Logger.h +++ b/src/shared/logger/Logger.h @@ -22,7 +22,6 @@ #pragma once -#include <Singleton.h> #include <miosix.h> #include <stdint.h> @@ -31,6 +30,7 @@ #include <queue> #include <string> #include <type_traits> +#include <utils/ModuleManager/ModuleManager.hpp> #include "LoggerStats.h" @@ -51,10 +51,8 @@ enum class LoggerResult /** * @brief Buffered logger. Needs to be started before it can be used. */ -class Logger : public Singleton<Logger> +class Logger : public Module { - friend class Singleton<Logger>; - public: /** * @brief Call this function to start the logger. @@ -132,9 +130,9 @@ public: return maxFilenameNumber; } -private: Logger(); +private: static std::string getFileName(int logNumber); static void packThreadLauncher(void *argv); diff --git a/src/shared/scheduler/TaskScheduler.h b/src/shared/scheduler/TaskScheduler.h index 6496eb9bf..ef8300c05 100644 --- a/src/shared/scheduler/TaskScheduler.h +++ b/src/shared/scheduler/TaskScheduler.h @@ -33,6 +33,7 @@ #include <list> #include <map> #include <queue> +#include <utils/ModuleManager/ModuleManager.hpp> #include "TaskSchedulerData.h" @@ -57,7 +58,7 @@ namespace Boardcore * TaskScheduler.add(magic_std::function, 150); * */ -class TaskScheduler : public ActiveObject +class TaskScheduler : public ActiveObject, public Module { public: using function_t = std::function<void()>; -- GitLab