#ifndef _FIRMWARE_UPGRADE_H #define _FIRMWARE_UPGRADE_H #include #include #include #include class FirmwareUpgrade { public: FirmwareUpgrade(Http& http); ~FirmwareUpgrade(); void SetCheckVersionUrl(std::string check_version_url); void SetPostData(const std::string& post_data); void SetHeader(const std::string& key, const std::string& value); void CheckVersion(); bool HasNewVersion() { return has_new_version_; } void StartUpgrade(std::function callback); void MarkCurrentVersionValid(); private: Http& http_; std::string check_version_url_; bool has_new_version_ = false; 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 // _FIRMWARE_UPGRADE_H