56 lines
1.4 KiB
C++
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_ */
|