MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/safety/FailureTermination.hh

56 lines
1.4 KiB
C++

/*
* FailureTermination.h
*
* Created on: 4 îêò. 2019 ã.
* Author: titov
*/
#ifndef SOURCE_DRIVER_SAFETY_FAILURETERMINATION_H_
#define SOURCE_DRIVER_SAFETY_FAILURETERMINATION_H_
#include "../../peripheral/IGpioOverride.hh"
#include "../../peripheral/IPwmOverride.hh"
#include <memory_resource>
#include <utility>
#include <deque>
#include "ITermination.hh"
namespace driver { namespace safety {
class FailureTermination : public ITermination {
public:
FailureTermination( std::pmr::memory_resource * memory );
void addTerminate( peripheral::IPwmOverride * );
void addTerminate( peripheral::IGpioOverride *, peripheral::IGpioOverride::TOutValue );
void terminate();
void recovery();
bool isTerminated() const;
~FailureTermination() noexcept {};
private:
typedef std::deque< peripheral::IPwmOverride *, std::pmr::polymorphic_allocator<peripheral::IPwmOverride *> > Pwms;
typedef std::deque<
std::pair<peripheral::IGpioOverride *, peripheral::IGpioOverride::TOutValue>,
std::pmr::polymorphic_allocator< std::pair<peripheral::IGpioOverride *, peripheral::IGpioOverride::TOutValue> >
> Gpios;
Pwms pwms;
Gpios gpios;
FailureTermination() = delete;
FailureTermination( const FailureTermination & ) = delete;
FailureTermination & operator==( const FailureTermination & ) = delete;
bool terminated;
};
}}
#endif /* SOURCE_DRIVER_SAFETY_FAILURETERMINATION_H_ */