MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/processing/failure/FailureDiagnostics.hh
2024-06-07 11:12:56 +03:00

67 lines
1.6 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.

/*
* FailureDiagnostics.h
*
* Created on: 8 окт. 2019 г.
* Author: titov
*/
#ifndef SOURCE_PROCESSING_FAILURE_FAILUREDIAGNOSTICS_H_
#define SOURCE_PROCESSING_FAILURE_FAILUREDIAGNOSTICS_H_
#include "../../systemic/IProcess.hh"
#include "../../systemic/IStatus.hh"
#include "../../systemic/IFunctor.hh"
#include "FailureInterface.hh"
#include "FailureManagerInterface.hh"
#include <memory_resource>
#include <deque>
#include <mutex>
namespace processing { namespace failure {
class FailureDiagnostics : public systemic::IProcess {
public:
typedef systemic::IFunctor<bool> IFailureReset;
typedef systemic::IValue<bool> IFailureCheck;
FailureDiagnostics( FailureManagerInterface &, std::pmr::memory_resource * memory );
const FaliureInterface & addFailure( IFailureCheck & failure, FailureId id, IFailureReset & reset = getDefaultReset() );
void process();
private:
struct Failure : public FaliureInterface {
IFailureCheck * failure = nullptr;
IFailureReset * reset = nullptr;
bool failure_stored;
bool failure_actual;
bool failure_ticket;
Failure( systemic::IStatus *, IFailureReset * );
bool check();
bool stored() const;
bool actual() const;
bool acknowledge();
bool ticket();
};
typedef std::deque<Failure, std::pmr::polymorphic_allocator<Failure> > Failures;
FailureManagerInterface & manager;
Failures failures;
std::mutex failures_lock;
static IFailureReset & getDefaultReset();
};
}}
#endif /* SOURCE_PROCESSING_FAILURE_FAILUREDIAGNOSTICS_H_ */