ds5-options.cpp
Go to the documentation of this file.
1 // License: Apache 2.0. See LICENSE file in root directory.
2 // Copyright(c) 2016 Intel Corporation. All Rights Reserved.
3 
4 
6 #include "ds5-options.h"
7 
8 namespace librealsense
9 {
10  const char* emitter_option::get_value_description(float val) const
11  {
12  switch (static_cast<int>(val))
13  {
14  case 0:
15  {
16  return "Off";
17  }
18  case 1:
19  {
20  return "Laser";
21  }
22  case 2:
23  {
24  return "Laser Auto";
25  }
26  case 3:
27  {
28  return "LED";
29  }
30  default:
31  throw invalid_value_exception("value not found");
32  }
33  }
34 
37  "Emitter select, 0-disable all emitters, 1-enable laser, 2-enable laser auto (opt), 3-enable LED (opt)")
38  {}
39 
41  {
42  if (!is_enabled())
43  throw wrong_api_call_sequence_exception("query is available during streaming only");
44 
45  #pragma pack(push, 1)
46  struct temperature
47  {
48  uint8_t is_projector_valid;
49  uint8_t is_asic_valid;
50  int8_t projector_temperature;
51  int8_t asic_temperature;
52  };
53  #pragma pack(pop)
54 
55  auto temperature_data = static_cast<temperature>(_ep.invoke_powered(
56  [this](platform::uvc_device& dev)
57  {
58  temperature temp{};
59  if (!dev.get_xu(ds::depth_xu,
61  reinterpret_cast<uint8_t*>(&temp),
62  sizeof(temperature)))
63  {
64  throw invalid_value_exception(to_string() << "get_xu(ctrl=DS5_ASIC_AND_PROJECTOR_TEMPERATURES) failed!" << " Last Error: " << strerror(errno));
65  }
66 
67  return temp;
68  }));
69 
70  int8_t temperature::* field;
71  uint8_t temperature::* is_valid_field;
72 
73  switch (_option)
74  {
76  field = &temperature::asic_temperature;
77  is_valid_field = &temperature::is_asic_valid;
78  break;
80  field = &temperature::projector_temperature;
81  is_valid_field = &temperature::is_projector_valid;
82  break;
83  default:
84  throw invalid_value_exception(to_string() << _ep.get_option_name(_option) << " is not temperature option!");
85  }
86 
87  if (0 == temperature_data.*is_valid_field)
88  LOG_ERROR(_ep.get_option_name(_option) << " value is not valid!");
89 
90  return temperature_data.*field;
91  }
92 
94  {
95  return option_range { -40, 125, 0, 0 };
96  }
97 
99  {
100  return _ep.is_streaming();
101  }
102 
104  {
105  switch (_option)
106  {
108  return "Current Asic Temperature (degree celsius)";
110  return "Current Projector Temperature (degree celsius)";
111  default:
112  throw invalid_value_exception(to_string() << _ep.get_option_name(_option) << " is not temperature option!");
113  }
114  }
115 
117  : _option(opt), _ep(ep)
118  {}
119 
121  {
122  if (!is_enabled())
123  throw wrong_api_call_sequence_exception("query is available during streaming only");
124 
125  static const auto report_field = platform::custom_sensor_report_field::value;
126  auto data = _ep.get_custom_report_data(custom_sensor_name, report_name, report_field);
127  if (data.empty())
128  throw invalid_value_exception("query() motion_module_temperature_option failed! Empty buffer arrived.");
129 
130  auto data_str = std::string(reinterpret_cast<char const*>(data.data()));
131  return std::stof(data_str);
132  }
133 
135  {
136  if (!is_enabled())
137  throw wrong_api_call_sequence_exception("get option range is available during streaming only");
138 
139  static const auto min_report_field = platform::custom_sensor_report_field::minimum;
140  static const auto max_report_field = platform::custom_sensor_report_field::maximum;
141  auto min_data = _ep.get_custom_report_data(custom_sensor_name, report_name, min_report_field);
142  auto max_data = _ep.get_custom_report_data(custom_sensor_name, report_name, max_report_field);
143  if (min_data.empty() || max_data.empty())
144  throw invalid_value_exception("get_range() motion_module_temperature_option failed! Empty buffer arrived.");
145 
146  auto min_str = std::string(reinterpret_cast<char const*>(min_data.data()));
147  auto max_str = std::string(reinterpret_cast<char const*>(max_data.data()));
148 
149  return option_range{std::stof(min_str),
150  std::stof(max_str),
151  0, 0};
152  }
153 
155  {
156  return _ep.is_streaming();
157  }
158 
160  {
161  return "Current Motion-Module Temperature (degree celsius)";
162  }
163 
165  : _ep(ep)
166  {}
167 
169  {
170  if (!is_valid(value))
171  throw invalid_value_exception(to_string() << "set(enable_motion_correction) failed! Given value " << value << " is out of range.");
172 
173  _is_active = value > _opt_range.min;
174  _recording_function(*this);
175  }
176 
178  {
179  auto is_active = _is_active.load();
180  return is_active ? _opt_range.max : _opt_range.min;
181  }
182 
184  const option_range& opt_range)
185  : option_base(opt_range), _is_active(true)
186  {}
187 
189  {
190  if (!is_valid(value))
191  throw invalid_value_exception("set(enable_auto_exposure) failed! Invalid Auto-Exposure mode request " + std::to_string(value));
192 
193  auto auto_exposure_prev_state = _auto_exposure_state->get_enable_auto_exposure();
194  _auto_exposure_state->set_enable_auto_exposure(0.f < std::fabs(value));
195 
196  if (_auto_exposure_state->get_enable_auto_exposure()) // auto_exposure current value
197  {
198  if (!auto_exposure_prev_state) // auto_exposure previous value
199  {
200  _to_add_frames = true; // auto_exposure moved from disable to enable
201  }
202  }
203  else
204  {
205  if (auto_exposure_prev_state)
206  {
207  _to_add_frames = false; // auto_exposure moved from enable to disable
208  }
209  }
210  _recording_function(*this);
211  }
212 
214  {
215  return _auto_exposure_state->get_enable_auto_exposure();
216  }
217 
219  std::shared_ptr<auto_exposure_mechanism> auto_exposure,
220  std::shared_ptr<auto_exposure_state> auto_exposure_state,
221  const option_range& opt_range)
222  : option_base(opt_range),
223  _auto_exposure_state(auto_exposure_state),
224  _to_add_frames((_auto_exposure_state->get_enable_auto_exposure())),
225  _auto_exposure(auto_exposure)
226  {}
227 
228  auto_exposure_mode_option::auto_exposure_mode_option(std::shared_ptr<auto_exposure_mechanism> auto_exposure,
229  std::shared_ptr<auto_exposure_state> auto_exposure_state,
230  const option_range& opt_range,
231  const std::map<float, std::string>& description_per_value)
232  : option_base(opt_range),
233  _auto_exposure_state(auto_exposure_state),
234  _auto_exposure(auto_exposure),
235  _description_per_value(description_per_value)
236  {}
237 
239  {
240  if (!is_valid(value))
241  throw invalid_value_exception(to_string() << "set(auto_exposure_mode_option) failed! Given value " << value << " is out of range.");
242 
243  _auto_exposure_state->set_auto_exposure_mode(static_cast<auto_exposure_modes>((int)value));
244  _auto_exposure->update_auto_exposure_state(*_auto_exposure_state);
245  _recording_function(*this);
246  }
247 
249  {
250  return static_cast<float>(_auto_exposure_state->get_auto_exposure_mode());
251  }
252 
254  {
255  try{
256  return _description_per_value.at(val).c_str();
257  }
258  catch(std::out_of_range)
259  {
260  throw invalid_value_exception(to_string() << "auto_exposure_mode: get_value_description(...) failed! Description of value " << val << " is not found.");
261  }
262  }
263 
264  auto_exposure_step_option::auto_exposure_step_option(std::shared_ptr<auto_exposure_mechanism> auto_exposure,
265  std::shared_ptr<auto_exposure_state> auto_exposure_state,
266  const option_range& opt_range)
267  : option_base(opt_range),
268  _auto_exposure_state(auto_exposure_state),
269  _auto_exposure(auto_exposure)
270  {}
271 
273  {
274  if (!std::isnormal(_opt_range.step) || ((value < _opt_range.min) || (value > _opt_range.max)))
275  throw invalid_value_exception(to_string() << "set(auto_exposure_step_option) failed! Given value " << value << " is out of range.");
276 
277  _auto_exposure_state->set_auto_exposure_step(value);
278  _auto_exposure->update_auto_exposure_state(*_auto_exposure_state);
279  _recording_function(*this);
280  }
281 
283  {
284  return static_cast<float>(_auto_exposure_state->get_auto_exposure_step());
285  }
286 
288  std::shared_ptr<auto_exposure_state> auto_exposure_state,
289  const option_range& opt_range,
290  const std::map<float, std::string>& description_per_value)
291  : option_base(opt_range),
292  _description_per_value(description_per_value),
293  _auto_exposure_state(auto_exposure_state),
294  _auto_exposure(auto_exposure)
295  {}
296 
298  {
299  if (!is_valid(value))
300  throw invalid_value_exception(to_string() << "set(auto_exposure_antiflicker_rate_option) failed! Given value " << value << " is out of range.");
301 
302  _auto_exposure_state->set_auto_exposure_antiflicker_rate(static_cast<uint32_t>(value));
303  _auto_exposure->update_auto_exposure_state(*_auto_exposure_state);
304  _recording_function(*this);
305  }
306 
308  {
309  return static_cast<float>(_auto_exposure_state->get_auto_exposure_antiflicker_rate());
310  }
311 
313  {
314  try{
315  return _description_per_value.at(val).c_str();
316  }
317  catch(std::out_of_range)
318  {
319  throw invalid_value_exception(to_string() << "antiflicker_rate: get_value_description(...) failed! Description of value " << val << " is not found.");
320  }
321  }
322 
324  {
327  cmd.param2 = mode;
328  auto res = _hwm.send(cmd);
329 
330  if (res.size() < sizeof(ds::depth_table_control))
331  throw std::runtime_error("Not enough bytes returned from the firmware!");
332 
333  auto table = (const ds::depth_table_control*)res.data();
334  return *table;
335  }
336 
338  : _hwm(hwm)
339  {
340  _range = [this]()
341  {
343  auto max = get_depth_table(ds::GET_MAX);
344  return option_range{ (float)(0.000001 * min.depth_units),
345  (float)(0.000001 * max.depth_units),
346  0.000001f, 0.001f };
347  };
348  }
349 
351  {
354 
355  auto depth_table = get_depth_table(ds::GET_VAL);
356  depth_table.depth_units = static_cast<uint32_t>(1000000 * value);
357  auto ptr = (uint8_t*)(&depth_table);
358  cmd.data = std::vector<uint8_t>(ptr, ptr + sizeof(ds::depth_table_control));
359 
360  _hwm.send(cmd);
361  _record_action(*this);
362  notify(value);
363  }
364 
366  {
368  return (float)(0.000001 * (float)table.depth_units);
369  }
370 
372  {
373  return *_range;
374  }
375 
377  : _hwm(hwm), _sensor(ep), _ver(ver)
378  {
379  _range = [this]()
380  {
382  static_cast<float>(_ver == 3 ? ds::inter_cam_sync_mode::INTERCAM_SYNC_MAX : (_ver == 2 ? 258 : 2)),
383  1,
385  };
386  }
387 
389  {
391  if (_ver == 1)
392  {
393  cmd.param1 = static_cast<int>(value);
394  }
395  else
396  {
397  if (_sensor->is_streaming())
398  throw std::runtime_error("Cannot change Inter-camera HW synchronization mode while streaming!");
399 
400  if (value < 4)
401  cmd.param1 = static_cast<int>(value);
402  else if (value == 259) // For Sending two frame - First with laser ON, and the other with laser OFF.
403  {
404  cmd.param1 = 0x00010204; // genlock, two frames, on-off
405  }
406  else if (value == 260) // For Sending two frame - First with laser OFF, and the other with laser ON.
407  {
408  cmd.param1 = 0x00030204; // genlock, two frames, off-on
409  }
410  else
411  {
412  cmd.param1 = 4;
413  cmd.param1 |= (static_cast<int>(value - 3)) << 8;
414  }
415  }
416 
417  _hwm.send(cmd);
418  _record_action(*this);
419  }
420 
422  {
424  auto res = _hwm.send(cmd);
425  if (res.empty())
426  throw invalid_value_exception("external_sync_mode::query result is empty!");
427 
428  if (res.front() < 4)
429  return (res.front());
430  else if (res[2] == 0x01)
431  {
432  return 259.0f;
433  }
434  else if (res[2] == 0x03)
435  {
436  return 260.0f;
437  }
438  else
439  return (static_cast<float>(res[1]) + 3.0f);
440  }
441 
443  {
444  return *_range;
445  }
446 
448  : _hwm(hwm), _sensor(ep)
449  {
450  _range = [this]()
451  {
452  return option_range{ 0, 1, 1, 0 };
453  };
454  }
455 
457  {
458  if (_sensor->is_streaming())
459  throw std::runtime_error("Cannot change Emitter On/Off option while streaming!");
460 
462  cmd.param1 = static_cast<int>(value);
463 
464  _hwm.send(cmd);
465  _record_action(*this);
466  }
467 
469  {
471  auto res = _hwm.send(cmd);
472  if (res.empty())
473  throw invalid_value_exception("emitter_on_and_off_option::query result is empty!");
474 
475  return (res.front());
476  }
477 
479  {
480  return *_range;
481  }
482 
484  {
485  if (_ver == 3)
486  return "Inter-camera synchronization mode: 0:Default, 1:Master, 2:Slave, 3:Full Salve, 4-258:Genlock with burst count of 1-255 frames for each trigger, 259 and 260 for two frames per trigger with laser ON-OFF and OFF-ON.";
487  else if (_ver == 2)
488  return "Inter-camera synchronization mode: 0:Default, 1:Master, 2:Slave, 3:Full Salve, 4-258:Genlock with burst count of 1-255 frames for each trigger";
489  else
490  return "Inter-camera synchronization mode: 0:Default, 1:Master, 2:Slave";
491  }
492 
494  : _hwm(hwm), _sensor(ep), _is_fw_version_using_id(is_fw_version_using_id)
495  {
496  _range = [this]()
497  {
498  return option_range{ 0, 1, 1, 0 };
499  };
500  }
501 
503  {
504  std::vector<uint8_t> pattern{};
505 
506  if (static_cast<int>(value))
507  {
510  else
512  }
513 
514  command cmd(ds::SETSUBPRESET, static_cast<int>(pattern.size()));
515  cmd.data = pattern;
516  auto res = _hwm.send(cmd);
517  _record_action(*this);
518  }
519 
521  {
523  {
524  float rv = 0.f;
526  // if no subpreset is streaming, the firmware returns "ON_DATA_TO_RETURN" error
527  try {
528  auto res = _hwm.send(cmd);
529  // if a subpreset is streaming, checking this is the alternating emitter sub preset
530  if (res.size())
531  rv = (res[0] == ds::ALTERNATING_EMITTER_SUBPRESET_ID) ? 1.0f : 0.f;
532  }
533  catch (...)
534  {
535  rv = 0.f;
536  }
537 
538  return rv;
539  }
540  else
541  {
543  auto res = _hwm.send(cmd);
544  if (res.size() > 20)
545  throw invalid_value_exception("HWMON::GETSUBPRESETID invalid size");
546 
547  static std::vector<uint8_t> alt_emitter_name(ds::alternating_emitter_pattern_with_name.begin() + 2, ds::alternating_emitter_pattern_with_name.begin() + 22);
548  return (alt_emitter_name == res);
549  }
550  }
551 
553  : _hwm(hwm), _sensor(ep)
554  {
555  _range = [this]()
556  {
557  return option_range{ 0, 1, 1, 0 };
558  };
559  }
560 
562  {
564  cmd.param1 = static_cast<int>(value);
565 
566  _hwm.send(cmd);
567  _record_action(*this);
568  }
569 
571  {
573  cmd.param1 = 2;
574 
575  auto res = _hwm.send(cmd);
576  if (res.empty())
577  throw invalid_value_exception("emitter_always_on_option::query result is empty!");
578 
579  return (res.front());
580  }
581 
583  {
584  return *_range;
585  }
586 
587 
588  void hdr_option::set(float value)
589  {
590  _hdr_cfg->set(_option, value, _range);
591  _record_action(*this);
592  }
593 
594  float hdr_option::query() const
595  {
596  return _hdr_cfg->get(_option);
597  }
598 
600  {
601  return _range;
602  }
603 
604  const char* hdr_option::get_value_description(float val) const
605  {
606  if (_description_per_value.find(val) != _description_per_value.end())
607  return _description_per_value.at(val).c_str();
608  return nullptr;
609  }
610 
611 
613  {
614  if (_hdr_cfg->is_config_in_process())
615  _hdr_option->set(value);
616  else
617  {
618  if (_hdr_cfg->is_enabled())
619  LOG_WARNING("The control - " << _uvc_option->get_description()
620  << " - is locked while HDR mode is active.\n");
621  else
622  _uvc_option->set(value);
623  }
624  }
625 
627  {
628  if (_hdr_cfg->is_config_in_process())
629  return _hdr_option->query();
630  else
631  return _uvc_option->query();
632  }
633 
635  {
636  if (_hdr_cfg->is_config_in_process())
637  return _hdr_option->get_range();
638  else
639  return _uvc_option->get_range();
640  }
641 
643  {
644  if (_hdr_cfg->is_config_in_process())
645  return _hdr_option->get_description();
646  else
647  return _uvc_option->get_description();
648  }
649 
651  {
652  if (_hdr_cfg->is_config_in_process())
653  return _hdr_option->is_enabled();
654  else
655  return _uvc_option->is_enabled();
656  }
657 
659  : option_base(range), _hwm(hwm), _sensor(ep)
660  {
661  _range = [range]()
662  {
663  return range;
664  };
665  }
666 
668  {
669  if (!is_valid(value))
670  throw invalid_value_exception("set(enable_auto_exposure) failed! Invalid Auto-Exposure mode request " + std::to_string(value));
671 
672  command cmd_get(ds::AUTO_CALIB);
673  cmd_get.param1 = 5;
674  std::vector<uint8_t> ret = _hwm.send(cmd_get);
675  if (ret.empty())
676  throw invalid_value_exception("auto_exposure_limit_option::query result is empty!");
677 
679  cmd.param1 = 4;
680  cmd.param2 = static_cast<int>(value);
681  cmd.param3 = *(reinterpret_cast<uint32_t*>(ret.data() + 4));
682  _hwm.send(cmd);
683  _record_action(*this);
684  }
685 
687  {
689  cmd.param1 = 5;
690 
691  auto res = _hwm.send(cmd);
692  if (res.empty())
693  throw invalid_value_exception("auto_exposure_limit_option::query result is empty!");
694 
695  return static_cast<float>(*(reinterpret_cast<uint32_t*>(res.data())));
696  }
697 
699  {
700  return *_range;
701  }
702 
704  : option_base(range), _hwm(hwm), _sensor(ep)
705  {
706  _range = [range]()
707  {
708  return range;
709  };
710  }
711 
713  {
714  if (!is_valid(value))
715  throw invalid_value_exception("set(enable_auto_gain) failed! Invalid Auto-Gain mode request " + std::to_string(value));
716 
717  command cmd_get(ds::AUTO_CALIB);
718  cmd_get.param1 = 5;
719  std::vector<uint8_t> ret = _hwm.send(cmd_get);
720  if (ret.empty())
721  throw invalid_value_exception("auto_exposure_limit_option::query result is empty!");
722 
724  cmd.param1 = 4;
725  cmd.param2 = *(reinterpret_cast<uint32_t*>(ret.data()));
726  cmd.param3 = static_cast<int>(value);
727  _hwm.send(cmd);
728  _record_action(*this);
729  }
730 
732  {
734  cmd.param1 = 5;
735 
736  auto res = _hwm.send(cmd);
737  if (res.empty())
738  throw invalid_value_exception("auto_exposure_limit_option::query result is empty!");
739 
740  return static_cast<float>(*(reinterpret_cast<uint32_t*>(res.data() + 4)));
741  }
742 
744  {
745  return *_range;
746  }
747 
749  std::shared_ptr<ds5_thermal_monitor> monitor,
750  std::shared_ptr<option> toggle) :
751  _thermal_monitor(monitor),
752  _thermal_toggle(toggle)
753  {
754  }
755 
757  {
758  auto val = _thermal_toggle->query();
759  return val;
760  }
761 
763  {
764  if (value < 0)
765  throw invalid_value_exception("Invalid input for thermal compensation toggle: " + std::to_string(value));
766 
767  _thermal_toggle->set(value);
768  _recording_function(*this);
769  }
770 
772  {
773  return "Toggle thermal compensation adjustments mechanism";
774  }
775 
777  {
778  if (value == 0)
779  {
780  return "Thermal compensation is disabled";
781  }
782  else
783  {
784  return "Thermal compensation is enabled";
785  }
786  }
787 
788  //Work-around the control latency
789  void librealsense::thermal_compensation::create_snapshot(std::shared_ptr<option>& snapshot) const
790  {
791  snapshot = std::make_shared<const_value_option>(get_description(), 0.f);
792  }
793 }
const std::vector< uint8_t > alternating_emitter_pattern
Definition: ds5-private.h:792
const option_range _opt_range
Definition: option.h:99
std::shared_ptr< auto_exposure_mechanism > _auto_exposure
Definition: ds5-options.h:160
bool is_streaming() const override
Definition: sensor.cpp:106
virtual option_range get_range() const override
const int etDepthTableControl
Definition: ds5-private.h:252
float stof(const std::string &value)
const char * get_description() const override
std::function< void(const option &)> _recording_function
Definition: ds5-options.h:408
auto_exposure_antiflicker_rate_option(std::shared_ptr< auto_exposure_mechanism > auto_exposure, std::shared_ptr< auto_exposure_state > auto_exposure_state, const option_range &opt_range, const std::map< float, std::string > &description_per_value)
void set(float value) override
virtual float query() const override
auto invoke_powered(T action) -> decltype(action(*static_cast< platform::uvc_device * >(nullptr)))
Definition: sensor.h:343
const char * get_value_description(float val) const override
rs2_option
Defines general configuration controls. These can generally be mapped to camera UVC controls...
Definition: rs_option.h:22
lazy< option_range > _range
Definition: ds5-options.h:185
void set(float value) override
auto_exposure_limit_option(hw_monitor &hwm, sensor_base *depth_ep, option_range range)
thermal_compensation(std::shared_ptr< ds5_thermal_monitor > monitor, std::shared_ptr< option > toggle)
static color_map pattern
Definition: colorizer.cpp:84
#define LOG_WARNING(...)
Definition: src/types.h:241
enable_motion_correction(sensor_base *mm_ep, const option_range &opt_range)
alternating_emitter_option(hw_monitor &hwm, sensor_base *depth_ep, bool is_fw_version_using_id)
std::shared_ptr< auto_exposure_mechanism > _auto_exposure
Definition: ds5-options.h:133
GLfloat value
virtual void set(float value) override
lazy< option_range > _range
Definition: ds5-options.h:210
std::shared_ptr< option > _thermal_toggle
Definition: ds5-options.h:406
virtual float query() const override
virtual option_range get_range() const override
std::function< void(const option &)> _record_action
Definition: ds5-options.h:352
GLsizei const GLchar *const * string
const char * get_description() const override
unsigned char uint8_t
Definition: stdint.h:78
auto_exposure_mode_option(std::shared_ptr< auto_exposure_mechanism > auto_exposure, std::shared_ptr< auto_exposure_state > auto_exposure_state, const option_range &opt_range, const std::map< float, std::string > &description_per_value)
virtual float query() const override
virtual float query() const override
const char * get_value_description(float val) const override
void notify(float val)
Definition: option.h:29
std::shared_ptr< auto_exposure_mechanism > _auto_exposure
Definition: ds5-options.h:83
std::shared_ptr< auto_exposure_state > _auto_exposure_state
Definition: ds5-options.h:81
bool is_valid(const plane_3d &p)
Definition: rendering.h:243
virtual void set(float value) override
GLuint GLfloat * val
asic_and_projector_temperature_options(uvc_sensor &ep, rs2_option opt)
virtual bool get_xu(const extension_unit &xu, uint8_t ctrl, uint8_t *data, int len) const =0
virtual void set(float value) override
not_this_one begin(...)
GLdouble f
GLenum mode
virtual void set(float value) override
virtual float query() const override
float query() const override
virtual float query() const override
std::function< void(const option &)> _record_action
Definition: ds5-options.h:375
std::vector< uint8_t > send(std::vector< uint8_t > const &data) const
Definition: hw-monitor.cpp:115
unsigned int uint32_t
Definition: stdint.h:80
std::shared_ptr< auto_exposure_mechanism > _auto_exposure
Definition: ds5-options.h:110
virtual option_range get_range() const override
const uint8_t ALTERNATING_EMITTER_SUBPRESET_ID
Definition: ds5-private.h:790
std::shared_ptr< auto_exposure_state > _auto_exposure_state
Definition: ds5-options.h:109
virtual float query() const override
std::function< void(const option &)> _record_action
Definition: ds5-options.h:209
emitter_always_on_option(hw_monitor &hwm, sensor_base *depth_ep)
virtual float query() const override
std::vector< uint8_t > data
Definition: hw-monitor.h:240
std::function< void(const option &)> _record_action
Definition: ds5-options.h:254
virtual option_range get_range() const override
std::function< void(const option &)> _record_action
Definition: ds5-options.h:232
const char * get_value_description(float val) const override
Definition: ds5-options.cpp:10
virtual option_range get_range() const override
signed char int8_t
Definition: stdint.h:75
#define LOG_ERROR(...)
Definition: src/types.h:242
const std::map< float, std::string > _description_per_value
Definition: ds5-options.h:108
virtual option_range get_range() const override
std::shared_ptr< auto_exposure_state > _auto_exposure_state
Definition: ds5-options.h:159
const platform::extension_unit depth_xu
Definition: ds5-private.h:159
virtual void set(float value) override
virtual void set(float value) override
virtual void set(float value) override
virtual void set(float value) override
virtual void set(float value) override
std::function< void(const option &)> _recording_function
Definition: option.h:100
void set(float value) override
void create_snapshot(std::shared_ptr< option > &snapshot) const override
GLenum GLenum GLsizei void * table
emitter_option(uvc_sensor &ep)
Definition: ds5-options.cpp:35
ds::depth_table_control get_depth_table(ds::advanced_query_mode mode) const
void set(float value) override
const std::map< float, std::string > _description_per_value
Definition: ds5-options.h:158
const char * get_description() const override
int min(int a, int b)
Definition: lz4s.c:73
const uint8_t DS5_DEPTH_EMITTER_ENABLED
Definition: ds5-private.h:52
auto_gain_limit_option(hw_monitor &hwm, sensor_base *depth_ep, option_range range)
virtual float query() const override
virtual bool is_enabled() const override
GLsizei range
std::shared_ptr< auto_exposure_state > _auto_exposure_state
Definition: ds5-options.h:132
GLuint res
Definition: glext.h:8856
enable_auto_exposure_option(synthetic_sensor *fisheye_ep, std::shared_ptr< auto_exposure_mechanism > auto_exposure, std::shared_ptr< auto_exposure_state > auto_exposure_state, const option_range &opt_range)
GLushort pattern
virtual const char * get_value_description(float) const override
bool is_enabled() const override
Definition: option.h:377
emitter_on_and_off_option(hw_monitor &hwm, sensor_base *depth_ep)
const char * get_value_description(float value) const override
virtual const char * get_option_name(rs2_option option) const override
Definition: options.h:119
virtual const char * get_description() const override
external_sync_mode(hw_monitor &hwm, sensor_base *depth_ep=nullptr, int ver=1)
bool is_valid(float value) const
Definition: option.cpp:6
std::function< void(const option &)> _record_action
Definition: ds5-options.h:184
option_range get_range() const override
virtual option_range get_range() const override
virtual option_range get_range() const override
auto_exposure_step_option(std::shared_ptr< auto_exposure_mechanism > auto_exposure, std::shared_ptr< auto_exposure_state > auto_exposure_state, const option_range &opt_range)
const std::vector< uint8_t > alternating_emitter_pattern_with_name
Definition: ds5-private.h:783
Definition: parser.hpp:150
const uint8_t DS5_ASIC_AND_PROJECTOR_TEMPERATURES
Definition: ds5-private.h:58
std::function< void(const option &)> _record_action
Definition: ds5-options.h:277
std::string to_string(T value)


librealsense2
Author(s): Sergey Dorodnicov , Doron Hirshberg , Mark Horn , Reagan Lopez , Itay Carpis
autogenerated on Mon May 3 2021 02:47:13