99 void updateCommandedPwm(uint8_t commandedPwmPercent, uint32_t nowMs);
102 uint8_t lastCommandedPwmPercent_;
103 uint32_t lastPwmChangeMs_;
104 uint8_t mismatchCount_;
107 bool hasSeenPwmCommand_;
Tracks fan RPM plausibility and latches persistent fan faults.
Definition fault_monitor.h:65
FaultMonitorSnapshot evaluate(uint8_t commandedPwmPercent, uint16_t measuredRpm, uint32_t nowMs)
Evaluates fan RPM plausibility for the current PWM command.
Definition fault_monitor.cpp:34
void reset()
Clears counters and any latched fan fault.
Definition fault_monitor.cpp:14
constexpr FaultMonitorConfig kDefaultFaultMonitorConfig
Default fault-monitor timing and debounce thresholds.
Definition fault_monitor.h:52
Fault detection thresholds for fan RPM plausibility.
Definition fault_monitor.h:21
uint8_t matchCyclesRequiredForRecovery
Consecutive good samples required to clear a latched fault.
Definition fault_monitor.h:23
uint8_t mismatchCyclesRequired
Consecutive bad samples required to latch a fault.
Definition fault_monitor.h:22
uint32_t settlingTimeMs
Delay after PWM changes before plausibility is evaluated.
Definition fault_monitor.h:24
Diagnostic result from one fan fault-monitor evaluation.
Definition fault_monitor.h:35
uint8_t matchCount
Consecutive plausible sample count while recovering.
Definition fault_monitor.h:45
uint16_t toleranceRpm
Allowed absolute RPM deviation.
Definition fault_monitor.h:39
uint8_t commandedPwmPercent
Current fan PWM command in percent.
Definition fault_monitor.h:36
bool plausible
True when measured RPM is inside tolerance.
Definition fault_monitor.h:42
int16_t rpmError
Measured RPM minus expected RPM.
Definition fault_monitor.h:40
uint16_t measuredRpm
Latest measured fan speed.
Definition fault_monitor.h:37
uint32_t elapsedSincePwmChangeMs
Elapsed time since the PWM command changed.
Definition fault_monitor.h:46
uint8_t mismatchCount
Consecutive implausible sample count.
Definition fault_monitor.h:44
uint16_t expectedRpm
Expected RPM from the fan curve.
Definition fault_monitor.h:38
bool plausibilityActive
True when the PWM and settling delay allow checking.
Definition fault_monitor.h:41
bool faultLatched
True while the monitor has latched a fan fault.
Definition fault_monitor.h:43