MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/systemic/ActionLogger.hpp
2024-06-07 11:12:56 +03:00

167 lines
4.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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_ */