#ifndef _OTA_H #define _OTA_H #include #include #include class Ota { public: Ota(); ~Ota(); void SetCheckVersionUrl(std::string check_version_url); void SetHeader(const std::string& key, const std::string& value); bool CheckVersion(); bool HasNewVersion() { return has_new_version_; } bool HasMqttConfig() { return has_mqtt_config_; } bool HasActivationCode() { return has_activation_code_; } bool HasServerTime() { return has_server_time_; } void 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_; } private: std::string check_version_url_; std::string activation_message_; std::string activation_code_; bool has_new_version_ = false; bool has_mqtt_config_ = false; bool has_server_time_ = false; bool has_activation_code_ = false; std::string current_version_; std::string firmware_version_; std::string firmware_url_; std::map headers_; void 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); }; #endif // _OTA_H