5 #ifndef LIBREALSENSE_DEVICE_H 6 #define LIBREALSENSE_DEVICE_H 28 template<
class U>
double get(U T::* field) {
activate();
return static_cast<double>(struct_.*field); }
29 template<
class U,
class V>
void set(U T::* field, V value) {
activate(); struct_.*field =
static_cast<U
>(value); }
40 : max_number(max_value - min_value + 1), last_number(min_value), num_of_wraparounds(0)
45 if ((number + (num_of_wraparounds*max_number)) < last_number)
49 number += (num_of_wraparounds*max_number);
57 unsigned long long num_of_wraparounds;
62 virtual bool validate_frame(
const subdevice_mode & mode,
const void * frame) = 0;
63 virtual double get_frame_timestamp(
const subdevice_mode & mode,
const void * frame,
double actual_fps) = 0;
64 virtual unsigned long long get_frame_counter(
const subdevice_mode & mode,
const void * frame) = 0;
68 namespace motion_module
77 const std::shared_ptr<rsimpl::uvc::device> device;
84 rsimpl::aligned_stream color_to_depth, depth_to_color, depth_to_rect_color, infrared2_to_depth, depth_to_infrared2;
89 bool data_acquisition_active;
90 std::chrono::high_resolution_clock::time_point capture_started;
91 std::atomic<uint32_t> max_publish_list_size;
92 std::atomic<uint32_t> event_queue_size;
93 std::atomic<uint32_t> events_timeout;
94 std::shared_ptr<rsimpl::syncronizing_archive> archive;
96 mutable std::string usb_port_id;
97 mutable std::mutex usb_port_mutex;
99 std::shared_ptr<std::thread> fw_logger;
102 const rsimpl::uvc::device &
get_device()
const {
return *device; }
105 virtual void start_video_streaming();
106 virtual void stop_video_streaming();
107 virtual void start_motion_tracking();
108 virtual void stop_motion_tracking();
110 virtual void disable_auto_option(
int subdevice,
rs_option auto_opt);
133 void disable_stream(
rs_stream stream)
override;
137 void enable_motion_tracking()
override;
140 void disable_motion_tracking()
override;
143 void set_motion_callback(
void(*on_event)(
rs_device * device,
rs_motion_data data,
void * user),
void * user)
override;
148 virtual void stop(
rs_source source)
override;
150 virtual void start_fw_logger(
char fw_log_op_code,
int grab_rate_in_ms, std::timed_mutex& mutex)
override;
151 virtual void stop_fw_logger()
override;
156 void wait_all_streams()
override;
157 bool poll_all_streams()
override;
163 virtual void get_option_range(
rs_option option,
double & min,
double & max,
double & step,
double & def)
override;
164 virtual void set_options(
const rs_option options[],
size_t count,
const double values[])
override;
165 virtual void get_options(
const rs_option options[],
size_t count,
double values[])
override;
166 virtual void on_before_start(
const std::vector<rsimpl::subdevice_mode_selection> & selected_modes) = 0;
167 virtual rs_stream select_key_stream(
const std::vector<rsimpl::subdevice_mode_selection> & selected_modes) = 0;
168 virtual std::vector<std::shared_ptr<rsimpl::frame_timestamp_reader>>
169 create_frame_timestamp_readers()
const = 0;
177 const char * get_option_description(
rs_option option)
const override;
T struct_
Definition: device.h:20
rsimpl::device_config config
Definition: device.h:79
Definition: rscore.hpp:132
const char * get_firmware_version() const override
Definition: device.h:126
rs_blob_type
Definition: rs.h:219
Definition: motion-module.h:152
std::string name
Definition: types.h:270
struct_interface(R r, W w)
Definition: device.h:25
float depth_scale
Definition: types.h:456
bool motion_module_ready
Definition: device.h:113
rs_option
Definition: rs.h:120
const char * get_name() const override
Definition: device.h:124
virtual void on_before_callback(rs_stream, rs_frame_ref *, std::shared_ptr< rsimpl::frame_archive >)
Definition: device.h:111
std::string get_usb_port_id(const device &device)
rs_output_buffer_format
Definition: rs.h:66
option
Definition: rs.hpp:82
float get_depth_scale() const override
Definition: device.h:127
const uint8_t RS_STREAM_NATIVE_COUNT
Definition: types.h:27
bool active
Definition: device.h:23
virtual void send_blob_to_device(rs_blob_type, void *, int)
Definition: device.h:174
std::string serial
Definition: types.h:280
stream
Definition: rs.hpp:20
std::string firmware_version
Definition: types.h:279
const rsimpl::uvc::device & get_device() const
Definition: device.h:102
rs_camera_info
Definition: rs.h:227
format
Definition: rs.hpp:38
std::atomic< bool > keep_fw_logger_alive
Definition: device.h:114
source
Definition: rs.hpp:212
Definition: rscore.hpp:125
rs_format
Definition: rs.h:46
int is_motion_tracking_active() const override
Definition: device.h:154
const char * get_serial() const override
Definition: device.h:125
const static_device_info info
Definition: types.h:450
rs_source
Definition: rs.h:83
W writer
Definition: device.h:22
rs_preset
Definition: rs.h:74
rs_stream
Definition: rs.h:27
rs_capabilities
Definition: rs.h:204
Definition: rscore.hpp:64
rsimpl::uvc::device & get_device()
Definition: device.h:103
Definition: rscore.hpp:139
Definition: rscore.hpp:44
void commit()
Definition: device.h:30
wraparound_mechanism(T min_value, T max_value)
Definition: device.h:39
R reader
Definition: device.h:21
std::atomic< int > frames_drops_counter
Definition: device.h:116
struct_interface< T, R, W > make_struct_interface(R r, W w)
Definition: device.h:33
T fix(T number)
Definition: device.h:43
const rsimpl::stream_interface & get_stream_interface(rs_stream stream) const override
Definition: device.h:122
bool is_capturing() const override
Definition: device.h:153
preset
Definition: rs.hpp:64
void activate()
Definition: device.h:27