fsfw/fdir/FaultCounter.h

39 lines
986 B
C++

#ifndef FRAMEWORK_FDIR_FAULTCOUNTER_H_
#define FRAMEWORK_FDIR_FAULTCOUNTER_H_
#include "../parameters/HasParametersIF.h"
#include "../timemanager/Countdown.h"
class FaultCounter: public HasParametersIF {
public:
FaultCounter();
FaultCounter(uint32_t failureThreshold, uint32_t decrementAfterMs,
uint8_t setParameterDomain = 0);
virtual ~FaultCounter();
bool incrementAndCheck(uint32_t amount = 1);
void increment(uint32_t amount = 1);
bool checkForDecrement();
bool aboveThreshold();
void clear();
void setFailureThreshold(uint32_t failureThreshold);
void setFaultDecrementTimeMs(uint32_t timeMs);
virtual ReturnValue_t getParameter(uint8_t domainId, uint8_t uniqueId,
ParameterWrapper *parameterWrapper,
const ParameterWrapper *newValues, uint16_t startAtIndex);
void setParameterDomain(uint8_t domain);
private:
uint8_t parameterDomain;
Countdown timer;
uint32_t faultCount;
uint32_t failureThreshold;
};
#endif /* FRAMEWORK_FDIR_FAULTCOUNTER_H_ */