MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/application/safety/AddFailure.hh
2024-06-07 11:12:56 +03:00

102 lines
3.8 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.

/*
* AddFailure.hh
*
* Created on: 2 мар. 2023 г.
* Author: titov
*/
#ifndef UMLIBRARY_APPLICATION_SAFETY_ADDFAILURE_HH_
#define UMLIBRARY_APPLICATION_SAFETY_ADDFAILURE_HH_
#include "../ISetupStep.hh"
#include "../../processing/failure/FailureDiagnostics.hh"
#include "../../systemic/IStatus.hh"
#include "../../units/LogicalEntities.hpp"
namespace application { namespace safety {
//!Модуль регистрирует условие для диагностики отказа в соответсвующем процессе.
/*!Модуль позволяет добавить отказ по заданному условию "condtion" с кодом отказа "failure_id".
* Отказ будет диагностироваться во время работы процесса диагностики отказов "diagnostic".
* Дополнительный статус "stored" позволяет контролировать наличие зафиксированного события отказа.
*/
struct AddFailure : public ISetupStep {
typedef processing::failure::FailureDiagnostics FD;
FD * diagnostic = nullptr;
systemic::IStatus * failure_status = nullptr;
struct Links {
Environment::StatusId condition; //!<Условие возникновения отказа.
Environment::Id diagnostic; //!<Процесс диагностики отказов.
Environment::StatusId stored; //!<Состояние отказа.
};
struct Setting {
units::ErrorCode failure_id; //!<Идентификатор отказа.
};
bool input( Environment & env );
void build( Environment & env );
const Links & links;
const Setting & setting;
AddFailure( const Links & links, const Setting & setting ) : links(links), setting(setting) {}
};
}
}
#include "../../systemic/IFunctor.hh"
//with reset
namespace application { namespace safety {
//!Модуль регистрирует условие для диагностики отказа в соответсвующем процессе.
/*!Модуль позволяет добавить отказ по заданному условию "condtion" с кодом отказа "failure_id".
* Отказ будет диагностироваться во время работы процесса диагностики отказов "diagnostic".
* Дополнительный статус "stored" позволяет контролировать наличие зафиксированного события отказа.
* Дополнительно модуль позволяет задать условие сброса отказа, которое будет проверенно в момент сброса.
*/
struct AddFailureWithReset : public ISetupStep {
typedef processing::failure::FailureDiagnostics FD;
FD * diagnostic = nullptr;
systemic::IStatus * failure_status = nullptr;
typedef systemic::IFunctor<bool> ResetFunction;
ResetFunction * reset = nullptr;
struct Links {
Environment::StatusId condition; //!<Условие возникновения отказа.
Environment::Id reset; //!<Функция сборса отказа.
Environment::Id diagnostic; //!<Процесс диагностики отказов.
Environment::StatusId stored; //!<Состояние отказа.
};
struct Setting {
units::ErrorCode failure_id; //!<Идентификатор отказа.
};
bool input( Environment & env );
void build( Environment & env );
const Links & links;
const Setting & setting;
AddFailureWithReset( const Links & links, const Setting & setting ) : links(links), setting(setting) {}
};
}
}
#endif /* UMLIBRARY_APPLICATION_SAFETY_ADDFAILURE_HH_ */