4 #ifndef LIBREALSENSE_RS2_DEVICE_HPP 5 #define LIBREALSENSE_RS2_DEVICE_HPP 16 class pipeline_profile;
29 std::shared_ptr<rs2_sensor_list> list(
37 std::vector<sensor> results;
38 for (
auto i = 0; i < size; i++)
40 std::shared_ptr<rs2_sensor> dev(
46 results.push_back(rs2_dev);
67 std::ostringstream os;
72 os <<
"[" << type <<
"] ";
78 os << type <<
" device";
80 os <<
"unknown device";
92 if (
auto t = s.as<T>())
return t;
94 throw rs2::error(
"Could not find requested sensor type!");
107 return is_supported > 0;
175 operator bool()
const 177 return _dev !=
nullptr;
179 const std::shared_ptr<rs2_device>&
get()
const 206 return res ? std::string( res ) : std::string();
226 explicit operator std::shared_ptr<rs2_device>() {
return _dev; };
227 explicit device(std::shared_ptr<rs2_device> dev) :
_dev(dev) {}
234 std::shared_ptr<rs2_device>
_dev;
281 std::vector<uint8_t> results;
284 std::shared_ptr<const rs2_raw_data_buffer> list(
294 results.insert(results.begin(), start, start + size);
302 std::vector<uint8_t> results;
305 std::shared_ptr<const rs2_raw_data_buffer> list(
315 results.insert(results.begin(), start, start + size);
364 void update(
const std::vector<uint8_t>& fw_image)
const 374 void update(
const std::vector<uint8_t>& fw_image, T callback)
const 464 std::vector<uint8_t> results;
477 results.insert(results.begin(), start, start + size);
518 std::vector<uint8_t> results;
531 results.insert(results.begin(), start, start + size);
570 std::vector<uint8_t> results;
582 results.insert(results.begin(), start, start + size);
619 std::vector<uint8_t> results;
631 results.insert(results.begin(), start, start + size);
647 std::vector<uint8_t> results;
659 results.insert(results.begin(), start, start + size);
673 std::vector<uint8_t> results;
685 results.insert(results.begin(), start, start + size);
696 std::vector<uint8_t> results;
699 std::shared_ptr<const rs2_raw_data_buffer> list(
709 results.insert(results.begin(), start, start + size);
737 float* ratio,
float* angle)
const 739 std::vector<uint8_t> results;
742 std::shared_ptr<const rs2_raw_data_buffer> list(
743 rs2_run_focal_length_calibration_cpp(
_dev.get(), left.
get().get(), right.
get().get(), target_w, target_h, adjust_both_sides, ratio, angle,
nullptr, &e),
752 results.insert(results.begin(), start, start + size);
770 float* ratio,
float* angle, T callback)
const 772 std::vector<uint8_t> results;
775 std::shared_ptr<const rs2_raw_data_buffer> list(
786 results.insert(results.begin(), start, start + size);
803 float* health,
int health_size)
const 805 std::vector<uint8_t> results;
808 std::shared_ptr<const rs2_raw_data_buffer> list(
818 results.insert(results.begin(), start, start + size);
837 float* health,
int health_size, T callback)
const 839 std::vector<uint8_t> results;
842 std::shared_ptr<const rs2_raw_data_buffer> list(
853 results.insert(results.begin(), start, start + size);
867 float target_width,
float target_height)
const 871 target_width, target_height,
nullptr, &e);
888 float target_width,
float target_height, T callback)
const 900 std::vector<uint8_t> result;
914 result.insert(result.begin(), start, start + size);
916 return std::string(result.begin(), result.end());
930 template<
class callback >
972 template<
typename T >
1027 uint32_t param1 = 0,
1028 uint32_t param2 = 0,
1029 uint32_t param3 = 0,
1030 uint32_t param4 = 0,
1031 std::vector<uint8_t>
const & data = {})
const 1033 std::vector<uint8_t> results;
1037 (
void*)data.data(), (uint32_t)data.size(), &e);
1047 results.insert(results.begin(), start, start + size);
1054 std::vector<uint8_t> results;
1057 std::shared_ptr<const rs2_raw_data_buffer> list(
1068 results.insert(results.begin(), start, start + size);
1078 return std::string(buffer);
1086 : _list(std::move(list)) {}
1091 operator std::vector<device>()
const 1093 std::vector<device> res;
1094 for (
auto&& dev : *
this) res.push_back(dev);
1108 _list = std::move(list);
1115 std::shared_ptr<rs2_device> dev(
1134 return std::move((*
this)[
size() - 1]);
1150 return _list[_index];
1154 return other._index != _index || &other._list != &_list;
1158 return !(*
this != other);
1184 operator std::shared_ptr<rs2_device_list>() {
return _list; };
1187 std::shared_ptr<rs2_device_list> _list;
1190 #endif // LIBREALSENSE_RS2_DEVICE_HPP Definition: rs_types.hpp:115
device operator*() const
Definition: rs_device.hpp:1148
void rs2_set_calibration_table(const rs2_device *device, const void *calibration, int calibration_size, rs2_error **error)
device back() const
Definition: rs_device.hpp:1132
int rs2_get_sensors_count(const rs2_sensor_list *info_list, rs2_error **error)
rs2_camera_info
Read-only strings that can be queried from the device. Not all information attributes are available o...
Definition: rs_sensor.h:22
float rs2_calculate_target_z_cpp(rs2_device *device, rs2_frame_queue *queue1, rs2_frame_queue *queue2, rs2_frame_queue *queue3, float target_width, float target_height, rs2_update_progress_callback *callback, rs2_error **error)
Definition: rs_sensor.hpp:103
update_device()
Definition: rs_device.hpp:350
bool is() const
Definition: rs_device.hpp:210
Definition: rs_frame.hpp:369
struct rs2_raw_data_buffer rs2_raw_data_buffer
Definition: rs_types.h:297
bool is_in_recovery_mode()
Definition: rs_device.hpp:136
int rs2_device_list_contains(const rs2_device_list *info_list, const rs2_device *device, rs2_error **error)
Definition: rs_types.h:206
void set_calibration_config(const std::string &calibration_config_json_str) const
Definition: rs_device.hpp:919
device_list(std::shared_ptr< rs2_device_list > list)
Definition: rs_device.hpp:1085
std::vector< uint8_t > send_and_receive_raw_data(const std::vector< uint8_t > &input) const
Definition: rs_device.hpp:1052
std::vector< uint8_t > create_flash_backup() const
Definition: rs_device.hpp:279
void release() override
Definition: rs_device.hpp:251
rs2_calibration_type
Definition: rs_device.h:419
std::vector< sensor > query_sensors() const
Definition: rs_device.hpp:26
calibration_change_device()=default
std::vector< uint8_t > run_focal_length_calibration(rs2::frame_queue left, rs2::frame_queue right, float target_w, float target_h, int adjust_both_sides, float *ratio, float *angle, T callback) const
Definition: rs_device.hpp:769
auto_calibrated_device(device d)
Definition: rs_device.hpp:415
device()
Definition: rs_device.hpp:171
const char * get_info(rs2_camera_info info) const
Definition: rs_device.hpp:115
device & operator=(const device &dev)
Definition: rs_device.hpp:165
void rs2_register_calibration_change_callback_cpp(rs2_device *dev, rs2_calibration_change_callback *callback, rs2_error **error)
int rs2_check_firmware_compatibility(const rs2_device *device, const void *fw_image, int fw_image_size, rs2_error **error)
void rs2_trigger_device_calibration(rs2_device *dev, rs2_calibration_type type, rs2_error **error)
Definition: rs_pipeline.hpp:18
bool operator==(const device_list_iterator &other) const
Definition: rs_device.hpp:1156
void update_unsigned(const std::vector< uint8_t > &image, int update_mode=RS2_UNSIGNED_UPDATE_MODE_UPDATE) const
Definition: rs_device.hpp:330
void update(const std::vector< uint8_t > &fw_image) const
Definition: rs_device.hpp:364
const rs2_raw_data_buffer * rs2_get_calibration_table(const rs2_device *dev, rs2_error **error)
rs2_sensor * rs2_create_sensor(const rs2_sensor_list *list, int index, rs2_error **error)
calibrated_device(device d)
Definition: rs_device.hpp:387
Definition: rs_sensor.h:24
Definition: rs_sensor.h:38
void set_calibration_table(const calibration_table &calibration)
Definition: rs_device.hpp:718
void update_unsigned(const std::vector< uint8_t > &image, T callback, int update_mode=RS2_UNSIGNED_UPDATE_MODE_UPDATE) const
Definition: rs_device.hpp:339
const rs2_raw_data_buffer * rs2_build_debug_protocol_command(rs2_device *device, unsigned opcode, unsigned param1, unsigned param2, unsigned param3, unsigned param4, void *data, unsigned size_of_data, rs2_error **error)
void rs2_delete_device(rs2_device *device)
calibration_table process_calibration_frame(rs2::frame f, float *const health, int timeout_ms=5000) const
Definition: rs_device.hpp:671
const unsigned char * rs2_get_raw_data(const rs2_raw_data_buffer *buffer, rs2_error **error)
void rs2_write_calibration(const rs2_device *device, rs2_error **e)
rs2_device * rs2_create_device(const rs2_device_list *info_list, int index, rs2_error **error)
device_list & operator=(std::shared_ptr< rs2_device_list > list)
Definition: rs_device.hpp:1106
calibration_change_device(device d)
Definition: rs_device.hpp:953
Definition: rs_device.hpp:239
Definition: rs_context.hpp:11
Definition: rs_types.hpp:73
Definition: rs_sensor.h:23
const rs2_raw_data_buffer * rs2_run_focal_length_calibration_cpp(rs2_device *device, rs2_frame_queue *left_queue, rs2_frame_queue *right_queue, float target_width, float target_height, int adjust_both_sides, float *ratio, float *angle, rs2_update_progress_callback *progress_callback, rs2_error **error)
bool operator<(device const &other) const
Definition: rs_device.hpp:183
void rs2_delete_raw_data(const rs2_raw_data_buffer *buffer)
std::string get_firmware_min_version() const
Definition: rs_device.hpp:201
const rs2_raw_data_buffer * rs2_run_uv_map_calibration_cpp(rs2_device *device, rs2_frame_queue *left_queue, rs2_frame_queue *color_queue, rs2_frame_queue *depth_queue, int py_px_only, float *health, int health_size, rs2_update_progress_callback *progress_callback, rs2_error **error)
calibration_table run_tare_calibration(float ground_truth_mm, std::string json_content, float *health, int timeout_ms=5000) const
Definition: rs_device.hpp:617
Definition: rs_context.hpp:96
void reset_to_factory_calibration()
Definition: rs_device.hpp:404
std::string get_calibration_config() const
Definition: rs_device.hpp:898
int rs2_get_raw_data_size(const rs2_raw_data_buffer *buffer, rs2_error **error)
Definition: rs_device.hpp:254
T as() const
Definition: rs_device.hpp:217
void enter_update_state() const
Definition: rs_device.hpp:270
device_calibration(device d)
Definition: rs_device.hpp:991
device_list_iterator begin() const
Definition: rs_device.hpp:1171
std::vector< uint8_t > calibration_table
Definition: rs_device.hpp:382
Definition: rs_device.hpp:1012
device operator[](uint32_t index) const
Definition: rs_device.hpp:1112
int rs2_supports_device_info(const rs2_device *device, rs2_camera_info info, rs2_error **error)
#define RS2_UNSIGNED_UPDATE_MODE_UPDATE
Definition: rs_device.h:235
rs2_calibration_status
Definition: rs_device.h:431
void rs2_delete_sensor(rs2_sensor *sensor)
int rs2_is_device_extendable_to(const rs2_device *device, rs2_extension extension, rs2_error **error)
device front() const
Definition: rs_device.hpp:1131
uint32_t size() const
Definition: rs_device.hpp:1123
void trigger_device_calibration(rs2_calibration_type type)
Definition: rs_device.hpp:1004
void hardware_reset()
Definition: rs_device.hpp:126
const rs2_raw_data_buffer * rs2_get_calibration_config(rs2_device *device, rs2_error **error)
const std::shared_ptr< rs2_device > & get() const
Definition: rs_device.hpp:179
std::vector< uint8_t > run_uv_map_calibration(rs2::frame_queue left, rs2::frame_queue color, rs2::frame_queue depth, int py_px_only, float *health, int health_size) const
Definition: rs_device.hpp:802
void update(const std::vector< uint8_t > &fw_image, T callback) const
Definition: rs_device.hpp:374
std::shared_ptr< rs2_device > _dev
Definition: rs_device.hpp:234
std::vector< uint8_t > run_focal_length_calibration(rs2::frame_queue left, rs2::frame_queue right, float target_w, float target_h, int adjust_both_sides, float *ratio, float *angle) const
Definition: rs_device.hpp:736
std::vector< uint8_t > create_flash_backup(T callback) const
Definition: rs_device.hpp:300
void rs2_hardware_reset(const rs2_device *device, rs2_error **error)
Definition: rs_types.h:188
double get_device_time_ms() const
Definition: rs_device.hpp:151
Definition: rs_device.hpp:949
rs2_sensor_list * rs2_query_sensors(const rs2_device *device, rs2_error **error)
bool is_connected() const
Definition: rs_device.hpp:191
void rs2_update_firmware_cpp(const rs2_device *device, const void *fw_image, int fw_image_size, rs2_update_progress_callback *callback, rs2_error **error)
calibration_table get_calibration_table()
Definition: rs_device.hpp:694
std::vector< uint8_t > build_command(uint32_t opcode, uint32_t param1=0, uint32_t param2=0, uint32_t param3=0, uint32_t param4=0, std::vector< uint8_t > const &data={}) const
Definition: rs_device.hpp:1026
void release() override
Definition: rs_device.hpp:946
void write_calibration() const
Definition: rs_device.hpp:394
update_device(device d)
Definition: rs_device.hpp:351
static void handle(rs2_error *e)
Definition: rs_types.hpp:167
calibration_table run_on_chip_calibration(std::string json_content, float *health, T callback, int timeout_ms=5000) const
Definition: rs_device.hpp:462
std::string get_opcode_string(int opcode)
Definition: rs_device.hpp:1073
void rs2_reset_to_factory_calibration(const rs2_device *device, rs2_error **e)
int rs2_device_is_connected(const rs2_device *device, rs2_error **error)
device_calibration()=default
std::vector< uint8_t > run_uv_map_calibration(rs2::frame_queue left, rs2::frame_queue color, rs2::frame_queue depth, int py_px_only, float *health, int health_size, T callback) const
Definition: rs_device.hpp:836
calibration_change_callback(callback cb)
Definition: rs_device.hpp:936
Definition: rs_device.hpp:931
const rs2_raw_data_buffer * rs2_create_flash_backup_cpp(const rs2_device *device, rs2_update_progress_callback *callback, rs2_error **error)
bool contains(const device &dev) const
Definition: rs_device.hpp:1098
const rs2_raw_data_buffer * rs2_send_and_receive_raw_data(rs2_device *device, void *raw_data_to_send, unsigned size_of_raw_data_to_send, rs2_error **error)
Definition: rs_types.h:192
Definition: rs_types.hpp:97
void rs2_hw_monitor_get_opcode_string(int opcode, char *buffer, size_t buffer_size, rs2_device *device, rs2_error **error)
int rs2_is_in_recovery_mode(const rs2_device *device, rs2_error **error)
Definition: rs_types.h:152
calibration_table process_calibration_frame(rs2::frame f, float *const health, T callback, int timeout_ms=5000) const
Definition: rs_device.hpp:645
bool supports(rs2_camera_info info) const
Definition: rs_device.hpp:102
update_progress_callback(T callback)
Definition: rs_device.hpp:244
device & operator=(const std::shared_ptr< rs2_device > dev)
Definition: rs_device.hpp:159
device_list_iterator & operator++()
Definition: rs_device.hpp:1160
device_list()
Definition: rs_device.hpp:1088
Definition: rs_device.hpp:412
updatable()
Definition: rs_device.hpp:257
Definition: rs_device.hpp:1082
const char * rs2_get_firmware_min_version(const rs2_device *device, rs2_error **error)
bool check_firmware_compatibility(const std::vector< uint8_t > &image) const
Definition: rs_device.hpp:321
Definition: rs_device.hpp:384
updatable(device d)
Definition: rs_device.hpp:258
void rs2_enter_update_state(const rs2_device *device, rs2_error **error)
Definition: rs_types.h:200
Definition: rs_context.hpp:251
bool operator!=(const device_list_iterator &other) const
Definition: rs_device.hpp:1152
Definition: rs_types.h:189
void rs2_update_firmware_unsigned_cpp(const rs2_device *device, const void *fw_image, int fw_image_size, rs2_update_progress_callback *callback, int update_mode, rs2_error **error)
std::string get_description() const
Definition: rs_device.hpp:65
void on_calibration_change(rs2_calibration_status status) noexcept override
Definition: rs_device.hpp:938
void rs2_delete_sensor_list(rs2_sensor_list *info_list)
Definition: rs_sensor.h:35
void rs2_set_calibration_config(rs2_device *device, const char *calibration_config_json_str, rs2_error **error)
const rs2_raw_data_buffer * rs2_process_calibration_frame(rs2_device *dev, const rs2_frame *f, float *const health, rs2_update_progress_callback *progress_callback, int timeout_ms, rs2_error **error)
double rs2_get_device_time_ms(const rs2_device *device, rs2_error **error)
Definition: rs_processing.hpp:133
void on_update_progress(const float progress) override
Definition: rs_device.hpp:246
struct rs2_device_list rs2_device_list
Definition: rs_types.h:303
debug_protocol(device d)
Definition: rs_device.hpp:1015
device_list_iterator end() const
Definition: rs_device.hpp:1175
void register_calibration_change_callback(T callback)
Definition: rs_device.hpp:973
Definition: rs_device.hpp:987
struct rs2_error rs2_error
Definition: rs_types.h:295
Definition: rs_device.hpp:1137
float calculate_target_z(rs2::frame_queue queue1, rs2::frame_queue queue2, rs2::frame_queue queue3, float target_width, float target_height, T callback) const
Definition: rs_device.hpp:887
std::shared_ptr< rs2_frame_queue > get()
Definition: rs_processing.hpp:239
Definition: rs_device.hpp:19
float calculate_target_z(rs2::frame_queue queue1, rs2::frame_queue queue2, rs2::frame_queue queue3, float target_width, float target_height) const
Definition: rs_device.hpp:866
int rs2_get_device_count(const rs2_device_list *info_list, rs2_error **error)
calibration_table run_tare_calibration(float ground_truth_mm, std::string json_content, float *health, T callback, int timeout_ms=5000) const
Definition: rs_device.hpp:568
rs2_frame * get() const
Definition: rs_frame.hpp:635
Definition: rs_device.hpp:347
const rs2_raw_data_buffer * rs2_run_on_chip_calibration_cpp(rs2_device *device, const void *json_content, int content_size, float *health, rs2_update_progress_callback *progress_callback, int timeout_ms, rs2_error **error)
const rs2_device_list * get_list() const
Definition: rs_device.hpp:1179
T first() const
Definition: rs_device.hpp:88
virtual ~device()
Definition: rs_device.hpp:222
const rs2_raw_data_buffer * rs2_run_tare_calibration_cpp(rs2_device *dev, float ground_truth_mm, const void *json_content, int content_size, float *health, rs2_update_progress_callback *progress_callback, int timeout_ms, rs2_error **error)
calibration_table run_on_chip_calibration(std::string json_content, float *health, int timeout_ms=5000) const
Definition: rs_device.hpp:516
std::string get_type() const
Definition: rs_device.hpp:55
device(std::shared_ptr< rs2_device > dev)
Definition: rs_device.hpp:227
const char * rs2_get_device_info(const rs2_device *device, rs2_camera_info info, rs2_error **error)