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;
|
||||||
|
};
|
@ -13,4 +13,5 @@ platform = espressif8266
|
|||||||
board = nodemcuv2
|
board = nodemcuv2
|
||||||
framework = arduino
|
framework = arduino
|
||||||
monitor_rts = 0
|
monitor_rts = 0
|
||||||
upload_speed = 378000
|
upload_speed = 378000
|
||||||
|
monitor_speed = 19200
|
@ -1,14 +1,23 @@
|
|||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include "SVETBuilder/SVETBuilder.h"
|
||||||
|
#include "SVET.h"
|
||||||
|
|
||||||
std::unique_ptr<SVETCore> core;
|
std::unique_ptr<SVET> svet;
|
||||||
void setup() {
|
Logger *logger;
|
||||||
bool isStarted{false};
|
void setup()
|
||||||
do{
|
{
|
||||||
isStarted = core->Start();
|
auto builder = SVETBuilder::Setup()->SetLogger(LoggerOptions());
|
||||||
}while (!isStarted);
|
svet = std::make_unique<SVET>(SVET(builder));
|
||||||
|
svet->Start();
|
||||||
|
logger = svet->SLogger.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop()
|
||||||
core->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