/* * utility_seriallogger.hpp * * Created on: Apr 1, 2021 * Author: erki */ #ifndef UTILITY_INC_UTILITY_SERIALLOGGER_HPP_ #define UTILITY_INC_UTILITY_SERIALLOGGER_HPP_ #include #include #include #include "utility_ilogger.hpp" namespace Utility { template class SerialLogger : public ILogger { public: using serial_interface = T; SerialLogger() = delete; explicit SerialLogger(const serial_interface& serial) : _serial(serial) { } void log(const char* format, ...) override { std::va_list args; va_start(args, format); const std::int32_t len = vsnprintf(_buffer.data(), _buffer.size(), format, args); if (len > 0) _serial.Transmit(reinterpret_cast(_buffer.data()), len); va_end(args); } private: serial_interface _serial; std::array _buffer; }; } #endif /* UTILITY_INC_UTILITY_SERIALLOGGER_HPP_ */