#include "TriggerElement.h" TriggerElement::TriggerElement(long tolerance, long delay) : state(false), // TimerElement(1), triggerState(false), tolerance(tolerance), delay(delay), triggerType(DOWN), triggerTimes(0),lastDown(0),lastUp(0) { } TriggerElement::~TriggerElement() { } bool TriggerElement::getState() const { return state; } void TriggerElement::setState(bool value) { state = value; } TriggerType TriggerElement::getTriggerType() const { return triggerType; } void TriggerElement::triggerOnce() { triggerTimes++; if (state) { lastUp = triggerTimes; if (!triggerState) { if (triggerTimes - lastDown > tolerance) { triggerType = UP; triggerState = true; fireConnectors(); } } } else { lastDown = triggerTimes; if (triggerState) { if (triggerTimes - lastUp > delay) { triggerType = DOWN; triggerState = false; fireConnectors(); } } } } void TriggerElement::triggerOnce(bool ret_notused) { triggerTimes++; if (state) { lastUp = triggerTimes; if (!triggerState) { if (triggerTimes - lastDown > tolerance) { triggerType = UP; triggerState = true; } } } else { lastDown = triggerTimes; if (triggerState) { if (triggerTimes - lastUp > delay) { triggerType = DOWN; triggerState = false; } } } } bool TriggerElement::getTriggerState() const { return triggerState; } void TriggerElement::threadInitial() { lastUp = 0; lastDown = 0; triggerType = DOWN; } void TriggerElement::resetTriggerState() { //state=false; triggerState=false; triggerTimes=0; } void TriggerElement::timerFunc() { } void TriggerElement::threadClosing() { }