You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.5 KiB

// License: Apache 2.0. See LICENSE file in root directory.
// Copyright(c) 2020 Intel Corporation. All Rights Reserved.
#pragma once
#include <map>
#include <regex>
#include <librealsense2/rs.hpp>
#include "versions-db-manager.h"
namespace rs2
{
namespace sw_update
{
// The dev_updates_profile class builds and holds a specific device versions profile.
// It queries the versions DB according to the desired components
// and supply a complete profile of the device software & firmware available update.
class dev_updates_profile
{
public:
struct version_info
{
sw_update::version ver;
std::string name_for_display;
std::string release_page;
std::string download_link;
std::string description;
update_policy_type policy;
};
struct update_profile
{
std::string device_name;
std::string serial_number;
std::string fw_update_id;
sw_update::version software_version;
sw_update::version firmware_version;
typedef std::map< sw_update::version, version_info > version_to_info;
version_to_info software_versions;
version_to_info firmware_versions;
device dev;
bool dev_active;
update_profile() :dev_active(true){};
bool get_sw_update(update_policy_type policy, version_info& info) const;
bool get_fw_update(update_policy_type policy, version_info& info) const;
};
explicit dev_updates_profile(const device& dev, const std::string &url, const bool use_url_as_local_path = false, http::user_callback_func_type download_callback = http::user_callback_func_type());
~dev_updates_profile() {};
bool retrieve_updates(component_part_type comp, bool& fail_access_db);
update_profile & get_update_profile() { return _update_profile; };
private:
query_status_type try_parse_update(versions_db_manager& up_handler,
const std::string& dev_name,
update_policy_type policy,
component_part_type part,
version_info& result);
versions_db_manager _versions_db;
update_profile _update_profile;
bool _keep_trying;
};
}
}