#ifndef HEARTBEAT_MANAGER_H #define HEARTBEAT_MANAGER_H #include #include "config_manager.h" #include "transport_manager.h" #include "mqtt_client.h" #include "acuvim_reader.h" #include "gsm_manager.h" #include "wifi_manager.h" #include "sd_manager.h" #include "ota_manager.h" class HeartbeatManager { public: void begin(ConfigManager& config, TransportManager& transport, MqttClient& mqtt, AcuvimReader& acuvim, WifiManager& wifi, GsmManager& gsm, SdManager& sd, OtaManager& ota); void loop(); void sendNow(); uint32_t getBootCount() const { return _bootCount; } uint32_t getHeartbeatCount() const { return _heartbeatCount; } private: ConfigManager* _config; TransportManager* _transport; MqttClient* _mqtt; AcuvimReader* _acuvim; WifiManager* _wifi; GsmManager* _gsm; SdManager* _sd; OtaManager* _ota; unsigned long _lastHeartbeatMs; uint32_t _heartbeatCount; uint32_t _bootCount; bool _sentInitial; String buildPayload(); void loadBootCount(); }; #endif