SensESP 3.6.1-alpha
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
wifi_watchdog.h
Go to the documentation of this file.
1#ifndef SENSESP_SRC_SENSESP_SYSTEM_WIFI_WATCHDOG_H_
2#define SENSESP_SRC_SENSESP_SYSTEM_WIFI_WATCHDOG_H_
3
4#include <ReactESP.h>
5
6#include <memory>
7
12
13namespace sensesp {
14
38 public:
39 // Bound well inside what 32-bit millisecond arithmetic can hold.
40 static constexpr int kMaxTimeoutS = 7 * 24 * 3600;
41
42 static bool is_valid_timeout_s(int timeout_s) {
43 return timeout_s >= 1 && timeout_s <= kMaxTimeoutS;
44 }
45
46 WiFiWatchdog(std::shared_ptr<ValueProducer<NetworkState>> network_state,
47 int timeout_s,
48 const String& config_path = "/System/WiFi Watchdog");
49 virtual ~WiFiWatchdog();
50
51 virtual bool to_json(JsonObject& root) override;
52 virtual bool from_json(const JsonObject& config) override;
53
54 protected:
56 void poll();
57 uint32_t timeout_ms() const {
58 return static_cast<uint32_t>(timeout_s_) * 1000;
59 }
60
62 std::shared_ptr<ValueProducer<NetworkState>> network_state_;
64 reactesp::RepeatEvent* poll_event_ = nullptr;
65 reactesp::DelayEvent* restart_event_ = nullptr;
67};
68
69const String ConfigSchema(const WiFiWatchdog& obj);
70
71} // namespace sensesp
72
73#endif // SENSESP_SRC_SENSESP_SYSTEM_WIFI_WATCHDOG_H_
A base class for any sensor or piece of code that outputs a value for consumption elsewhere.
Restart the device after a prolonged network outage.
WiFiWatchdogPolicy policy_
static constexpr int kMaxTimeoutS
void on_network_state(NetworkState state)
uint32_t timeout_ms() const
virtual bool to_json(JsonObject &root) override
static bool is_valid_timeout_s(int timeout_s)
reactesp::RepeatEvent * poll_event_
reactesp::DelayEvent * restart_event_
virtual bool from_json(const JsonObject &config) override
std::shared_ptr< ValueProducer< NetworkState > > network_state_
Pure decision logic for the WiFi watchdog.
const String ConfigSchema(const SmartSwitchController &obj)