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_ */
|