Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
rs_advanced_mode.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 R4XX_ADVANCED_MODE_HPP
5 #define R4XX_ADVANCED_MODE_HPP
6 
7 #include <cmath>
8 #include "rs.hpp"
9 #include "rs_advanced_mode.h"
10 
11 namespace rs400
12 {
13  class advanced_mode : public rs2::device
14  {
15  public:
17  : rs2::device(d.get())
18  {
19  rs2_error* e = nullptr;
21  {
22  _dev = nullptr;
23  }
25  }
26 
27  void toggle_advanced_mode(bool enable)
28  {
29  rs2_error* e = nullptr;
30  rs2_toggle_advanced_mode(_dev.get(), enable, &e);
32  }
33 
34  bool is_enabled() const
35  {
36  rs2_error* e = nullptr;
37  int enabled=0;
38  rs2_is_enabled(_dev.get(), &enabled, &e);
40 
41  return !!enabled;
42  }
43 
45  {
46  rs2_error* e = nullptr;
47  rs2_set_depth_control(_dev.get(), &group, &e);
49  }
50 
52  {
53  rs2_error* e = nullptr;
54  STDepthControlGroup group{};
55  rs2_get_depth_control(_dev.get(), &group, mode, &e);
57 
58  return group;
59  }
60 
61  void set_rsm(const STRsm& group)
62  {
63  rs2_error* e = nullptr;
64  rs2_set_rsm(_dev.get(), &group, &e);
66  }
67 
68  STRsm get_rsm(int mode = 0) const
69  {
70  rs2_error* e = nullptr;
71  STRsm group{};
72  rs2_get_rsm(_dev.get(), &group, mode, &e);
74 
75  return group;
76  }
77 
79  {
80  rs2_error* e = nullptr;
81  rs2_set_rau_support_vector_control(_dev.get(), &group, &e);
83  }
84 
86  {
87  rs2_error* e = nullptr;
89  rs2_get_rau_support_vector_control(_dev.get(), &group, mode, &e);
91 
92  return group;
93  }
94 
95  void set_color_control(const STColorControl& group)
96  {
97  rs2_error* e = nullptr;
98  rs2_set_color_control(_dev.get(), &group, &e);
100  }
101 
102  STColorControl get_color_control(int mode = 0) const
103  {
104  rs2_error* e = nullptr;
105  STColorControl group{};
106  rs2_get_color_control(_dev.get(), &group, mode, &e);
108 
109  return group;
110  }
111 
113  {
114  rs2_error* e = nullptr;
115  rs2_set_rau_thresholds_control(_dev.get(), &group, &e);
117  }
118 
120  {
121  rs2_error* e = nullptr;
123  rs2_get_rau_thresholds_control(_dev.get(), &group, mode, &e);
125 
126  return group;
127  }
128 
130  {
131  rs2_error* e = nullptr;
132  rs2_set_slo_color_thresholds_control(_dev.get(), &group, &e);
134  }
135 
137  {
138  rs2_error* e = nullptr;
140  rs2_get_slo_color_thresholds_control(_dev.get(), &group, mode, &e);
142 
143  return group;
144  }
145 
147  {
148  rs2_error* e = nullptr;
149  rs2_set_slo_penalty_control(_dev.get(), &group, &e);
151  }
152 
154  {
155  rs2_error* e = nullptr;
156  STSloPenaltyControl group{};
157  rs2_get_slo_penalty_control(_dev.get(), &group, mode, &e);
159 
160  return group;
161  }
162 
163  void set_hdad(const STHdad& group)
164  {
165  rs2_error* e = nullptr;
166  rs2_set_hdad(_dev.get(), &group, &e);
168  }
169 
170  STHdad get_hdad(int mode = 0) const
171  {
172  rs2_error* e = nullptr;
173  STHdad group{};
174  rs2_get_hdad(_dev.get(), &group, mode, &e);
176 
177  return group;
178  }
179 
181  {
182  rs2_error* e = nullptr;
183  rs2_set_color_correction(_dev.get(), &group, &e);
185  }
186 
188  {
189  rs2_error* e = nullptr;
190  STColorCorrection group{};
191  rs2_get_color_correction(_dev.get(), &group, mode, &e);
193 
194  return group;
195  }
196 
198  {
199  rs2_error* e = nullptr;
200  rs2_set_depth_table(_dev.get(), &group, &e);
202  }
203 
205  {
206  rs2_error* e = nullptr;
207  STDepthTableControl group{};
208  rs2_get_depth_table(_dev.get(), &group, mode, &e);
210 
211  return group;
212  }
213 
214  void set_ae_control(const STAEControl& group)
215  {
216  rs2_error* e = nullptr;
217  rs2_set_ae_control(_dev.get(), &group, &e);
219  }
220 
221  STAEControl get_ae_control(int mode = 0) const
222  {
223  rs2_error* e = nullptr;
224  STAEControl group{};
225  rs2_get_ae_control(_dev.get(), &group, mode, &e);
227 
228  return group;
229  }
230 
231  void set_census(const STCensusRadius& group)
232  {
233  rs2_error* e = nullptr;
234  rs2_set_census(_dev.get(), &group, &e);
236  }
237 
238  STCensusRadius get_census(int mode = 0) const
239  {
240  rs2_error* e = nullptr;
241  STCensusRadius group{};
242  rs2_get_census(_dev.get(), &group, mode, &e);
244 
245  return group;
246  }
247 
248  void set_amp_factor(const STAFactor& group)
249  {
250  rs2_error* e = nullptr;
251  rs2_set_amp_factor(_dev.get(), &group, &e);
253  }
254 
255  STAFactor get_amp_factor(int mode = 0) const
256  {
257  rs2_error* e = nullptr;
258  STAFactor group{};
259  rs2_get_amp_factor(_dev.get(), &group, mode, &e);
261 
262  return group;
263  }
264 
265  std::string serialize_json() const
266  {
267  std::string results;
268 
269  rs2_error* e = nullptr;
270  std::shared_ptr<rs2_raw_data_buffer> json_data(
271  rs2_serialize_json(_dev.get(), &e),
274 
275  auto size = rs2_get_raw_data_size(json_data.get(), &e);
277 
278  auto start = rs2_get_raw_data(json_data.get(), &e);
280 
281  results.insert(results.begin(), start, start + size);
282 
283  return results;
284  }
285 
286  void load_json(const std::string& json_content)
287  {
288  rs2_error* e = nullptr;
289  rs2_load_json(_dev.get(),
290  json_content.data(),
291  (unsigned int)json_content.size(),
292  &e);
294  }
295  };
296 }
297 
298 inline std::ostream & operator << (std::ostream & o, rs2_rs400_visual_preset preset) { return o << rs2_rs400_visual_preset_to_string(preset); }
299 
300 inline bool operator==(const STDepthControlGroup& a, const STDepthControlGroup& b)
301 {
302  return (a.plusIncrement == b.plusIncrement &&
305  a.scoreThreshA == b.scoreThreshA &&
306  a.scoreThreshB == b.scoreThreshB &&
312 }
313 
314 inline bool operator==(const STRsm& a, const STRsm& b)
315 {
316  return (a.rsmBypass == b.rsmBypass &&
317  a.diffThresh == b.diffThresh &&
319  a.removeThresh == b.removeThresh);
320 }
321 
323 {
324  return (a.minWest == b.minWest &&
325  a.minEast == b.minEast &&
326  a.minWEsum == b.minWEsum &&
327  a.minNorth == b.minNorth &&
328  a.minSouth == b.minSouth &&
329  a.minNSsum == b.minNSsum &&
330  a.uShrink == b.uShrink &&
331  a.vShrink == b.vShrink);
332 }
333 
334 inline bool operator==(const STColorControl& a, const STColorControl& b)
335 {
336  return (a.disableSADColor == b.disableSADColor &&
341 }
342 
344 {
345  return (a.rauDiffThresholdRed == b.rauDiffThresholdRed &&
348 }
349 
351 {
352  return (a.diffThresholdRed == b.diffThresholdRed &&
355 }
356 
357 inline bool operator==(const STSloPenaltyControl& a, const STSloPenaltyControl& b)
358 {
359  return (a.sloK1Penalty == b.sloK1Penalty &&
360  a.sloK2Penalty == b.sloK2Penalty &&
365 }
366 
367 inline bool operator==(const STHdad& a, const STHdad& b)
368 {
369  return (a.lambdaCensus == b.lambdaCensus &&
370  a.lambdaAD == b.lambdaAD &&
371  a.ignoreSAD == b.ignoreSAD);
372 }
373 
374 inline bool operator==(const STColorCorrection& a, const STColorCorrection& b)
375 {
376  return (a.colorCorrection1 == b.colorCorrection1 &&
388 }
389 
390 inline bool operator==(const STAEControl& a, const STAEControl& b)
391 {
393 }
394 
395 inline bool operator==(const STDepthTableControl& a, const STDepthTableControl& b)
396 {
397  return (a.depthUnits == b.depthUnits &&
398  a.depthClampMin == b.depthClampMin &&
399  a.depthClampMax == b.depthClampMax &&
400  a.disparityMode == b.disparityMode &&
402 }
403 
404 inline bool operator==(const STCensusRadius& a, const STCensusRadius& b)
405 {
406  return (a.uDiameter == b.uDiameter &&
407  a.vDiameter == b.vDiameter);
408 }
409 
410 inline bool operator==(const STAFactor& a, const STAFactor& b)
411 {
412  return (fabs(a.amplitude - b.amplitude) < std::numeric_limits<float>::epsilon());
413 }
414 
415 
416 #endif // R4XX_ADVANCED_MODE_HPP
STCensusRadius get_census(int mode=0) const
Definition: rs_advanced_mode.hpp:238
void set_color_control(const STColorControl &group)
Definition: rs_advanced_mode.hpp:95
uint32_t uDiameter
Definition: rs_advanced_mode_command.h:121
STSloColorThresholdsControl get_slo_color_thresholds_control(int mode=0) const
Definition: rs_advanced_mode.hpp:136
void set_slo_color_thresholds_control(const STSloColorThresholdsControl &group)
Definition: rs_advanced_mode.hpp:129
uint32_t minNorth
Definition: rs_advanced_mode_command.h:41
void load_json(const std::string &json_content)
Definition: rs_advanced_mode.hpp:286
void rs2_set_depth_table(rs2_device *dev, const STDepthTableControl *group, rs2_error **error)
uint32_t sloK2PenaltyMod1
Definition: rs_advanced_mode_command.h:76
void rs2_set_hdad(rs2_device *dev, const STHdad *group, rs2_error **error)
void rs2_toggle_advanced_mode(rs2_device *dev, int enable, rs2_error **error)
float colorCorrection2
Definition: rs_advanced_mode_command.h:92
uint32_t rauDiffThresholdGreen
Definition: rs_advanced_mode_command.h:60
void rs2_get_depth_control(rs2_device *dev, STDepthControlGroup *group, int mode, rs2_error **error)
device()
Definition: rs_device.hpp:110
Definition: rs_advanced_mode_command.h:48
void rs2_set_depth_control(rs2_device *dev, const STDepthControlGroup *group, rs2_error **error)
STHdad get_hdad(int mode=0) const
Definition: rs_advanced_mode.hpp:170
void rs2_set_rau_support_vector_control(rs2_device *dev, const STRauSupportVectorControl *group, rs2_error **error)
uint32_t scoreThreshA
Definition: rs_advanced_mode_command.h:19
uint32_t sloK1PenaltyMod1
Definition: rs_advanced_mode_command.h:75
void set_slo_penalty_control(const STSloPenaltyControl &group)
Definition: rs_advanced_mode.hpp:146
float diffThresh
Definition: rs_advanced_mode_command.h:31
uint32_t scoreThreshB
Definition: rs_advanced_mode_command.h:20
void rs2_get_rau_support_vector_control(rs2_device *dev, STRauSupportVectorControl *group, int mode, rs2_error **error)
float colorCorrection11
Definition: rs_advanced_mode_command.h:101
uint32_t textureDifferenceThreshold
Definition: rs_advanced_mode_command.h:21
Definition: rs_advanced_mode_command.h:14
uint32_t diffThresholdRed
Definition: rs_advanced_mode_command.h:66
void set_ae_control(const STAEControl &group)
Definition: rs_advanced_mode.hpp:214
uint32_t plusIncrement
Definition: rs_advanced_mode_command.h:16
int32_t depthClampMax
Definition: rs_advanced_mode_command.h:114
uint32_t rauDiffThresholdRed
Definition: rs_advanced_mode_command.h:59
void set_census(const STCensusRadius &group)
Definition: rs_advanced_mode.hpp:231
const unsigned char * rs2_get_raw_data(const rs2_raw_data_buffer *buffer, rs2_error **error)
uint32_t sloK2Penalty
Definition: rs_advanced_mode_command.h:74
STDepthTableControl get_depth_table(int mode=0) const
Definition: rs_advanced_mode.hpp:204
Definition: rs_context.hpp:11
void rs2_delete_raw_data(const rs2_raw_data_buffer *buffer)
Definition: rs_types.h:148
uint32_t ignoreSAD
Definition: rs_advanced_mode_command.h:86
uint32_t rsmBypass
Definition: rs_advanced_mode_command.h:30
float colorCorrection7
Definition: rs_advanced_mode_command.h:97
void rs2_is_enabled(rs2_device *dev, int *enabled, rs2_error **error)
uint32_t sloK1PenaltyMod2
Definition: rs_advanced_mode_command.h:77
uint32_t minWEsum
Definition: rs_advanced_mode_command.h:40
STSloPenaltyControl get_slo_penalty_control(int mode=0) const
Definition: rs_advanced_mode.hpp:153
int rs2_get_raw_data_size(const rs2_raw_data_buffer *buffer, rs2_error **error)
Definition: rs_advanced_mode_command.h:71
void rs2_get_rau_thresholds_control(rs2_device *dev, STRauColorThresholdsControl *group, int mode, rs2_error **error)
void rs2_set_color_control(rs2_device *dev, const STColorControl *group, rs2_error **error)
void set_depth_control(const STDepthControlGroup &group)
Definition: rs_advanced_mode.hpp:44
advanced_mode(rs2::device d)
Definition: rs_advanced_mode.hpp:16
void rs2_set_ae_control(rs2_device *dev, const STAEControl *group, rs2_error **error)
Definition: rs_advanced_mode_command.h:28
void rs2_get_hdad(rs2_device *dev, STHdad *group, int mode, rs2_error **error)
void rs2_set_slo_color_thresholds_control(rs2_device *dev, const STSloColorThresholdsControl *group, rs2_error **error)
STColorControl get_color_control(int mode=0) const
Definition: rs_advanced_mode.hpp:102
uint32_t textureCountThreshold
Definition: rs_advanced_mode_command.h:22
void rs2_get_amp_factor(rs2_device *dev, STAFactor *group, int mode, rs2_error **error)
float colorCorrection12
Definition: rs_advanced_mode_command.h:102
void rs2_get_color_control(rs2_device *dev, STColorControl *group, int mode, rs2_error **error)
uint32_t vDiameter
Definition: rs_advanced_mode_command.h:122
void set_depth_table(const STDepthTableControl &group)
Definition: rs_advanced_mode.hpp:197
void rs2_set_amp_factor(rs2_device *dev, const STAFactor *group, rs2_error **error)
std::string serialize_json() const
Definition: rs_advanced_mode.hpp:265
uint32_t sloK2PenaltyMod2
Definition: rs_advanced_mode_command.h:78
STRauColorThresholdsControl get_rau_thresholds_control(int mode=0) const
Definition: rs_advanced_mode.hpp:119
bool is_enabled() const
Definition: rs_advanced_mode.hpp:34
STColorCorrection get_color_correction(int mode=0) const
Definition: rs_advanced_mode.hpp:187
Definition: rs_advanced_mode_command.h:125
uint32_t disableRAUColor
Definition: rs_advanced_mode_command.h:51
float amplitude
Definition: rs_advanced_mode_command.h:127
void rs2_get_census(rs2_device *dev, STCensusRadius *group, int mode, rs2_error **error)
void set_rau_thresholds_control(const STRauColorThresholdsControl &group)
Definition: rs_advanced_mode.hpp:112
int rs2_is_device_extendable_to(const rs2_device *device, rs2_extension extension, rs2_error **error)
uint32_t minEast
Definition: rs_advanced_mode_command.h:39
const std::shared_ptr< rs2_device > & get() const
Definition: rs_device.hpp:116
Definition: rs_advanced_mode_command.h:64
float lambdaAD
Definition: rs_advanced_mode_command.h:85
uint32_t vShrink
Definition: rs_advanced_mode_command.h:45
uint32_t rauDiffThresholdBlue
Definition: rs_advanced_mode_command.h:61
std::shared_ptr< rs2_device > _dev
Definition: rs_device.hpp:146
Definition: rs_advanced_mode_command.h:89
STDepthControlGroup get_depth_control(int mode=0) const
Definition: rs_advanced_mode.hpp:51
void rs2_get_depth_table(rs2_device *dev, STDepthTableControl *group, int mode, rs2_error **error)
void toggle_advanced_mode(bool enable)
Definition: rs_advanced_mode.hpp:27
Definition: rs_advanced_mode_command.h:105
Definition: rs_advanced_mode_command.h:119
uint32_t minusDecrement
Definition: rs_advanced_mode_command.h:17
uint32_t sloK1Penalty
Definition: rs_advanced_mode_command.h:73
static void handle(rs2_error *e)
Definition: rs_types.hpp:128
STAFactor get_amp_factor(int mode=0) const
Definition: rs_advanced_mode.hpp:255
void rs2_get_ae_control(rs2_device *dev, STAEControl *group, int mode, rs2_error **error)
bool operator==(const STDepthControlGroup &a, const STDepthControlGroup &b)
Definition: rs_advanced_mode.hpp:300
uint32_t disableSLORightColor
Definition: rs_advanced_mode_command.h:52
uint32_t lrAgreeThreshold
Definition: rs_advanced_mode_command.h:25
float colorCorrection3
Definition: rs_advanced_mode_command.h:93
void set_hdad(const STHdad &group)
Definition: rs_advanced_mode.hpp:163
STAEControl get_ae_control(int mode=0) const
Definition: rs_advanced_mode.hpp:221
void rs2_load_json(rs2_device *dev, const void *json_content, unsigned content_size, rs2_error **error)
uint32_t deepSeaMedianThreshold
Definition: rs_advanced_mode_command.h:18
Definition: rs_advanced_mode.hpp:11
float colorCorrection1
Definition: rs_advanced_mode_command.h:91
void rs2_set_rsm(rs2_device *dev, const STRsm *group, rs2_error **error)
int32_t disparityShift
Definition: rs_advanced_mode_command.h:116
Definition: rs_advanced_mode_command.h:82
uint32_t minNSsum
Definition: rs_advanced_mode_command.h:43
float colorCorrection6
Definition: rs_advanced_mode_command.h:96
uint32_t minWest
Definition: rs_advanced_mode_command.h:38
uint32_t meanIntensitySetPoint
Definition: rs_advanced_mode_command.h:107
void set_rau_support_vector_control(const STRauSupportVectorControl &group)
Definition: rs_advanced_mode.hpp:78
void rs2_set_census(rs2_device *dev, const STCensusRadius *group, rs2_error **error)
rs2_raw_data_buffer * rs2_serialize_json(rs2_device *dev, rs2_error **error)
float colorCorrection5
Definition: rs_advanced_mode_command.h:95
uint32_t disableSADColor
Definition: rs_advanced_mode_command.h:50
int32_t depthClampMin
Definition: rs_advanced_mode_command.h:113
rs2_rs400_visual_preset
For RS400 devices: provides optimized settings (presets) for specific types of usage.
Definition: rs_option.h:109
float lambdaCensus
Definition: rs_advanced_mode_command.h:84
Definition: rs_advanced_mode.hpp:13
void set_color_correction(const STColorCorrection &group)
Definition: rs_advanced_mode.hpp:180
void rs2_set_color_correction(rs2_device *dev, const STColorCorrection *group, rs2_error **error)
void rs2_get_slo_penalty_control(rs2_device *dev, STSloPenaltyControl *group, int mode, rs2_error **error)
void rs2_get_slo_color_thresholds_control(rs2_device *dev, STSloColorThresholdsControl *group, int mode, rs2_error **error)
uint32_t depthUnits
Definition: rs_advanced_mode_command.h:112
uint32_t diffThresholdBlue
Definition: rs_advanced_mode_command.h:68
void rs2_get_rsm(rs2_device *dev, STRsm *group, int mode, rs2_error **error)
uint32_t deepSeaNeighborThreshold
Definition: rs_advanced_mode_command.h:24
float colorCorrection4
Definition: rs_advanced_mode_command.h:94
uint32_t disparityMode
Definition: rs_advanced_mode_command.h:115
Definition: rs_advanced_mode_command.h:57
float colorCorrection10
Definition: rs_advanced_mode_command.h:100
std::ostream & operator<<(std::ostream &o, rs2_rs400_visual_preset preset)
Definition: rs_advanced_mode.hpp:298
void set_rsm(const STRsm &group)
Definition: rs_advanced_mode.hpp:61
uint32_t removeThresh
Definition: rs_advanced_mode_command.h:33
const char * rs2_rs400_visual_preset_to_string(rs2_rs400_visual_preset preset)
STRsm get_rsm(int mode=0) const
Definition: rs_advanced_mode.hpp:68
float colorCorrection9
Definition: rs_advanced_mode_command.h:99
void rs2_set_rau_thresholds_control(rs2_device *dev, const STRauColorThresholdsControl *group, rs2_error **error)
struct rs2_error rs2_error
Definition: rs_types.h:210
Definition: rs_advanced_mode_command.h:110
Definition: rs_device.hpp:18
void set_amp_factor(const STAFactor &group)
Definition: rs_advanced_mode.hpp:248
uint32_t diffThresholdGreen
Definition: rs_advanced_mode_command.h:67
STRauSupportVectorControl get_rau_support_vector_control(int mode=0) const
Definition: rs_advanced_mode.hpp:85
void rs2_set_slo_penalty_control(rs2_device *dev, const STSloPenaltyControl *group, rs2_error **error)
float sloRauDiffThresh
Definition: rs_advanced_mode_command.h:32
void rs2_get_color_correction(rs2_device *dev, STColorCorrection *group, int mode, rs2_error **error)
uint32_t uShrink
Definition: rs_advanced_mode_command.h:44
Definition: rs_advanced_mode_command.h:36
uint32_t minSouth
Definition: rs_advanced_mode_command.h:42
float colorCorrection8
Definition: rs_advanced_mode_command.h:98
uint32_t disableSLOLeftColor
Definition: rs_advanced_mode_command.h:53
uint32_t deepSeaSecondPeakThreshold
Definition: rs_advanced_mode_command.h:23
uint32_t disableSADNormalize
Definition: rs_advanced_mode_command.h:54