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.
58 lines
2.2 KiB
58 lines
2.2 KiB
// License: Apache 2.0. See LICENSE file in root directory.
|
|
// Copyright(c) 2017 Intel Corporation. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "notifications.h"
|
|
|
|
|
|
namespace rs2
|
|
{
|
|
class viewer_model;
|
|
|
|
int parse_product_line(const std::string& product_line);
|
|
std::string get_available_firmware_version(int product_line, const std::string& pid);
|
|
|
|
std::vector<uint8_t> get_default_fw_image(int product_line, const std::string& pid);
|
|
bool is_upgradeable(const std::string& curr, const std::string& available);
|
|
bool is_recommended_fw_available(const std::string& product_line, const std::string& pid);
|
|
|
|
class firmware_update_manager : public process_manager
|
|
{
|
|
public:
|
|
firmware_update_manager(std::shared_ptr<notifications_model> not_model, device_model& model, device dev, context ctx, std::vector<uint8_t> fw, bool is_signed)
|
|
: process_manager("Firmware Update"), _not_model(not_model), _model(model),
|
|
_fw(fw), _is_signed(is_signed), _dev(dev), _ctx(ctx) {}
|
|
|
|
const device_model& get_device_model() const { return _model; }
|
|
std::shared_ptr<notifications_model> get_protected_notification_model() { return _not_model.lock(); };
|
|
|
|
protected:
|
|
void process_flow(std::function<void()> cleanup,
|
|
invoker invoke) override;
|
|
void process_mipi();
|
|
bool check_for(
|
|
std::function<bool()> action, std::function<void()> cleanup,
|
|
std::chrono::system_clock::duration delta);
|
|
|
|
std::weak_ptr<notifications_model> _not_model;
|
|
device _dev;
|
|
context _ctx;
|
|
std::vector<uint8_t> _fw;
|
|
bool _is_signed;
|
|
device_model& _model;
|
|
bool _is_d500_device = false;
|
|
};
|
|
|
|
struct fw_update_notification_model : public process_notification_model
|
|
{
|
|
fw_update_notification_model(std::string name,
|
|
std::shared_ptr<firmware_update_manager> manager, bool expaned);
|
|
|
|
void set_color_scheme(float t) const override;
|
|
void draw_content(ux_window& win, int x, int y, float t, std::string& error_message) override;
|
|
void draw_expanded(ux_window& win, std::string& error_message) override;
|
|
int calc_height() override;
|
|
};
|
|
}
|