MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/systemic/ActionLogger.hpp

167 lines
3.6 KiB
C++

/*
* ActionLogger.hpp
*
* Created on: 23 ÿíâ. 2022 ã.
* Author: sozonov
*/
#ifndef UMLIBRARY_SYSTEMIC_ACTIONLOGGER_HPP_
#define UMLIBRARY_SYSTEMIC_ACTIONLOGGER_HPP_
#include "ValueManager.hpp"
#include "../logging/ILoggable.hh"
#include "ISignal.hh"
#include "IStatus.hh"
#include <stdint.h>
namespace systemic
{
typedef float SignalValue; //!<Çíà÷åíèå ñèãíàëà.
typedef bool StatusValue; //!<Çíà÷åíèå ñòàòóñà.
typedef unsigned short NullMsg; //!<Çíà÷åíèå ñèãíàëà.
class SignalActionLogger : public logging::ILoggable {
public:
/**
* Ìåòîä çàïèñè ñòðóêòû â ëîã.
*/
void logging() {
ErrorMessage message;
message.signal_value = signal;
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
}
SignalActionLogger( ISignal & _signal ) : signal( _signal )
{
}
//!Îøèáêà äîñòóïà.
struct ErrorMessage {
SignalValue signal_value; //!<Çíà÷åíèå ñèãíàëà íà ìîìåíò çàïèñè.
};
private:
ISignal & signal;
};
class TwoSignalActionLogger : public logging::ILoggable {
public:
/**
* Ìåòîä çàïèñè ñòðóêòû â ëîã.
*/
void logging() {
ErrorMessage message;
message.first_signal_value = signal_f;
message.second_signal_value = signal_s;
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
}
TwoSignalActionLogger( ISignal & _signal_1, ISignal & _signal_2 ) :
signal_f( _signal_1 ), signal_s( _signal_2 )
{
}
//!Îøèáêà äîñòóïà.
struct ErrorMessage {
SignalValue first_signal_value; //!<Çíà÷åíèå ïåðâîãî ñèãíàëà íà ìîìåíò çàïèñè.
SignalValue second_signal_value; //!<Çíà÷åíèå âòîðîãî ñèãíàëà íà ìîìåíò çàïèñè.
};
private:
ISignal & signal_f;
ISignal & signal_s;
};
class StatusActionLogger : public logging::ILoggable {
public:
/**
* Ìåòîä çàïèñè ñòðóêòû â ëîã.
*/
void logging() {
ErrorMessage message;
message.status_value = status;
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
}
StatusActionLogger( IStatus & _status ) : status( _status )
{
}
//!Îøèáêà äîñòóïà.
struct ErrorMessage {
StatusValue status_value; //!<Çíà÷åíèå ñòàòóñà íà ìîìåíò çàïèñè.
};
private:
IStatus & status;
};
class BinaryDataActionLogger : public logging::ILoggable {
public:
/**
* Ìåòîä çàïèñè ñòðóêòû â ëîã.
*/
void logging() {
logger->log_error( reinterpret_cast<char *>(custom_data.first), sizeof(custom_data.second) );
}
BinaryDataActionLogger( std::pair<char *, std::size_t> _cd ) : custom_data( _cd )
{
}
//!Îøèáêà äîñòóïà.
struct ErrorMessage {
// char* bin_data; //!<Çíà÷åíèå ñèãíàëà íà ìîìåíò çàïèñè.
};
private:
std::pair<char *, std::size_t> custom_data{ nullptr, 1 };
};
class EmptyMessageActionLogger : public logging::ILoggable {
public:
/**
* Ìåòîä çàïèñè ñòðóêòû â ëîã.
*/
void logging() {
ErrorMessage message;
message.null = 0u;
logger->log_error( reinterpret_cast<char *>(&message), sizeof(message) );
}
EmptyMessageActionLogger( )
{
}
//!Îøèáêà äîñòóïà.
struct ErrorMessage {
NullMsg null; //!<Ïóñòîå ñîîáùåíèå.
};
private:
};
} /* namespace systemic */
#endif /* UMLIBRARY_SYSTEMIC_ACTIONLOGGER_HPP_ */