#ifndef _FIRMWARE_UPGRADE_H #define _FIRMWARE_UPGRADE_H #include #include #include class FirmwareUpgrade { public: FirmwareUpgrade(); ~FirmwareUpgrade(); void SetBoardJson(const std::string& board_json); void SetCheckVersionUrl(std::string check_version_url); 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: std::string check_version_url_; bool has_new_version_ = false; std::string firmware_version_; std::string firmware_url_; std::string board_json_; 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); std::string GetPostData(); }; #endif // _FIRMWARE_UPGRADE_H