Created logger, Created SVET Builder
This commit is contained in:
parent
d2d511a823
commit
374531e013
106
program/SVET/lib/SVET/Logger/Logger.cpp
Normal file
106
program/SVET/lib/SVET/Logger/Logger.cpp
Normal file
@ -0,0 +1,106 @@
|
||||
#include <Arduino.h>
|
||||
#include "Logger.h"
|
||||
|
||||
/*
|
||||
* Implementation of Logger instance. Docs on Logger.h
|
||||
* Writed on 14.06.2024 21:11
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
Logger::Logger(
|
||||
short baudRate,
|
||||
MessageType coreLogLevel,
|
||||
MessageType userLogLevel,
|
||||
bool useColor) : CoreLogLevel{coreLogLevel}, UserLogLevel{userLogLevel}, UseColor{useColor}
|
||||
{
|
||||
if (coreLogLevel == NONE && userLogLevel == NONE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Serial.begin(baudRate);
|
||||
}
|
||||
|
||||
Logger::~Logger()
|
||||
{
|
||||
Serial.end();
|
||||
}
|
||||
|
||||
const char *Logger::messageTypeToString(MessageType messageType)
|
||||
{
|
||||
switch (messageType)
|
||||
{
|
||||
case MessageType::INFO:
|
||||
return "INFO";
|
||||
case MessageType::WARN:
|
||||
return "WARN";
|
||||
case MessageType::ERROR:
|
||||
return "ERROR";
|
||||
case MessageType::NONE:
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
std::string Logger::getMessage(MessageType messageType, char *text, char *initiator)
|
||||
{
|
||||
std::string output;
|
||||
output += "[";
|
||||
output += messageTypeToString(messageType);
|
||||
output += "]";
|
||||
if (initiator != nullptr)
|
||||
{
|
||||
output += ' ';
|
||||
output += initiator;
|
||||
}
|
||||
output += ": ";
|
||||
output += text;
|
||||
return output;
|
||||
}
|
||||
|
||||
void Logger::Info(char *data, char *initiator)
|
||||
{
|
||||
// TODO: check core and user level
|
||||
if (UseColor)
|
||||
{
|
||||
Serial.write(27);
|
||||
Serial.print("[37m"); // White color
|
||||
}
|
||||
Serial.println(getMessage(MessageType::INFO, data, initiator).c_str());
|
||||
if (UseColor)
|
||||
{
|
||||
Serial.write(27);
|
||||
Serial.print("[37m");
|
||||
}
|
||||
}
|
||||
|
||||
void Logger::Warn(char *data, char *initiator)
|
||||
{
|
||||
// TODO: check core and user level
|
||||
if (UseColor)
|
||||
{
|
||||
Serial.write(27);
|
||||
Serial.print("[33m"); // Orange color
|
||||
}
|
||||
Serial.println(getMessage(MessageType::WARN, data, initiator).c_str());
|
||||
if (UseColor)
|
||||
{
|
||||
Serial.write(27);
|
||||
Serial.print("[37m");
|
||||
}
|
||||
}
|
||||
|
||||
void Logger::Error(char *data, char *initiator)
|
||||
{
|
||||
// TODO: check core and user level
|
||||
if (UseColor)
|
||||
{
|
||||
Serial.write(27);
|
||||
Serial.print("[31m"); // Red color
|
||||
}
|
||||
Serial.println(getMessage(MessageType::ERROR, data, initiator).c_str());
|
||||
if (UseColor)
|
||||
{
|
||||
Serial.write(27);
|
||||
Serial.print("[37m");
|
||||
}
|
||||
}
|
56
program/SVET/lib/SVET/Logger/Logger.h
Normal file
56
program/SVET/lib/SVET/Logger/Logger.h
Normal file
@ -0,0 +1,56 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
/*
|
||||
* Definition of Logger instance.
|
||||
* Writed on 14.06.2024 21:11
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
// Next briefs added for set logger statuses, not explaining logger work!
|
||||
/// @brief Type of messages for logger
|
||||
enum MessageType
|
||||
{
|
||||
/// @brief For info, warn and error messages (default)
|
||||
INFO,
|
||||
/// @brief For warn and error messages
|
||||
WARN,
|
||||
/// @brief For only error messages
|
||||
ERROR,
|
||||
/// @brief For disable logger
|
||||
NONE
|
||||
};
|
||||
|
||||
/// @brief Logger instance for messages on Serial port
|
||||
class Logger
|
||||
{
|
||||
private:
|
||||
const MessageType CoreLogLevel;
|
||||
const MessageType UserLogLevel;
|
||||
const bool UseColor;
|
||||
|
||||
const char *messageTypeToString(MessageType messageType);
|
||||
std::string getMessage(MessageType messageType, char *text, char *initiator);
|
||||
|
||||
public:
|
||||
/// @brief Create instance of logger
|
||||
/// @param baudRate Speed of Serial port
|
||||
/// @param coreLogLevel LogLevel for Core (if userLogLevel and coreLogLevel equals NONE, the serial connection will not start)
|
||||
/// @param userLogLevel LogLevel for user (if userLogLevel and coreLogLevel equals NONE, the serial connection will not start)
|
||||
/// @param useColor Send messages with color ESCapes on serial monitor
|
||||
Logger(short baudRate, MessageType coreLogLevel, MessageType userLogLevel, bool useColor);
|
||||
~Logger();
|
||||
/// @brief Log information
|
||||
/// @param data Message. Example: "Hello world!"
|
||||
/// @param initiator Name of initiator. Example: "main.cpp"
|
||||
void Info(char *data, char *initiator = nullptr);
|
||||
|
||||
/// @brief Log Warning
|
||||
/// @param data Message. Example: "Some happened"
|
||||
/// @param initiator Name of initiator. Example: "main.cpp"
|
||||
void Warn(char *data, char *initiator = nullptr);
|
||||
|
||||
/// @brief Log Error
|
||||
/// @param data Message. Example: "Error occured"
|
||||
/// @param initiator Name of initiator. Example: "main.cpp"
|
||||
void Error(char *data, char *initiator = nullptr);
|
||||
};
|
27
program/SVET/lib/SVET/SVET.cpp
Normal file
27
program/SVET/lib/SVET/SVET.cpp
Normal file
@ -0,0 +1,27 @@
|
||||
#include "SVET.h"
|
||||
/*
|
||||
* Implementation of SVET. Docs in SVET.h
|
||||
* Writed on 14.06.2024 21:56
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
SVET::SVET(SVETBuilder *builder)
|
||||
{
|
||||
this->Builder = builder;
|
||||
}
|
||||
|
||||
bool SVET::Start()
|
||||
{
|
||||
// Setup logger
|
||||
auto loggerOptions = &Builder->BuildLoggerOptions;
|
||||
this->SLogger = std::make_unique<Logger>(loggerOptions->BaudRate,
|
||||
loggerOptions->CoreLoggerLevel,
|
||||
loggerOptions->UserLoggerLevel);
|
||||
|
||||
delete this->Builder; // nullptr to Builder
|
||||
this->Builder = nullptr;
|
||||
return true;
|
||||
}
|
||||
void SVET::Loop()
|
||||
{
|
||||
}
|
26
program/SVET/lib/SVET/SVET.h
Normal file
26
program/SVET/lib/SVET/SVET.h
Normal file
@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
#include "SVETBuilder/SVETBuilder.h"
|
||||
#include <memory>
|
||||
|
||||
/*
|
||||
* Definition of SVET.
|
||||
* Writed on 14.06.2024 21:56
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
class SVET
|
||||
{
|
||||
/// @brief Builder for SVET, exists only on start
|
||||
SVETBuilder *Builder;
|
||||
|
||||
public:
|
||||
std::unique_ptr<Logger> SLogger;
|
||||
/// @brief Method that must be included to setup() on main.cpp
|
||||
/// @return true if SVET was started
|
||||
bool Start();
|
||||
/// @brief Method that must be included to loop() on main.cpp
|
||||
void Loop();
|
||||
/// @brief Create new instance of SVET
|
||||
/// @param builder Builder of SVET
|
||||
SVET(SVETBuilder *builder);
|
||||
};
|
18
program/SVET/lib/SVET/SVETBuilder/SVETBuider.cpp
Normal file
18
program/SVET/lib/SVET/SVETBuilder/SVETBuider.cpp
Normal file
@ -0,0 +1,18 @@
|
||||
#include "SVETBuilder.h"
|
||||
|
||||
/*
|
||||
* Implementation of SVETBuilder. Docs in SVETBuilder.h
|
||||
* Writed on 14.06.2024 21:29
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
SVETBuilder *SVETBuilder::Setup()
|
||||
{
|
||||
return new SVETBuilder();
|
||||
}
|
||||
|
||||
SVETBuilder *SVETBuilder::SetLogger(LoggerOptions options)
|
||||
{
|
||||
this->BuildLoggerOptions = options;
|
||||
return this;
|
||||
}
|
28
program/SVET/lib/SVET/SVETBuilder/SVETBuilder.h
Normal file
28
program/SVET/lib/SVET/SVETBuilder/SVETBuilder.h
Normal file
@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
#include "options/LoggerOptions/LoggerOptions.h"
|
||||
#include <memory>
|
||||
|
||||
/*
|
||||
* Definition of SVETBuilder.
|
||||
* Writed on 14.06.2024 21:29
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
/// @brief Builder for SVET Framework
|
||||
class SVETBuilder
|
||||
{
|
||||
friend class SVET;
|
||||
|
||||
private:
|
||||
LoggerOptions BuildLoggerOptions;
|
||||
|
||||
public:
|
||||
/// @brief Setup SVET using SVETBuilder
|
||||
/// @return Builder for setup
|
||||
static SVETBuilder *Setup();
|
||||
|
||||
/// @brief Set Logger Parameters
|
||||
/// @param options Options of logging
|
||||
/// @return Builder for setup
|
||||
SVETBuilder *SetLogger(LoggerOptions options);
|
||||
};
|
@ -0,0 +1,19 @@
|
||||
#include "LoggerOptions.h"
|
||||
|
||||
/*
|
||||
* Implementation of Logger Options. Docs on LoggerOptions.h
|
||||
* Writed on 14.06.2024 21:29
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
LoggerOptions::LoggerOptions(
|
||||
MessageType coreLoggerLevel,
|
||||
MessageType userLoggerLevel,
|
||||
bool useColor,
|
||||
short baudRate)
|
||||
{
|
||||
this->CoreLoggerLevel = coreLoggerLevel;
|
||||
this->UserLoggerLevel = userLoggerLevel;
|
||||
this->UseColor = useColor;
|
||||
this->BaudRate = baudRate;
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
#include <Logger/Logger.h>
|
||||
|
||||
/*
|
||||
* Definition of Logger Options.
|
||||
* Writed on 14.06.2024 21:21
|
||||
* By Lisoveliy
|
||||
*/
|
||||
|
||||
/// @brief Logger Options
|
||||
class LoggerOptions
|
||||
{
|
||||
public:
|
||||
MessageType CoreLoggerLevel;
|
||||
MessageType UserLoggerLevel;
|
||||
bool UseColor;
|
||||
short BaudRate;
|
||||
/// @brief Setup Logger Options
|
||||
/// @param coreLoggerLevel Level of core logging
|
||||
/// @param userLoggerLevel Level of user logging
|
||||
/// @param useColor Use color on serial monitor
|
||||
/// @param baudRate Speed of serial port
|
||||
LoggerOptions(
|
||||
MessageType coreLoggerLevel = INFO,
|
||||
MessageType userLoggerLevel = INFO,
|
||||
bool useColor = false,
|
||||
short baudRate = 19200);
|
||||
LoggerOptions(LoggerOptions &) = delete;
|
||||
};
|
@ -14,3 +14,4 @@ board = nodemcuv2
|
||||
framework = arduino
|
||||
monitor_rts = 0
|
||||
upload_speed = 378000
|
||||
monitor_speed = 19200
|
@ -1,14 +1,23 @@
|
||||
#include <Arduino.h>
|
||||
#include <memory>
|
||||
#include "SVETBuilder/SVETBuilder.h"
|
||||
#include "SVET.h"
|
||||
|
||||
std::unique_ptr<SVETCore> core;
|
||||
void setup() {
|
||||
bool isStarted{false};
|
||||
do{
|
||||
isStarted = core->Start();
|
||||
}while (!isStarted);
|
||||
std::unique_ptr<SVET> svet;
|
||||
Logger *logger;
|
||||
void setup()
|
||||
{
|
||||
auto builder = SVETBuilder::Setup()->SetLogger(LoggerOptions());
|
||||
svet = std::make_unique<SVET>(SVET(builder));
|
||||
svet->Start();
|
||||
logger = svet->SLogger.get();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
core->Loop();
|
||||
void loop()
|
||||
{
|
||||
logger->Info("Hello", "main.cpp");
|
||||
logger->Warn("Warn asd", "main.cpp");
|
||||
logger->Error("Warferr", "main.cpp");
|
||||
delay(1000);
|
||||
svet->Loop();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user