MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/schematic/StatusTrigger.hpp

77 lines
1.8 KiB
C++
Raw Normal View History

/*
* StatusTrigger.hpp
*
* Created on: 29 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 2019 <EFBFBD>.
* Author: user
*/
#ifndef SOURCE_SCHEMATIC_STATUSTRIGGER_HPP_
#define SOURCE_SCHEMATIC_STATUSTRIGGER_HPP_
#include "../systemic/IStatus.hh"
#include "../systemic/Timer.hh"
#include "StatusConst.hpp"
#include "StatusFilter.hh"
namespace systemic { namespace detail {
class TriggeredTrue : public IStatus {
private:
IStatus & value;
mutable bool trigger;
public:
TriggeredTrue( IStatus & value ) : value(value), trigger(false) {}
operator bool() const { return trigger ? true : trigger = value; }
};
/*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> TriggeredTrueReset
* value | reset | out - 1 | out
* ---------+-----------+-----------+-----
* 0 | 0 | 0 | 0
* 1 | 0 | x | 1
* val | 1 | x | val
* x | 0 | 1 | 1
*/
//out = value <20><><EFBFBD> reset = 1
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> reset
class TriggeredTrueReset : public IStatus {
IStatus & value;
IStatus & reset;
mutable bool trigger;
public:
TriggeredTrueReset( IStatus & value, IStatus & reset ) :
value(value), reset(reset), trigger(false) {}
operator bool() const { return trigger ?
( reset ? trigger = value : true )
: trigger = value; }
};
class StatusDelay : public StatusFilter {
private:
class Status : public IStatus {
const bool b;
public:
operator bool() const { return b; }
Status(bool b) : b(b) {}
} status;
public:
StatusDelay( bool init_state ) : status(not init_state), StatusFilter(status, init_state) {}
virtual ~StatusDelay() = default;
};
}}
#endif /* SOURCE_SCHEMATIC_STATUSTRIGGER_HPP_ */