fsfw/src/fsfw/fdir/FaultCounter.h

43 lines
1.2 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:
2022-06-06 11:55:42 +02:00
enum class ParameterIds { FAILURE_THRESHOLD, FAULT_COUNT, TIMEOUT };
2022-06-05 12:52:55 +02:00
2022-02-02 10:29:30 +01:00
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-06-06 11:55:42 +02:00
virtual ReturnValue_t getParameter(uint8_t domainId, uint8_t uniqueId,
ParameterWrapper *parameterWrapper,
const ParameterWrapper *newValues = nullptr,
uint16_t startAtIndex = 0);
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_ */