#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); void SetPostData(const std::string& post_data); bool CheckVersion(); bool HasNewVersion() { return has_new_version_; } bool HasMqttConfig() { return has_mqtt_config_; } void StartUpgrade(std::function callback); void MarkCurrentVersionValid(); const std::string& GetFirmwareVersion() const { return firmware_version_; } const std::string& GetCurrentVersion() const { return current_version_; } private: std::string check_version_url_; bool has_new_version_ = false; bool has_mqtt_config_ = false; std::string current_version_; std::string firmware_version_; std::string firmware_url_; std::string post_data_; 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