/* * 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 #include #include #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 > Pwms; typedef std::deque< std::pair, std::pmr::polymorphic_allocator< std::pair > > Gpios; Pwms pwms; Gpios gpios; FailureTermination() = delete; FailureTermination( const FailureTermination & ) = delete; FailureTermination & operator==( const FailureTermination & ) = delete; bool terminated; }; }} #endif /* SOURCE_DRIVER_SAFETY_FAILURETERMINATION_H_ */