#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() {
|
|
}
|