Files
ESP-VI/AgIsoVirtualTerminal/include/LoggerComponent.hpp
2025-03-09 15:25:03 -05:00

43 lines
1.2 KiB
C++

//================================================================================================
/// @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<LogData> loggedMessages;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(LoggerComponent)
};
#endif // LOGGER_COMPONENT_HPP