42 #include "../common/fw/firmware-version.h" 44 #include "../third-party/json.hpp" 89 : _hw_monitor(hwm), _cmd(cmd) {}
109 throw std::runtime_error(
"Invalid result size!");
112 auto words =
reinterpret_cast<uint16_t*
>(
res.data());
114 roi.
min_y = words[0];
115 roi.
max_y = words[1];
116 roi.
min_x = words[2];
117 roi.
max_x = words[3];
141 LOG_INFO(
"entering to update state, device disconnect is expected");
146 for (
auto i = 0;
i < 50;
i++)
149 this_thread::sleep_for(milliseconds(50));
151 throw std::runtime_error(
"Device still connected!");
154 catch (std::exception&
e)
165 int flash_size = 1024 * 2048;
166 int max_bulk_size = 1016;
167 int max_iterations = int(flash_size / max_bulk_size + 1);
169 std::vector<uint8_t> flash;
170 flash.reserve(flash_size);
173 uvc_sensor& raw_depth_sensor = get_raw_depth_sensor();
176 for (
int i = 0;
i < max_iterations;
i++)
178 int offset = max_bulk_size *
i;
179 int size = max_bulk_size;
180 if (i == max_iterations - 1)
182 size = flash_size -
offset;
185 bool appended =
false;
187 const int retries = 3;
188 for (
int j = 0;
j < retries && !appended;
j++)
197 flash.insert(flash.end(),
res.begin(),
res.end());
199 LOG_DEBUG(
"Flash backup - " << flash.size() <<
"/" << flash_size <<
" bytes downloaded");
203 if (i < retries - 1) std::this_thread::sleep_for(std::chrono::milliseconds(100));
208 if (callback) callback->on_update_progress((
float)i / max_iterations);
210 if (callback) callback->on_update_progress(1.0);
224 sector_count += first_sector;
226 for (
auto sector_index = first_sector; sector_index < sector_count; sector_index++)
230 cmdFES.
param1 = (int)sector_index;
232 auto res = hwm->send(cmdFES);
236 auto index = sector_index * ds::FLASH_SECTOR_SIZE +
i;
237 if (
index >= offset + size)
243 cmdFWB.
param2 = packet_size;
244 cmdFWB.
data.assign(image.data() +
index, image.data() +
index + packet_size);
245 res = hwm->send(cmdFWB);
250 callback->on_update_progress(continue_from + (
float)sector_index / (
float)sector_count * ratio);
257 auto first_table_offset = fs.
tables.front().offset;
258 float total_size = float(fs.
app_size + tables_size);
260 float app_ratio = fs.
app_size / total_size * ratio;
261 float tables_ratio = tables_size / total_size * ratio;
264 update_flash_section(hwm, merged_image, first_table_offset, tables_size, callback, app_ratio, tables_ratio);
271 auto merged_image =
merge_images(flash_backup_info, flash_image_info, image);
274 auto first_table_offset = flash_image_info.read_write_section.tables.front().offset;
275 auto tables_size = flash_image_info.header.read_write_start_address + flash_image_info.header.read_write_size - first_table_offset;
281 auto first_table_offset = flash_image_info.read_only_section.tables.front().offset;
282 auto tables_size = flash_image_info.header.read_only_start_address + flash_image_info.header.read_only_size - first_table_offset;
283 update_section(hwm, merged_image, flash_image_info.read_only_section, tables_size, callback, 0.5, 0.5);
290 throw std::runtime_error(
"this camera is locked and doesn't allow direct flash write, for firmware update use rs2_update_firmware method (DFU)");
292 auto& raw_depth_sensor = get_raw_depth_sensor();
307 auto flash_backup = backup_flash(
nullptr);
312 throw std::runtime_error(
"invalid update mode value");
315 if (callback) callback->on_update_progress(1.0);
350 *_owner->_coefficients_table_raw,
362 if (_hdr_cfg && _hdr_cfg->is_enabled())
367 _owner->_thermal_monitor->update(
true);
374 _owner->_thermal_monitor->update(
false);
392 for (
auto&&
p : results)
397 assign_stream(_owner->_depth_stream,
p);
401 assign_stream(_owner->_left_ir_stream,
p);
405 assign_stream(_owner->_right_ir_stream,
p);
409 assign_stream(_owner->_color_stream,
p);
417 std::weak_ptr<ds5_depth_sensor> wp =
419 vid_profile->set_intrinsics([
profile, wp]()
423 return sp->get_intrinsics(
profile);
435 if (_depth_units < 0)
444 _hdr_cfg = std::make_shared<hdr_config>(*(_owner->_hw_monitor), get_raw_sensor(),
445 exposure_range, gain_range);
459 snapshot = std::make_shared<depth_stereo_sensor_snapshot>(
get_depth_scale(), get_stereo_baseline_mm());
492 for (
auto&&
p : results)
497 assign_stream(_owner->_depth_stream,
p);
501 assign_stream(_owner->_left_ir_stream,
p);
505 assign_stream(_owner->_right_ir_stream,
p);
509 assign_stream(_owner->_color_stream,
p);
517 std::weak_ptr<ds5_depth_sensor> wp = std::dynamic_pointer_cast<
ds5_depth_sensor>(this->shared_from_this());
518 video->set_intrinsics([
profile, wp]()
522 return sp->get_intrinsics(
profile);
544 return (0 != ret.front());
550 auto table = check_calib<coefficients_table>(*_coefficients_table_raw);
551 return fabs(
table->baseline);
573 std::array<unsigned char,HW_MONITOR_BUFFER_SIZE> gvd_buf;
579 val |= d400_caps::CAP_ACTIVE_PROJECTOR;
581 val |= d400_caps::CAP_RGB_SENSOR;
584 val |= d400_caps::CAP_IMU_SENSOR;
586 val |= d400_caps::CAP_BMI_055;
588 val |= d400_caps::CAP_BMI_085;
590 val |= d400_caps::CAP_BMI_055;
592 val |= d400_caps::CAP_BMI_085;
594 LOG_WARNING(
"The IMU sensor is undefined for PID " << std::hex << _pid <<
" and imu_chip_id: " << gvd_buf[
imu_acc_chip_id] << std::dec);
597 val |= d400_caps::CAP_FISHEYE_SENSOR;
599 val |= d400_caps::CAP_ROLLING_SHUTTER;
600 if (0
x2 == gvd_buf[depth_sensor_type])
601 val |= d400_caps::CAP_GLOBAL_SHUTTER;
607 const std::vector<platform::uvc_device_info>& all_device_infos)
611 auto&& backend = ctx->get_backend();
613 std::vector<std::shared_ptr<platform::uvc_device>> depth_devices;
615 depth_devices.push_back(backend.create_uvc_device(
info));
617 std::unique_ptr<frame_timestamp_reader> timestamp_reader_backup(
new ds5_timestamp_reader(backend.create_time_service()));
619 auto enable_global_time_option = std::shared_ptr<global_time_option>(
new global_time_option());
620 auto raw_depth_ep = std::make_shared<uvc_sensor>(
"Raw Depth Sensor", std::make_shared<platform::multi_pins_uvc_device>(depth_devices),
623 raw_depth_ep->register_xu(
depth_xu);
625 auto depth_ep = std::make_shared<ds5_depth_sensor>(
this, raw_depth_ep);
644 _device_capabilities(
ds::
d400_caps::CAP_UNDEFINED),
648 _color_stream(nullptr)
659 auto&& backend = ctx->get_backend();
666 std::make_shared<locked_transfer>(
667 std::make_shared<command_transfer_over_xu>(
674 std::make_shared<locked_transfer>(
675 backend.create_usb_device(group.
usb_devices.front()), raw_sensor));
683 auto table = check_calib<coefficients_table>(*_coefficients_table_raw);
718 using namespace platform;
724 _usb_mode = raw_depth_sensor.get_usb_specification();
728 usb_modality =
false;
740 []() {
return std::make_shared<y8i_to_y8y8>(); }
746 []() {
return std::make_shared<y12i_to_y16y16>(); }
755 "Hardware pipe configuration"));
758 "Set the power level of the LED, with 0 meaning LED off"));
771 "Generate trigger from the camera to external device once per frame"));
777 raw_depth_sensor.get_notifications_processor(),
778 std::make_shared<ds5_notification_decoder>());
783 std::make_shared<asic_and_projector_temperature_options>(raw_depth_sensor,
789 auto thermal_compensation_toggle = std::make_shared<protected_xu_option<uint8_t>>(raw_depth_sensor,
depth_xu,
794 _thermal_monitor = std::make_shared<ds5_thermal_monitor>(temperature_sensor, thermal_compensation_toggle);
797 std::make_shared<thermal_compensation>(
_thermal_monitor,thermal_compensation_toggle));
805 std::shared_ptr<hdr_option> hdr_enabled_option =
nullptr;
808 auto uvc_xu_exposure_option = std::make_shared<uvc_xu_option<uint32_t>>(raw_depth_sensor,
811 "Depth Exposure (usec)");
812 option_range exposure_range = uvc_xu_exposure_option->get_range();
813 auto uvc_pu_gain_option = std::make_shared<uvc_pu_option>(raw_depth_sensor,
RS2_OPTION_GAIN);
814 option_range gain_range = uvc_pu_gain_option->get_range();
817 auto enable_auto_exposure = std::make_shared<uvc_xu_option<uint8_t>>(raw_depth_sensor,
820 "Enable Auto Exposure");
827 auto ds5_depth = As<ds5_depth_sensor, synthetic_sensor>(&
get_depth_sensor());
828 ds5_depth->init_hdr_config(exposure_range, gain_range);
829 auto&& hdr_cfg = ds5_depth->get_hdr_config();
835 std::map<float, std::string>{ {0.f,
"0"}, { 1.f,
"1" }, { 2.f,
"2" }, { 3.f,
"3" } });
836 depth_sensor.register_option(RS2_OPTION_SEQUENCE_NAME, hdr_id_option);
838 option_range hdr_sequence_size_range = { 2.f , 2.f , 1.f , 2.f };
839 auto hdr_sequence_size_option = std::make_shared<hdr_option>(hdr_cfg,
RS2_OPTION_SEQUENCE_SIZE, hdr_sequence_size_range,
840 std::map<float, std::string>{ { 2.f,
"2" } });
841 depth_sensor.register_option(RS2_OPTION_SEQUENCE_SIZE, hdr_sequence_size_option);
843 option_range hdr_sequ_id_range = { 0.f , 2.f , 1.f , 0.f };
844 auto hdr_sequ_id_option = std::make_shared<hdr_option>(hdr_cfg,
RS2_OPTION_SEQUENCE_ID, hdr_sequ_id_range,
845 std::map<float, std::string>{ {0.f,
"UVC"}, { 1.f,
"1" }, { 2.f,
"2" } });
846 depth_sensor.register_option(RS2_OPTION_SEQUENCE_ID, hdr_sequ_id_option);
848 option_range hdr_enable_range = { 0.f , 1.f , 1.f , 0.f };
850 depth_sensor.register_option(RS2_OPTION_HDR_ENABLED, hdr_enabled_option);
853 auto hdr_exposure_option = std::make_shared<hdr_option>(hdr_cfg,
RS2_OPTION_EXPOSURE, exposure_range);
854 auto hdr_gain_option = std::make_shared<hdr_option>(hdr_cfg,
RS2_OPTION_GAIN, gain_range);
857 auto hdr_conditional_exposure_option = std::make_shared<hdr_conditional_option>(hdr_cfg, uvc_xu_exposure_option, hdr_exposure_option);
858 auto hdr_conditional_gain_option = std::make_shared<hdr_conditional_option>(hdr_cfg, uvc_pu_gain_option, hdr_gain_option);
860 exposure_option = hdr_conditional_exposure_option;
861 gain_option = hdr_conditional_gain_option;
863 std::vector<std::pair<std::shared_ptr<option>,
std::string>> options_and_reasons = { std::make_pair(hdr_enabled_option,
864 "Auto Exposure cannot be set while HDR is enabled") };
866 std::make_shared<gated_option>(
867 enable_auto_exposure,
868 options_and_reasons));
872 exposure_option = uvc_xu_exposure_option;
873 gain_option = uvc_pu_gain_option;
878 std::make_shared<auto_disabling_control>(
880 enable_auto_exposure));
884 std::make_shared<auto_disabling_control>(
886 enable_auto_exposure));
889 auto mask = d400_caps::CAP_GLOBAL_SHUTTER | d400_caps::CAP_ACTIVE_PROJECTOR;
894 auto alternating_emitter_opt = std::make_shared<alternating_emitter_option>(*
_hw_monitor, &raw_depth_sensor, is_fw_version_using_id);
899 std::vector<std::pair<std::shared_ptr<option>,
std::string>> options_and_reasons = { std::make_pair(alternating_emitter_opt,
900 "Emitter always ON cannot be set while Emitter ON/OFF is enabled")};
902 std::make_shared<gated_option>(
903 emitter_always_on_opt,
904 options_and_reasons));
909 std::vector<std::pair<std::shared_ptr<option>,
std::string>> options_and_reasons = { std::make_pair(hdr_enabled_option,
"Emitter ON/OFF cannot be set while HDR is enabled"),
910 std::make_pair(emitter_always_on_opt,
"Emitter ON/OFF cannot be set while Emitter always ON is enabled") };
912 std::make_shared<gated_option>(
913 alternating_emitter_opt,
919 std::vector<std::pair<std::shared_ptr<option>,
std::string>> options_and_reasons = { std::make_pair(emitter_always_on_opt,
920 "Emitter ON/OFF cannot be set while Emitter always ON is enabled") };
922 std::make_shared<gated_option>(
923 alternating_emitter_opt,
924 options_and_reasons));
940 std::make_shared<external_sync_mode>(*
_hw_monitor, &raw_depth_sensor, 3));
945 std::make_shared<external_sync_mode>(*
_hw_monitor, &raw_depth_sensor, 2));
950 std::make_shared<external_sync_mode>(*
_hw_monitor, &raw_depth_sensor, 1));
963 auto depth_scale = std::make_shared<depth_scale_option>(*_hw_monitor);
1118 if (u.second.compare(
str) == 0)
1147 throw std::runtime_error(
"Not enough bytes returned from the firmware!");
1166 const std::vector<platform::uvc_device_info>& all_device_infos)
1170 auto&& backend = ctx->get_backend();
1172 std::vector<std::shared_ptr<platform::uvc_device>> depth_devices;
1174 depth_devices.push_back(backend.create_uvc_device(
info));
1176 std::unique_ptr<frame_timestamp_reader> ds5_timestamp_reader_backup(
new ds5_timestamp_reader(backend.create_time_service()));
1179 auto enable_global_time_option = std::shared_ptr<global_time_option>(
new global_time_option());
1180 auto raw_depth_ep = std::make_shared<uvc_sensor>(
ds::DEPTH_STEREO, std::make_shared<platform::multi_pins_uvc_device>(depth_devices), std::unique_ptr<frame_timestamp_reader>(
new global_timestamp_reader(
std::move(ds5_timestamp_reader_metadata),
_tf_keeper, enable_global_time_option)),
this);
1181 auto depth_ep = std::make_shared<ds5u_depth_sensor>(
this, raw_depth_ep);
1185 raw_depth_ep->register_xu(
depth_xu);
1220 auto emitter_enabled = std::make_shared<emitter_option>(depth_ep);
1223 auto laser_power = std::make_shared<uvc_xu_option<uint16_t>>(depth_ep,
1226 "Manual laser power in mw. applicable only when laser power mode is set to Manual");
1228 std::make_shared<auto_disabling_control>(
1231 std::vector<float>{0.f, 2.f}, 1.f));
1234 std::make_shared<asic_and_projector_temperature_options>(depth_ep,
1242 res.push_back(std::make_shared<hdr_merge>());
1243 res.push_back(std::make_shared<sequence_id_filter>());
1244 res.push_back(std::make_shared<threshold>());
1245 res.push_back(std::make_shared<disparity_transform>(
true));
1246 res.push_back(std::make_shared<spatial_filter>());
1247 res.push_back(std::make_shared<temporal_filter>());
1248 res.push_back(std::make_shared<hole_filling_filter>());
1249 res.push_back(std::make_shared<disparity_transform>(
false));
const ds5_device * _owner
static const textual_icon lock
stream_profiles init_stream_profiles() override
std::shared_ptr< md_attribute_parser_base > make_rs400_sensor_ts_parser(std::shared_ptr< md_attribute_parser_base > frame_ts_parser, std::shared_ptr< md_attribute_parser_base > sensor_ts_parser)
A helper function to create a specialized parser for RS4xx sensor timestamp.
const std::string DEPTH_STEREO
static const double TIMESTAMP_USEC_TO_MSEC
bool try_get_intrinsic_by_resolution_new(const vector< uint8_t > &raw_data, uint32_t width, uint32_t height, rs2_intrinsics *result)
uint32_t exposure_roi_right
firmware_version _fw_version
void enable_recording(std::function< void(const depth_sensor &)> recording_function) override
std::shared_ptr< hw_monitor > _hw_monitor
const uint8_t I2C_IMU_BMI085_ID_ACC
const uint32_t FLASH_SIZE
void set(const region_of_interest &roi) override
auto invoke_powered(T action) -> decltype(action(*static_cast< platform::uvc_device * >(nullptr)))
std::shared_ptr< synthetic_sensor > create_depth_device(std::shared_ptr< context > ctx, const std::vector< platform::uvc_device_info > &all_device_infos)
void create_snapshot(std::shared_ptr< depth_sensor > &snapshot) const override
processing_blocks get_ds5_depth_recommended_proccesing_blocks()
void enable_recording(std::function< void(const debug_interface &)> record_action) override
void open(const stream_profiles &requests) override
ds5_depth_sensor(ds5_device *owner, std::shared_ptr< uvc_sensor > uvc_sensor)
platform::usb_spec get_usb_spec() const
const uint8_t DS5_LASER_POWER
const uint8_t DS5_EXT_TRIGGER
ds5u_device(std::shared_ptr< context > ctx, const platform::backend_device_group &group)
bool val_in_range(const T &val, const std::initializer_list< T > &list)
lazy< std::vector< uint8_t > > _coefficients_table_raw
virtual stream_profiles init_stream_profiles() override
const uint8_t DS5_HWMONITOR
const uint8_t DS5_ERROR_REPORTING
void register_same_extrinsics(const stream_interface &from, const stream_interface &to)
synthetic_sensor & get_depth_sensor()
void init_hdr_config(const option_range &exposure_range, const option_range &gain_range)
const uint8_t DS5_HARDWARE_PRESET
GLsizei const GLchar *const * string
void init(std::shared_ptr< context > ctx, const platform::backend_device_group &group)
const uint8_t DS5_LED_PWR
void update_section(std::shared_ptr< hw_monitor > hwm, const std::vector< uint8_t > &merged_image, flash_section fs, uint32_t tables_size, update_progress_callback_ptr callback, float continue_from, float ratio)
rs2_extrinsics identity_matrix()
void enable_recording(std::function< void(const depth_stereo_sensor &)> recording_function) override
float _stereo_baseline_mm
const uint8_t DS5_THERMAL_COMPENSATION
GLenum GLenum GLsizei void * image
ds5_device(std::shared_ptr< context > ctx, const platform::backend_device_group &group)
std::shared_ptr< rs2_update_progress_callback > update_progress_callback_ptr
#define D4XX_RECOMMENDED_FIRMWARE_VERSION
std::shared_ptr< lazy< rs2_extrinsics > > _left_right_extrinsics
const uint16_t RS400_IMU_PID
def info(name, value, persistent=False)
const uint16_t RS416_RGB_PID
std::shared_ptr< time_diff_keeper > _tf_keeper
std::shared_ptr< ds5_thermal_monitor > _thermal_monitor
std::shared_ptr< synthetic_sensor > create_ds5u_depth_device(std::shared_ptr< context > ctx, const std::vector< platform::uvc_device_info > &all_device_infos)
void register_extrinsics(const stream_interface &from, const stream_interface &to, std::weak_ptr< lazy< rs2_extrinsics >> extr)
std::string hexify(const T &val)
void register_info(rs2_camera_info info, const std::string &val)
static const std::map< std::uint16_t, std::string > rs400_sku_names
uint8_t _depth_device_idx
bool is_camera_in_advanced_mode() const
void update_flash_section(std::shared_ptr< hw_monitor > hwm, const std::vector< uint8_t > &image, uint32_t offset, uint32_t size, update_progress_callback_ptr callback, float continue_from, float ratio)
processing_blocks get_depth_recommended_proccesing_blocks()
stream_profiles init_stream_profiles() override
void enter_update_state() const override
#define RS2_UNSIGNED_UPDATE_MODE_UPDATE
uint32_t exposure_roi_top
notification decode(int value) override
std::vector< uint8_t > send(std::vector< uint8_t > const &data) const
constexpr bool hw_mon_over_xu
std::shared_ptr< hdr_config > get_hdr_config()
int assign_sensor(const std::shared_ptr< sensor_interface > &sensor_base, uint8_t idx)
bool experimental() const
uint32_t rs_fourcc(const T a, const T b, const T c, const T d)
#define RS2_UNSIGNED_UPDATE_MODE_READ_ONLY
static processing_block_factory create_id_pbf(rs2_format format, rs2_stream stream, int idx=0)
std::shared_ptr< hdr_config > _hdr_cfg
std::vector< uint8_t > data
std::shared_ptr< stream_interface > _depth_stream
ds::d400_caps parse_device_capabilities() const
std::vector< uint8_t > get_new_calibration_table() const
const int REGISTER_CLOCK_0
rs2_intrinsics get_intrinsic_by_resolution(const vector< uint8_t > &raw_data, calibration_table_id table_id, uint32_t width, uint32_t height)
std::vector< uint8_t > backup_flash(update_progress_callback_ptr callback) override
command get_flash_logs_command() const
const std::map< uint8_t, std::string > ds5_fw_error_report
const uint16_t RS_USB2_PID
float get_depth_scale(rs2::device dev)
const ds5u_device * _owner
std::shared_ptr< polling_error_handler > _polling_error_handler
std::vector< uint8_t > merge_images(flash_info from, flash_info to, const std::vector< uint8_t > image)
float get_depth_scale() const override
std::shared_ptr< stream_interface > _left_ir_stream
std::shared_ptr< md_attribute_parser_base > make_uvc_header_parser(Attribute St::*attribute, attrib_modifyer mod=nullptr)
A utility function to create UVC metadata header parser.
bool supports_info(rs2_camera_info info) const override
ds::d400_caps _device_capabilities
void set_depth_scale(float val)
std::vector< uint8_t > send_receive_raw_data(const std::vector< uint8_t > &input) override
const platform::extension_unit depth_xu
const std::string & get_info(rs2_camera_info info) const override
command get_firmware_logs_command() const
std::vector< std::shared_ptr< stream_profile_interface >> stream_profiles
const uint8_t DS5_ENABLE_AUTO_EXPOSURE
const uint8_t DS5_EXPOSURE
static environment & get_instance()
int add_sensor(const std::shared_ptr< sensor_interface > &sensor_base)
void get_gvd(size_t sz, unsigned char *gvd, uint8_t gvd_cmd) const
extrinsics_graph & get_extrinsics_graph()
uint32_t exposure_priority
#define RS2_UNSIGNED_UPDATE_MODE_FULL
uint32_t exposure_roi_left
ds5_auto_exposure_roi_method(const hw_monitor &hwm, ds::fw_cmd cmd=ds::fw_cmd::SETAEROI)
uint32_t exposure_roi_bottom
GLenum GLenum GLsizei void * table
firmware_version _recommended_fw_version
uint32_t auto_exposure_mode
Cross-stream extrinsics: encodes the topology describing how the different devices are oriented...
LOG_INFO("Log message using LOG_INFO()")
uvc_sensor & get_raw_depth_sensor()
const uint8_t I2C_IMU_BMI055_ID_ACC
GLuint GLfloat GLfloat GLfloat x1
const uint16_t HW_MONITOR_COMMAND_SIZE
std::shared_ptr< md_attribute_parser_base > make_attribute_parser(Attribute S::*attribute, Flag flag, unsigned long long offset, attrib_modifyer mod=nullptr)
A helper function to create a specialized attribute parser. Return it as a pointer to a base-class...
virtual double get_device_time_ms() override
GLenum GLenum GLenum input
stream_profile to_profile(const stream_profile_interface *sp)
long long rs2_metadata_type
float get_stereo_baseline_mm() const override
region_of_interest get() const override
std::vector< flash_table > tables
const hw_monitor & _hw_monitor
std::vector< rs2_format > map_supported_color_formats(rs2_format source_format)
typename::boost::move_detail::remove_reference< T >::type && move(T &&t) BOOST_NOEXCEPT
ds5u_depth_sensor(ds5u_device *owner, std::shared_ptr< uvc_sensor > uvc_sensor)
static const std::set< std::uint16_t > hid_bmi_085_pid
void register_stream_to_extrinsic_group(const stream_interface &stream, uint32_t groupd_index)
float get_stereo_baseline_mm() const
rs2_intrinsics get_intrinsics(const stream_profile &profile) const override
void update_flash_internal(std::shared_ptr< hw_monitor > hwm, const std::vector< uint8_t > &image, std::vector< uint8_t > &flash_backup, update_progress_callback_ptr callback, int update_mode)
processing_blocks get_recommended_processing_blocks() const override
#define offsetof(STRUCTURE, FIELD)
uint32_t sensor_timestamp
void update_flash(const std::vector< uint8_t > &image, update_progress_callback_ptr callback, int update_mode) override
const uint32_t FLASH_SECTOR_SIZE
std::vector< platform::uvc_device_info > filter_by_mi(const std::vector< platform::uvc_device_info > &devices, uint32_t mi)
static const std::set< std::uint16_t > hid_bmi_055_pid
lazy< std::vector< uint8_t > > _new_calib_table_raw
void create_snapshot(std::shared_ptr< debug_interface > &snapshot) const override
const uint16_t HW_MONITOR_BUFFER_SIZE
void create_snapshot(std::shared_ptr< depth_stereo_sensor > &snapshot) const override
std::shared_ptr< stream_interface > _right_ir_stream
void hardware_reset() override
std::atomic< float > _depth_units
rs2_frame_metadata_value
Per-Frame-Metadata is the set of read-only properties that might be exposed for each individual frame...
std::vector< uint8_t > get_raw_calibration_table(ds::calibration_table_id table_id) const
std::map< uint32_t, rs2_format > ds5_depth_fourcc_to_rs2_format
void open(const stream_profiles &requests) override
virtual void set_roi_method(std::shared_ptr< region_of_interest_method > roi_method)=0
std::map< uint32_t, rs2_stream > ds5_depth_fourcc_to_rs2_stream
flash_info get_flash_info(const std::vector< uint8_t > &flash_buffer)
std::string to_string(T value)