MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/schematic/DiscreteSwitch.hh

40 lines
1.0 KiB
C++

/*
* DiscreteSwitch.h
*
* Created on: 21 ìàÿ 2021 ã.
* Author: sozonov
*/
#ifndef UMLIBRARY_SCHEMATIC_DISCRETESWITCH_HH_
#define UMLIBRARY_SCHEMATIC_DISCRETESWITCH_H_
#include "../systemic/IFunctor.hh"
//!Êëàññ âûçîâà ôóíêöèè ïðè íàëè÷èè ðàçðåøàþùåãî ñòàòóñà.
class DiscreteSwitchLogics {
public:
bool enable; //!<Çíà÷åíèå ðàçðåøàþùåãî ñòàòóñà.
DiscreteSwitchLogics(){}
//!Âõîäíîé ñèãíàë. Ïðè âûñòàâëåííîì ðàçðåøàþùåì ñòàòóñå âûçîâ âûõîäíîãî ñèãíàëà.
void inputSignal(){if(enable) outputSignal();}
//!Âûõîäíîé ñèãíàë.
virtual void outputSignal();
};
namespace application { namespace schematic {
class DiscreteSwitchInterface : public systemic::IFunctor<void>{
public:
systemic::IFunctor<void> & output; //!<Êîëáýê âûõîäíîãî ñèãíàëà.
systemic::IStatus & enable;
DiscreteSwitchInterface(systemic::IFunctor<void> & _out, systemic::IStatus &_enable):output(_out), enable(_enable){}
virtual void operator()() {
if(enable) output();
}
};
}}
#endif /* UMLIBRARY_SCHEMATIC_DISCRETESWITCH_HH_ */