Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
Loading...
Searching...
No Matches
rs_types.hpp
Go to the documentation of this file.
1// License: Apache 2.0. See LICENSE file in root directory.
2// Copyright(c) 2017 Intel Corporation. All Rights Reserved.
3
4#ifndef LIBREALSENSE_RS2_TYPES_HPP
5#define LIBREALSENSE_RS2_TYPES_HPP
6
7#include "../rs.h"
8#include "../h/rs_context.h"
9#include "../h/rs_device.h"
10#include "../h/rs_frame.h"
11#include "../h/rs_processing.h"
12#include "../h/rs_record_playback.h"
13#include "../h/rs_sensor.h"
14#include "../h/rs_pipeline.h"
15
16#include <string>
17#include <vector>
18#include <memory>
19#include <functional>
20#include <exception>
21#include <iterator>
22#include <sstream>
23#include <chrono>
24
26{
27 virtual void on_frame(rs2_frame * f) = 0;
28 virtual void release() = 0;
30};
31
33{
34 virtual void on_frame(rs2_frame * f, rs2_source * source) = 0;
35 virtual void release() = 0;
37};
38
40{
41 virtual void on_notification(rs2_notification* n) = 0;
42 virtual void release() = 0;
44};
45
46typedef void ( *log_callback_function_ptr )(rs2_log_severity severity, rs2_log_message const * msg );
47
54
56{
57 virtual void on_log( rs2_log_severity severity, rs2_log_message const & msg ) noexcept = 0;
58 virtual void release() = 0;
59 virtual ~rs2_log_callback() {}
60};
61
63{
64 virtual void on_calibration_change( rs2_calibration_status ) noexcept = 0;
65 virtual void release() = 0;
67};
68
70{
71 virtual void on_devices_changed(rs2_device_list* removed, rs2_device_list* added) = 0;
72 virtual void release() = 0;
74};
75
82
84{
85 virtual void on_update_progress(const float update_progress) = 0;
86 virtual void release() = 0;
88};
89
90namespace rs2
91{
92 class error : public std::runtime_error
93 {
94 std::string function, args;
96 public:
97 explicit error(rs2_error* err) : runtime_error(rs2_get_error_message(err))
98 {
99 function = (nullptr != rs2_get_failed_function(err)) ? rs2_get_failed_function(err) : std::string();
100 args = (nullptr != rs2_get_failed_args(err)) ? rs2_get_failed_args(err) : std::string();
102 rs2_free_error(err);
103 }
104
105 explicit error(const std::string& message) : runtime_error(message.c_str())
106 {
107 function = "";
108 args = "";
110 }
111
112 const std::string& get_failed_function() const
113 {
114 return function;
115 }
116
117 const std::string& get_failed_args() const
118 {
119 return args;
120 }
121
122 rs2_exception_type get_type() const { return type; }
123
124 static void handle(rs2_error* e);
125 };
126
127 #define RS2_ERROR_CLASS(name, base) \
128 class name : public base\
129 {\
130 public:\
131 explicit name(rs2_error* e) noexcept : base(e) {}\
132 }
133
134 RS2_ERROR_CLASS(recoverable_error, error);
135 RS2_ERROR_CLASS(unrecoverable_error, error);
136 RS2_ERROR_CLASS(camera_disconnected_error, unrecoverable_error);
137 RS2_ERROR_CLASS(backend_error, unrecoverable_error);
138 RS2_ERROR_CLASS(device_in_recovery_mode_error, unrecoverable_error);
139 RS2_ERROR_CLASS(invalid_value_error, recoverable_error);
140 RS2_ERROR_CLASS(wrong_api_call_sequence_error, recoverable_error);
141 RS2_ERROR_CLASS(not_implemented_error, recoverable_error);
142 #undef RS2_ERROR_CLASS
143
144 inline void error::handle(rs2_error* e)
145 {
146 if (e)
147 {
149 switch (h) {
151 throw camera_disconnected_error(e);
153 throw backend_error(e);
155 throw invalid_value_error(e);
157 throw wrong_api_call_sequence_error(e);
159 throw not_implemented_error(e);
161 throw device_in_recovery_mode_error(e);
162 default:
163 throw error(e);
164 }
165 }
166 }
167
168 class context;
169 class device;
170 class device_list;
171 class syncer;
172 class device_base;
173 class roi_sensor;
174 class frame;
175
177 {
178 float min;
179 float max;
180 float def;
181 float step;
182 };
183
185 {
186 int min_x;
187 int min_y;
188 int max_x;
189 int max_y;
190 };
191}
192
193inline std::ostream & operator << (std::ostream & o, rs2_vector v) { return o << v.x << ", " << v.y << ", " << v.z; }
194inline std::ostream & operator << (std::ostream & o, rs2_quaternion q) { return o << q.x << ", " << q.y << ", " << q.z << ", " << q.w; }
195
196#endif // LIBREALSENSE_RS2_TYPES_HPP
Definition rs_context.hpp:97
Definition rs_device.hpp:955
Definition rs_device.hpp:19
Definition rs_types.hpp:93
rs2_exception_type get_type() const
Definition rs_types.hpp:122
error(rs2_error *err)
Definition rs_types.hpp:97
const std::string & get_failed_function() const
Definition rs_types.hpp:112
error(const std::string &message)
Definition rs_types.hpp:105
static void handle(rs2_error *e)
Definition rs_types.hpp:144
const std::string & get_failed_args() const
Definition rs_types.hpp:117
Definition rs_frame.hpp:346
Definition rs_sensor.hpp:422
Definition rs_processing.hpp:642
Definition rs_processing_gl.hpp:13
rs2_calibration_status
Definition rs_device.h:409
rs2_playback_status
Definition rs_record_playback.h:20
rs2_exception_type rs2_get_librealsense_exception_type(const rs2_error *error)
rs2_log_severity
Severity of the librealsense logger.
Definition rs_types.h:153
struct rs2_log_message rs2_log_message
Definition rs_types.h:260
void rs2_free_error(rs2_error *error)
const char * rs2_get_failed_args(const rs2_error *error)
struct rs2_source rs2_source
Definition rs_types.h:275
const char * rs2_get_error_message(const rs2_error *error)
struct rs2_notification rs2_notification
Definition rs_types.h:287
const char * rs2_get_failed_function(const rs2_error *error)
struct rs2_device_list rs2_device_list
Definition rs_types.h:267
struct rs2_error rs2_error
Definition rs_types.h:259
rs2_exception_type
Exception types are the different categories of errors that RealSense API might return.
Definition rs_types.h:31
@ RS2_EXCEPTION_TYPE_NOT_IMPLEMENTED
Definition rs_types.h:37
@ RS2_EXCEPTION_TYPE_CAMERA_DISCONNECTED
Definition rs_types.h:33
@ RS2_EXCEPTION_TYPE_BACKEND
Definition rs_types.h:34
@ RS2_EXCEPTION_TYPE_INVALID_VALUE
Definition rs_types.h:35
@ RS2_EXCEPTION_TYPE_UNKNOWN
Definition rs_types.h:32
@ RS2_EXCEPTION_TYPE_DEVICE_IN_RECOVERY_MODE
Definition rs_types.h:38
@ RS2_EXCEPTION_TYPE_WRONG_API_CALL_SEQUENCE
Definition rs_types.h:36
struct rs2_frame rs2_frame
Definition rs_types.h:262
std::ostream & operator<<(std::ostream &o, rs2_vector v)
Definition rs_types.hpp:193
#define RS2_ERROR_CLASS(name, base)
Definition rs_types.hpp:127
void(* log_callback_function_ptr)(rs2_log_severity severity, rs2_log_message const *msg)
Definition rs_types.hpp:46
Definition rs_types.hpp:177
float def
Definition rs_types.hpp:180
float step
Definition rs_types.hpp:181
float max
Definition rs_types.hpp:179
float min
Definition rs_types.hpp:178
Definition rs_types.hpp:185
int min_x
Definition rs_types.hpp:186
int max_y
Definition rs_types.hpp:189
int max_x
Definition rs_types.hpp:188
int min_y
Definition rs_types.hpp:187
Definition rs_types.hpp:63
virtual void on_calibration_change(rs2_calibration_status) noexcept=0
virtual ~rs2_calibration_change_callback()
Definition rs_types.hpp:66
Definition rs_types.hpp:70
virtual void on_devices_changed(rs2_device_list *removed, rs2_device_list *added)=0
virtual ~rs2_devices_changed_callback()
Definition rs_types.hpp:73
Definition rs_types.hpp:26
virtual ~rs2_frame_callback()
Definition rs_types.hpp:29
virtual void on_frame(rs2_frame *f)=0
virtual void release()=0
Definition rs_types.hpp:33
virtual ~rs2_frame_processor_callback()
Definition rs_types.hpp:36
virtual void on_frame(rs2_frame *f, rs2_source *source)=0
Definition rs_types.hpp:56
virtual void release()=0
virtual ~rs2_log_callback()
Definition rs_types.hpp:59
virtual void on_log(rs2_log_severity severity, rs2_log_message const &msg) noexcept=0
Definition rs_types.hpp:40
virtual void on_notification(rs2_notification *n)=0
virtual ~rs2_notifications_callback()
Definition rs_types.hpp:43
virtual void release()=0
Definition rs_types.hpp:77
virtual void on_playback_status_changed(rs2_playback_status status)=0
virtual ~rs2_playback_status_changed_callback()
Definition rs_types.hpp:80
Quaternion used to represent rotation
Definition rs_types.h:136
float y
Definition rs_types.h:137
float z
Definition rs_types.h:137
float w
Definition rs_types.h:137
float x
Definition rs_types.h:137
virtual ~rs2_software_device_destruction_callback()
Definition rs_types.hpp:52
Definition rs_types.hpp:84
virtual ~rs2_update_progress_callback()
Definition rs_types.hpp:87
virtual void on_update_progress(const float update_progress)=0
3D vector in Euclidean coordinate space
Definition rs_types.h:130
float x
Definition rs_types.h:131
float y
Definition rs_types.h:131
float z
Definition rs_types.h:131