24#ifndef DETERMINISTICESPASYNCWEBSERVER_HW_HEALTH_H
25#define DETERMINISTICESPASYNCWEBSERVER_HW_HEALTH_H
31#if DETWS_ENABLE_HW_HEALTH
34enum class HwRailVerdict : uint8_t
42enum class HwGpioVerdict : uint8_t
45 HW_GPIO_SHORT_GND = 1,
50enum class HwCapVerdict : uint8_t
65 uint32_t brownout_events;
81void detws_hwhealth_rail_init(HwRailMonitor *m, uint32_t nominal_mv, uint32_t warn_mv, uint32_t crit_mv);
84HwRailVerdict detws_hwhealth_rail_sample(HwRailMonitor *m, uint32_t mv);
87size_t detws_hwhealth_rail_json(
const HwRailMonitor *m,
char *out,
size_t cap);
90void detws_hwhealth_spi_init(HwSpiBackoff *s, uint32_t start_hz, uint32_t min_hz, uint32_t max_hz, uint16_t fail_trip,
94uint32_t detws_hwhealth_spi_result(HwSpiBackoff *s,
bool crc_ok);
97HwGpioVerdict detws_hwhealth_gpio_short(
bool driven_high,
bool read_high);
106HwCapVerdict detws_hwhealth_cap_leak(uint32_t measured_ms, uint32_t expected_ms, uint8_t tol_pct);
User-facing configuration for DeterministicESPAsyncWebServer.