fsfw/src/fsfw/fdir/FaultCounter.h

40 lines
1.0 KiB
C
Raw Normal View History

2021-07-13 20:22:54 +02:00
#ifndef FSFW_FDIR_FAULTCOUNTER_H_
#define FSFW_FDIR_FAULTCOUNTER_H_
2021-07-13 20:22:54 +02:00
#include "fsfw/parameters/HasParametersIF.h"
#include "fsfw/timemanager/Countdown.h"
2022-02-02 10:29:30 +01:00
class FaultCounter : public HasParametersIF {
public:
FaultCounter();
FaultCounter(uint32_t failureThreshold, uint32_t decrementAfterMs,
uint8_t setParameterDomain = 0);
virtual ~FaultCounter();
2022-02-02 10:29:30 +01:00
bool incrementAndCheck(uint32_t amount = 1);
2022-02-02 10:29:30 +01:00
void increment(uint32_t amount = 1);
2022-02-02 10:29:30 +01:00
bool checkForDecrement();
2022-02-02 10:29:30 +01:00
bool aboveThreshold();
2022-02-02 10:29:30 +01:00
void clear();
void setFailureThreshold(uint32_t failureThreshold);
void setFaultDecrementTimeMs(uint32_t timeMs);
2022-02-02 10:29:30 +01:00
virtual ReturnValue_t getParameter(uint8_t domainId, uint8_t uniqueId,
ParameterWrapper *parameterWrapper,
const ParameterWrapper *newValues, uint16_t startAtIndex);
2022-02-02 10:29:30 +01:00
void setParameterDomain(uint8_t domain);
private:
uint8_t parameterDomain;
Countdown timer;
uint32_t faultCount;
uint32_t failureThreshold;
};
2021-07-13 20:22:54 +02:00
#endif /* FSFW_FDIR_FAULTCOUNTER_H_ */