4 #ifndef LIBREALSENSE_RS2_DEVICE_HPP
5 #define LIBREALSENSE_RS2_DEVICE_HPP
15 class pipeline_profile;
28 std::shared_ptr<rs2_sensor_list> list(
36 std::vector<sensor> results;
37 for (
auto i = 0; i < size; i++)
39 std::shared_ptr<rs2_sensor> dev(
45 results.push_back(rs2_dev);
56 if (
auto t = s.as<T>())
return t;
58 throw rs2::error(
"Could not find requested sensor type!");
71 return is_supported > 0;
112 operator bool()
const
114 return _dev !=
nullptr;
116 const std::shared_ptr<rs2_device>&
get()
const
138 explicit operator std::shared_ptr<rs2_device>() {
return _dev; };
139 explicit device(std::shared_ptr<rs2_device> dev) :
_dev(dev) {}
146 std::shared_ptr<rs2_device>
_dev;
193 std::vector<uint8_t> results;
196 std::shared_ptr<const rs2_raw_data_buffer> list(
206 results.insert(results.begin(), start, start + size);
214 std::vector<uint8_t> results;
217 std::shared_ptr<const rs2_raw_data_buffer> list(
227 results.insert(results.begin(), start, start + size);
267 void update(
const std::vector<uint8_t>& fw_image)
const
277 void update(
const std::vector<uint8_t>& fw_image, T callback)
const
352 std::vector<uint8_t> results;
355 std::shared_ptr<const rs2_raw_data_buffer> list(
365 results.insert(results.begin(), start, start + size);
391 std::vector<uint8_t> results;
394 std::shared_ptr<const rs2_raw_data_buffer> list(
403 results.insert(results.begin(), start, start + size);
433 std::vector<uint8_t> results;
436 std::shared_ptr<const rs2_raw_data_buffer> list(
446 results.insert(results.begin(), start, start + size);
474 std::vector<uint8_t> results;
477 std::shared_ptr<const rs2_raw_data_buffer> list(
487 results.insert(results.begin(), start, start + size);
498 std::vector<uint8_t> results;
501 std::shared_ptr<const rs2_raw_data_buffer> list(
511 results.insert(results.begin(), start, start + size);
531 template<
class callback >
568 template<
typename T >
609 std::vector<uint8_t> results;
612 std::shared_ptr<const rs2_raw_data_buffer> list(
622 results.insert(results.begin(), start, start + size);
632 : _list(move(list)) {}
637 operator std::vector<device>()
const
639 std::vector<device> res;
640 for (
auto&& dev : *
this) res.push_back(dev);
661 std::shared_ptr<rs2_device> dev(
680 return std::move((*
this)[
size() - 1]);
696 return _list[_index];
700 return other._index != _index || &other._list != &_list;
704 return !(*
this != other);
730 operator std::shared_ptr<rs2_device_list>() {
return _list; };
733 std::shared_ptr<rs2_device_list> _list;
789 return is_enabled != 0;
838 auto from_sensor = get_sensor_profile(from_stream, from_id);
839 auto to_sensor = get_sensor_profile(to_stream, to_id);
840 rs2_set_extrinsics(from_sensor.first.get().get(), from_sensor.second.get(), to_sensor.first.get().get(), to_sensor.second.get(), &extrinsics, &e);
859 std::pair<sensor, stream_profile> get_sensor_profile(
rs2_stream stream_type,
int stream_index) {
861 for (
auto p : s.get_stream_profiles()) {
862 if (p.stream_type() == stream_type && p.stream_index() == stream_index)
863 return std::pair<sensor, stream_profile>(s, p);
866 return std::pair<sensor, stream_profile>();
Definition: rs_device.hpp:316
auto_calibrated_device(device d)
Definition: rs_device.hpp:318
calibration_table run_tare_calibration(float ground_truth_mm, std::string json_content, T callback, int timeout_ms=5000) const
Definition: rs_device.hpp:431
calibration_table get_calibration_table()
Definition: rs_device.hpp:496
calibration_table run_on_chip_calibration(std::string json_content, float *health, int timeout_ms=5000) const
Definition: rs_device.hpp:389
void set_calibration_table(const calibration_table &calibration)
Definition: rs_device.hpp:520
calibration_table run_tare_calibration(float ground_truth_mm, std::string json_content, int timeout_ms=5000) const
Definition: rs_device.hpp:472
calibration_table run_on_chip_calibration(std::string json_content, float *health, T callback, int timeout_ms=5000) const
Definition: rs_device.hpp:350
Definition: rs_device.hpp:288
calibrated_device(device d)
Definition: rs_device.hpp:290
void write_calibration() const
Definition: rs_device.hpp:297
void reset_to_factory_calibration()
Definition: rs_device.hpp:307
Definition: rs_device.hpp:533
calibration_change_callback(callback cb)
Definition: rs_device.hpp:537
void on_calibration_change(rs2_calibration_status status) noexcept override
Definition: rs_device.hpp:539
void release() override
Definition: rs_device.hpp:543
Definition: rs_context.hpp:97
Definition: rs_device.hpp:594
debug_protocol(device d)
Definition: rs_device.hpp:596
std::vector< uint8_t > send_and_receive_raw_data(const std::vector< uint8_t > &input) const
Definition: rs_device.hpp:607
Definition: rs_device.hpp:547
void trigger_device_calibration(rs2_calibration_type type)
Definition: rs_device.hpp:585
device_calibration(device d)
Definition: rs_device.hpp:549
void register_calibration_change_callback(T callback)
Definition: rs_device.hpp:569
Definition: rs_context.hpp:225
Definition: rs_device.hpp:684
device operator*() const
Definition: rs_device.hpp:694
device_list_iterator & operator++()
Definition: rs_device.hpp:706
bool operator==(const device_list_iterator &other) const
Definition: rs_device.hpp:702
bool operator!=(const device_list_iterator &other) const
Definition: rs_device.hpp:698
Definition: rs_device.hpp:629
device_list(std::shared_ptr< rs2_device_list > list)
Definition: rs_device.hpp:631
device back() const
Definition: rs_device.hpp:678
const rs2_device_list * get_list() const
Definition: rs_device.hpp:725
device operator[](uint32_t index) const
Definition: rs_device.hpp:658
bool contains(const device &dev) const
Definition: rs_device.hpp:644
device_list & operator=(std::shared_ptr< rs2_device_list > list)
Definition: rs_device.hpp:652
uint32_t size() const
Definition: rs_device.hpp:669
device_list_iterator end() const
Definition: rs_device.hpp:721
device front() const
Definition: rs_device.hpp:677
device_list_iterator begin() const
Definition: rs_device.hpp:717
device_list()
Definition: rs_device.hpp:634
Definition: rs_device.hpp:19
device(std::shared_ptr< rs2_device > dev)
Definition: rs_device.hpp:139
virtual ~device()
Definition: rs_device.hpp:134
const char * get_info(rs2_camera_info info) const
Definition: rs_device.hpp:79
void hardware_reset()
Definition: rs_device.hpp:90
T as() const
Definition: rs_device.hpp:129
T first() const
Definition: rs_device.hpp:52
const std::shared_ptr< rs2_device > & get() const
Definition: rs_device.hpp:116
device & operator=(const device &dev)
Definition: rs_device.hpp:104
bool is() const
Definition: rs_device.hpp:122
std::shared_ptr< rs2_device > _dev
Definition: rs_device.hpp:146
device()
Definition: rs_device.hpp:110
std::vector< sensor > query_sensors() const
Definition: rs_device.hpp:25
device & operator=(const std::shared_ptr< rs2_device > dev)
Definition: rs_device.hpp:98
bool supports(rs2_camera_info info) const
Definition: rs_device.hpp:66
Definition: rs_types.hpp:93
static void handle(rs2_error *e)
Definition: rs_types.hpp:144
Definition: rs_sensor.hpp:406
Definition: rs_sensor.hpp:390
Definition: rs_pipeline.hpp:19
Definition: rs_sensor.hpp:103
const std::shared_ptr< rs2_sensor > & get() const
Definition: rs_sensor.hpp:320
Definition: rs_device.hpp:746
void disconnect_controller(int id)
Definition: rs_device.hpp:807
void set_motion_device_intrinsics(rs2_stream stream_type, const rs2_motion_device_intrinsic &motion_intriniscs)
Definition: rs_device.hpp:849
void connect_controller(const std::array< uint8_t, 6 > &mac_addr)
Definition: rs_device.hpp:796
void disable_loopback()
Definition: rs_device.hpp:773
bool is_loopback_enabled() const
Definition: rs_device.hpp:784
void enable_loopback(const std::string &from_file)
Definition: rs_device.hpp:763
void set_extrinsics(rs2_stream from_stream, int from_id, rs2_stream to_stream, int to_id, rs2_extrinsics &extrinsics)
Definition: rs_device.hpp:835
void set_intrinsics(int fisheye_sensor_id, const rs2_intrinsics &intrinsics)
Definition: rs_device.hpp:819
tm2(device d)
Definition: rs_device.hpp:748
Definition: rs_device.hpp:167
updatable()
Definition: rs_device.hpp:169
std::vector< uint8_t > create_flash_backup(T callback) const
Definition: rs_device.hpp:212
void enter_update_state() const
Definition: rs_device.hpp:182
void update_unsigned(const std::vector< uint8_t > &image, int update_mode=RS2_UNSIGNED_UPDATE_MODE_UPDATE) const
Definition: rs_device.hpp:233
updatable(device d)
Definition: rs_device.hpp:170
void update_unsigned(const std::vector< uint8_t > &image, T callback, int update_mode=RS2_UNSIGNED_UPDATE_MODE_UPDATE) const
Definition: rs_device.hpp:242
std::vector< uint8_t > create_flash_backup() const
Definition: rs_device.hpp:191
Definition: rs_device.hpp:251
update_device()
Definition: rs_device.hpp:253
update_device(device d)
Definition: rs_device.hpp:254
void update(const std::vector< uint8_t > &fw_image) const
Definition: rs_device.hpp:267
void update(const std::vector< uint8_t > &fw_image, T callback) const
Definition: rs_device.hpp:277
Definition: rs_device.hpp:152
void release() override
Definition: rs_device.hpp:163
update_progress_callback(T callback)
Definition: rs_device.hpp:156
void on_update_progress(const float progress) override
Definition: rs_device.hpp:158
Definition: rs_context.hpp:12
std::vector< uint8_t > calibration_table
Definition: rs_device.hpp:285
const unsigned char * rs2_get_raw_data(const rs2_raw_data_buffer *buffer, rs2_error **error)
int rs2_get_raw_data_size(const rs2_raw_data_buffer *buffer, rs2_error **error)
void rs2_delete_raw_data(const rs2_raw_data_buffer *buffer)
int rs2_get_device_count(const rs2_device_list *info_list, rs2_error **error)
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)
rs2_calibration_type
Definition: rs_device.h:319
void rs2_trigger_device_calibration(rs2_device *dev, rs2_calibration_type type, rs2_error **error)
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)
void rs2_reset_to_factory_calibration(const rs2_device *device, rs2_error **e)
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)
rs2_device * rs2_create_device(const rs2_device_list *info_list, int index, rs2_error **error)
#define RS2_UNSIGNED_UPDATE_MODE_UPDATE
Definition: rs_device.h:206
void rs2_set_calibration_table(const rs2_device *device, const void *calibration, int calibration_size, rs2_error **error)
void rs2_delete_device(rs2_device *device)
int rs2_is_device_extendable_to(const rs2_device *device, rs2_extension extension, rs2_error **error)
void rs2_write_calibration(const rs2_device *device, rs2_error **e)
void rs2_enter_update_state(const rs2_device *device, rs2_error **error)
void rs2_connect_tm2_controller(const rs2_device *device, const unsigned char *mac_addr, rs2_error **error)
const rs2_raw_data_buffer * rs2_get_calibration_table(const rs2_device *dev, rs2_error **error)
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)
int rs2_loopback_is_enabled(const rs2_device *device, rs2_error **error)
int rs2_supports_device_info(const rs2_device *device, rs2_camera_info info, rs2_error **error)
int rs2_device_list_contains(const rs2_device_list *info_list, const rs2_device *device, rs2_error **error)
void rs2_hardware_reset(const rs2_device *device, rs2_error **error)
void rs2_loopback_disable(const rs2_device *device, rs2_error **error)
void rs2_loopback_enable(const rs2_device *device, const char *from_file, rs2_error **error)
const rs2_raw_data_buffer * rs2_run_tare_calibration_cpp(rs2_device *dev, float ground_truth_mm, const void *json_content, int content_size, rs2_update_progress_callback *progress_callback, int timeout_ms, rs2_error **error)
void rs2_register_calibration_change_callback_cpp(rs2_device *dev, rs2_calibration_change_callback *callback, rs2_error **error)
rs2_calibration_status
Definition: rs_device.h:330
rs2_sensor_list * rs2_query_sensors(const rs2_device *device, rs2_error **error)
const char * rs2_get_device_info(const rs2_device *device, rs2_camera_info info, rs2_error **error)
const rs2_raw_data_buffer * rs2_create_flash_backup_cpp(const rs2_device *device, rs2_update_progress_callback *callback, rs2_error **error)
void rs2_disconnect_tm2_controller(const rs2_device *device, int id, rs2_error **error)
rs2_stream
Streams are different types of data provided by RealSense devices.
Definition: rs_sensor.h:43
@ RS2_STREAM_FISHEYE
Definition: rs_sensor.h:48
rs2_sensor * rs2_create_sensor(const rs2_sensor_list *list, int index, rs2_error **error)
void rs2_delete_sensor_list(rs2_sensor_list *info_list)
void rs2_set_extrinsics(const rs2_sensor *from_sensor, const rs2_stream_profile *from_profile, rs2_sensor *to_sensor, const rs2_stream_profile *to_profile, const rs2_extrinsics *extrinsics, rs2_error **error)
void rs2_delete_sensor(rs2_sensor *sensor)
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
void rs2_set_motion_device_intrinsics(const rs2_sensor *sensor, const rs2_stream_profile *profile, const rs2_motion_device_intrinsic *intrinsics, rs2_error **error)
void rs2_set_intrinsics(const rs2_sensor *sensor, const rs2_stream_profile *profile, const rs2_intrinsics *intrinsics, rs2_error **error)
@ RS2_EXTENSION_DEBUG
Definition: rs_types.h:163
@ RS2_EXTENSION_UPDATABLE
Definition: rs_types.h:199
@ RS2_EXTENSION_AUTO_CALIBRATED_DEVICE
Definition: rs_types.h:203
@ RS2_EXTENSION_TM2
Definition: rs_types.h:184
@ RS2_EXTENSION_DEVICE_CALIBRATION
Definition: rs_types.h:211
@ RS2_EXTENSION_UPDATE_DEVICE
Definition: rs_types.h:200
struct rs2_device_list rs2_device_list
Definition: rs_types.h:258
struct rs2_error rs2_error
Definition: rs_types.h:250
Definition: rs_types.hpp:63
Cross-stream extrinsics: encodes the topology describing how the different devices are oriented.
Definition: rs_sensor.h:96
Video stream intrinsics.
Definition: rs_types.h:59
Motion device intrinsics: scale, bias, and variances.
Definition: rs_types.h:98
Definition: rs_types.hpp:84