#ifndef TRIGGERELEMENT_H #define TRIGGERELEMENT_H #include #include #include #include enum TriggerType { UP = 0, DOWN }; class TriggerElement : public basic::PipeElement { public: TriggerElement(long tolerance = 0, long delay = 0); virtual ~TriggerElement(); bool getState() const; void setState(bool value); TriggerType getTriggerType() const; void triggerOnce(); void triggerOnce(bool); bool getTriggerState() const; private: bool state; bool triggerState; long tolerance; long delay; long lastDown; long lastUp; long triggerTimes; TriggerType triggerType; private: virtual void threadInitial() override; virtual void timerFunc(); virtual void threadClosing() override; }; #endif // TRIGGERELEMENT_H