#ifndef _OTA_H #define _OTA_H #include #include #include #include "board.h" class Ota { public: Ota(); ~Ota(); bool CheckVersion(); esp_err_t Activate(); bool HasActivationChallenge() { return has_activation_challenge_; } bool HasNewVersion() { return has_new_version_; } bool HasMqttConfig() { return has_mqtt_config_; } bool HasWebsocketConfig() { return has_websocket_config_; } bool HasActivationCode() { return has_activation_code_; } bool HasServerTime() { return has_server_time_; } bool StartUpgrade(std::function callback); void MarkCurrentVersionValid(); const std::string& GetFirmwareVersion() const { return firmware_version_; } const std::string& GetCurrentVersion() const { return current_version_; } const std::string& GetActivationMessage() const { return activation_message_; } const std::string& GetActivationCode() const { return activation_code_; } std::string GetCheckVersionUrl(); private: std::string activation_message_; std::string activation_code_; bool has_new_version_ = false; bool has_mqtt_config_ = false; bool has_websocket_config_ = false; bool has_server_time_ = false; bool has_activation_code_ = false; bool has_serial_number_ = false; bool has_activation_challenge_ = false; std::string current_version_; std::string firmware_version_; std::string firmware_url_; std::string activation_challenge_; std::string serial_number_; int activation_timeout_ms_ = 30000; bool Upgrade(const std::string& firmware_url); std::function upgrade_callback_; std::vector ParseVersion(const std::string& version); bool IsNewVersionAvailable(const std::string& currentVersion, const std::string& newVersion); std::string GetActivationPayload(); std::unique_ptr SetupHttp(); }; #endif // _OTA_H