fsfw/fdir/EventCorrelation.cpp

45 lines
863 B
C++
Raw Normal View History

2020-08-13 20:53:35 +02:00
#include "EventCorrelation.h"
EventCorrelation::EventCorrelation(uint32_t timeout) :
eventPending(false) {
correlationTimer.setTimeout(timeout);
}
EventCorrelation::~EventCorrelation() {
}
EventCorrelation::State EventCorrelation::doesEventCorrelate() {
if (correlationTimer.isBusy()) {
eventPending = false;
return CORRELATED;
} else {
if (eventPending) {
return ALREADY_STARTED;
} else {
eventPending = true;
correlationTimer.resetTimer();
return CORRELATION_STARTED;
}
}
}
bool EventCorrelation::isEventPending() {
if (eventPending) {
eventPending = false;
return true;
} else {
correlationTimer.resetTimer();
return false;
}
}
bool EventCorrelation::hasPendingEventTimedOut() {
if (correlationTimer.hasTimedOut()) {
bool temp = eventPending;
eventPending = false;
return temp;
} else {
return false;
}
}