//================================================================================================ /// @file LoggerComponent.hpp /// /// @brief Defines a GUI component to draw log output. /// @author Adrian Del Grosso /// /// @copyright 2023 Adrian Del Grosso //================================================================================================ #ifndef LOGGER_COMPONENT_HPP #define LOGGER_COMPONENT_HPP #include "isobus/isobus/can_stack_logger.hpp" #include "isobus/isobus/isobus_virtual_terminal_objects.hpp" #include "isobus/isobus/isobus_virtual_terminal_server_managed_working_set.hpp" #include "JuceHeader.h" /// @brief Defines a GUI component that will draw log info sunk from the stack class LoggerComponent : public Component , public FileLogger , public isobus::CANStackLogger { public: LoggerComponent(); void paint(Graphics &g) override; void sink_CAN_stack_log(LoggingLevel level, const std::string &logText) override; private: struct LogData { String logText; isobus::CANStackLogger::LoggingLevel logLevel; }; static constexpr std::size_t MAX_NUMBER_MESSAGES = 3000; std::deque loggedMessages; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(LoggerComponent) }; #endif // LOGGER_COMPONENT_HPP