From 04df52f833ec61c134874fb329bd45bda268489a Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Wed, 28 Feb 2024 15:50:25 +0200 Subject: [PATCH 01/15] temp as xu commands - hwmc still there for debug --- src/ds/d500/d500-device.cpp | 46 +++++++++++++++++++++++++++++-------- src/ds/ds-private.h | 4 ++++ 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/src/ds/d500/d500-device.cpp b/src/ds/d500/d500-device.cpp index 1a69a91a42..c7f84ab971 100644 --- a/src/ds/d500/d500-device.cpp +++ b/src/ds/d500/d500-device.cpp @@ -527,17 +527,45 @@ namespace librealsense rsutils::lazy< float >( [default_depth_units]() { return default_depth_units; } ) ) ); } - depth_sensor.register_option(RS2_OPTION_SOC_PVT_TEMPERATURE, - std::make_shared(_hw_monitor, - temperature_option::temperature_component::HKR_PVT, "Temperature reading for SOC PVT")); + bool use_hmc = false; + if (use_hmc) + { + depth_sensor.register_option(RS2_OPTION_SOC_PVT_TEMPERATURE, + std::make_shared(_hw_monitor, + temperature_option::temperature_component::HKR_PVT, "Temperature reading for SOC PVT")); - depth_sensor.register_option(RS2_OPTION_OHM_TEMPERATURE, - std::make_shared(_hw_monitor, - temperature_option::temperature_component::LEFT_IR, "Temperature reading for Left Infrared Sensor")); + depth_sensor.register_option(RS2_OPTION_OHM_TEMPERATURE, + std::make_shared(_hw_monitor, + temperature_option::temperature_component::LEFT_IR, "Temperature reading for Left Infrared Sensor")); - depth_sensor.register_option(RS2_OPTION_PROJECTOR_TEMPERATURE, - std::make_shared(_hw_monitor, - temperature_option::temperature_component::LEFT_PROJ, "Temperature reading for Left Projector")); + depth_sensor.register_option(RS2_OPTION_PROJECTOR_TEMPERATURE, + std::make_shared(_hw_monitor, + temperature_option::temperature_component::LEFT_PROJ, "Temperature reading for Left Projector")); + } + else + { + // defining the temperature options + auto pvt_temperature = std::make_shared< uvc_xu_option< int32_t > >( raw_depth_sensor, + depth_xu, + DS5_HKR_PVT_TEMPERATURE, + "PVT Temperature" ); + + auto proj_temperature = std::make_shared< uvc_xu_option< int32_t > >(raw_depth_sensor, + depth_xu, + DS5_HKR_PROJECTOR_TEMPERATURE, + "Projector Temperature"); + + auto ohm_temperature = std::make_shared< uvc_xu_option< int32_t > >(raw_depth_sensor, + depth_xu, + DS5_HKR_OHM_TEMPERATURE, + "OHM Temperature"); + + // registering the temperature options + depth_sensor.register_option(RS2_OPTION_SOC_PVT_TEMPERATURE, pvt_temperature); + depth_sensor.register_option(RS2_OPTION_PROJECTOR_TEMPERATURE, proj_temperature); + depth_sensor.register_option(RS2_OPTION_OHM_TEMPERATURE, ohm_temperature); + } + auto error_control = std::make_shared< uvc_xu_option< uint8_t > >( raw_depth_sensor, depth_xu, diff --git a/src/ds/ds-private.h b/src/ds/ds-private.h index 2cde1a23d6..a78afeba90 100644 --- a/src/ds/ds-private.h +++ b/src/ds/ds-private.h @@ -60,6 +60,10 @@ namespace librealsense const uint8_t DS5_THERMAL_COMPENSATION = 0xF; const uint8_t DS5_EMITTER_FREQUENCY = 0x10; const uint8_t DS5_DEPTH_AUTO_EXPOSURE_MODE = 0x11; + + const uint8_t DS5_HKR_PVT_TEMPERATURE = 0x20; + const uint8_t DS5_HKR_PROJECTOR_TEMPERATURE = 0x21; + const uint8_t DS5_HKR_OHM_TEMPERATURE = 0x22; // DS5 fisheye XU identifiers const uint8_t FISHEYE_EXPOSURE = 1; From c9bc61a0a0b451d119e54a41bfa6e3c1727ba304 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Mon, 4 Mar 2024 10:51:57 +0200 Subject: [PATCH 02/15] adding new option type for temperatures_as_xu --- src/ds/d500/d500-device.cpp | 12 ++++++------ src/ds/d500/d500-options.cpp | 30 ++++++++++++++++++++++++++++++ src/ds/d500/d500-options.h | 21 ++++++++++++++++++++- src/option.h | 2 +- src/platform/uvc-option.h | 2 +- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/src/ds/d500/d500-device.cpp b/src/ds/d500/d500-device.cpp index c7f84ab971..a7c26cb1c6 100644 --- a/src/ds/d500/d500-device.cpp +++ b/src/ds/d500/d500-device.cpp @@ -545,17 +545,17 @@ namespace librealsense else { // defining the temperature options - auto pvt_temperature = std::make_shared< uvc_xu_option< int32_t > >( raw_depth_sensor, - depth_xu, - DS5_HKR_PVT_TEMPERATURE, - "PVT Temperature" ); + auto pvt_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, + depth_xu, + DS5_HKR_PVT_TEMPERATURE, + "PVT Temperature"); - auto proj_temperature = std::make_shared< uvc_xu_option< int32_t > >(raw_depth_sensor, + auto proj_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, depth_xu, DS5_HKR_PROJECTOR_TEMPERATURE, "Projector Temperature"); - auto ohm_temperature = std::make_shared< uvc_xu_option< int32_t > >(raw_depth_sensor, + auto ohm_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, depth_xu, DS5_HKR_OHM_TEMPERATURE, "OHM Temperature"); diff --git a/src/ds/d500/d500-options.cpp b/src/ds/d500/d500-options.cpp index c4765c8a38..6967e80828 100644 --- a/src/ds/d500/d500-options.cpp +++ b/src/ds/d500/d500-options.cpp @@ -50,6 +50,36 @@ namespace librealsense return temperature; } + + float temperature_xu_option::query() const + { + float temperature = -1; + try { + auto res = uvc_xu_option::query(); + auto res_bytes = reinterpret_cast(&res); + + // parsing the temperature result: 0xABCD: + // whole number = 0xCD - int8_t, + // decimal part = 0xAB - uint8_t + int8_t whole_number_part = static_cast(res_bytes[0]); + uint8_t decimal_part = static_cast(res_bytes[1]); + + if (whole_number_part == 0xFF && decimal_part == 0xFF) + temperature = 0.f; + else + temperature = static_cast(whole_number_part) + decimal_part / 256.f; + } + catch (...) + { + throw wrong_api_call_sequence_exception("XU command for reading temperature failed"); + } + return temperature; + } + + void temperature_xu_option::set(float value) + { + readonly_option::set(value); + } power_line_freq_option::power_line_freq_option(const std::weak_ptr< uvc_sensor >& ep, rs2_option id, const std::map< float, std::string >& description_per_value) : diff --git a/src/ds/d500/d500-options.h b/src/ds/d500/d500-options.h index 4196974412..4663b6fc13 100644 --- a/src/ds/d500/d500-options.h +++ b/src/ds/d500/d500-options.h @@ -3,10 +3,10 @@ #pragma once +#include #include "ds/ds-private.h" #include "core/options-container.h" #include "option.h" -#include "platform/uvc-option.h" #include @@ -75,6 +75,25 @@ namespace librealsense temperature_component _component; const char* _description; }; + + class temperature_xu_option : public uvc_xu_option, + public readonly_option + { + public: + + explicit temperature_xu_option(const std::weak_ptr< uvc_sensor >& ep, + platform::extension_unit xu, + uint8_t id, + std::string description, + bool allow_set_while_streaming = true) + : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming) {} + + virtual float query() const override; + virtual void set(float value) override; + inline bool is_enabled() const override { return true; } + virtual void enable_recording(std::function record_action) override + { uvc_xu_option::enable_recording(record_action); } + }; class power_line_freq_option : public uvc_pu_option { diff --git a/src/option.h b/src/option.h index ec782704f7..dda3e78e2b 100644 --- a/src/option.h +++ b/src/option.h @@ -37,7 +37,7 @@ namespace librealsense std::vector> _callbacks; }; - class readonly_option : public option + class readonly_option : virtual public option { public: bool is_read_only() const override { return true; } diff --git a/src/platform/uvc-option.h b/src/platform/uvc-option.h index 67075c0ac0..97fc088bd8 100644 --- a/src/platform/uvc-option.h +++ b/src/platform/uvc-option.h @@ -49,7 +49,7 @@ class uvc_pu_option : public option // XU control with exclusing access to setter/getters template< typename T > -class uvc_xu_option : public option +class uvc_xu_option : virtual public option { public: void set( float value ) override From 50a56ab7d9bf34db27016d6fea6be63a86af9ee2 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Tue, 5 Mar 2024 12:02:01 +0200 Subject: [PATCH 03/15] changing the xu ids values --- src/ds/ds-private.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ds/ds-private.h b/src/ds/ds-private.h index a78afeba90..90fb595c6e 100644 --- a/src/ds/ds-private.h +++ b/src/ds/ds-private.h @@ -61,9 +61,9 @@ namespace librealsense const uint8_t DS5_EMITTER_FREQUENCY = 0x10; const uint8_t DS5_DEPTH_AUTO_EXPOSURE_MODE = 0x11; - const uint8_t DS5_HKR_PVT_TEMPERATURE = 0x20; - const uint8_t DS5_HKR_PROJECTOR_TEMPERATURE = 0x21; - const uint8_t DS5_HKR_OHM_TEMPERATURE = 0x22; + const uint8_t DS5_HKR_PVT_TEMPERATURE = 0x15; + const uint8_t DS5_HKR_PROJECTOR_TEMPERATURE = 0x16; + const uint8_t DS5_HKR_OHM_TEMPERATURE = 0x17; // DS5 fisheye XU identifiers const uint8_t FISHEYE_EXPOSURE = 1; From 35e010c7bfa64f8214f345552a55560db3ef1720 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Wed, 6 Mar 2024 16:56:51 +0200 Subject: [PATCH 04/15] defining parsing modifier to be user on calls to query method --- src/ds/d500/d500-options.cpp | 24 +++++++++++++++++------- src/ds/d500/d500-options.h | 3 +-- src/platform/uvc-option.h | 3 +++ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/ds/d500/d500-options.cpp b/src/ds/d500/d500-options.cpp index 6967e80828..9d18499933 100644 --- a/src/ds/d500/d500-options.cpp +++ b/src/ds/d500/d500-options.cpp @@ -50,14 +50,14 @@ namespace librealsense return temperature; } - - float temperature_xu_option::query() const + temperature_xu_option::temperature_xu_option(const std::weak_ptr& ep, + platform::extension_unit xu, uint8_t id, + std::string description, bool allow_set_while_streaming) + : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming) { - float temperature = -1; - try { - auto res = uvc_xu_option::query(); - auto res_bytes = reinterpret_cast(&res); - + // defining the parsing modifier, to be used on the calls for query method + _parsing_modifier = [](const uint8_t* res_bytes) { + float temperature = -1; // parsing the temperature result: 0xABCD: // whole number = 0xCD - int8_t, // decimal part = 0xAB - uint8_t @@ -68,6 +68,16 @@ namespace librealsense temperature = 0.f; else temperature = static_cast(whole_number_part) + decimal_part / 256.f; + return temperature; + }; + } + + float temperature_xu_option::query() const + { + float temperature = -1; + try + { + temperature = uvc_xu_option::query(); } catch (...) { diff --git a/src/ds/d500/d500-options.h b/src/ds/d500/d500-options.h index 4663b6fc13..d21b4553ae 100644 --- a/src/ds/d500/d500-options.h +++ b/src/ds/d500/d500-options.h @@ -85,8 +85,7 @@ namespace librealsense platform::extension_unit xu, uint8_t id, std::string description, - bool allow_set_while_streaming = true) - : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming) {} + bool allow_set_while_streaming = true); virtual float query() const override; virtual void set(float value) override; diff --git a/src/platform/uvc-option.h b/src/platform/uvc-option.h index 97fc088bd8..dfd8f8bad3 100644 --- a/src/platform/uvc-option.h +++ b/src/platform/uvc-option.h @@ -87,6 +87,8 @@ class uvc_xu_option : virtual public option throw invalid_value_exception( rsutils::string::from() << "get_xu(id=" << std::to_string( _id ) << ") failed!" << " Last Error: " << strerror( errno ) ); + if (_parsing_modifier) + return _parsing_modifier(reinterpret_cast(&t)); return static_cast< float >( t ); } ) ); @@ -165,6 +167,7 @@ class uvc_xu_option : virtual public option }; const std::map< float, std::string > _description_per_value; bool _allow_set_while_streaming; + std::function< float(const uint8_t* param) > _parsing_modifier = nullptr; }; From fb7f369b07b2013ca803c73e5969da4f36a9bc7f Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Thu, 7 Mar 2024 09:50:34 +0200 Subject: [PATCH 05/15] correction from uin16 to int16 and bug corrected in option_range::get_range method --- src/ds/d500/d500-options.cpp | 4 ++-- src/ds/d500/d500-options.h | 6 +++--- src/platform/uvc-option.h | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ds/d500/d500-options.cpp b/src/ds/d500/d500-options.cpp index 9d18499933..6ef0303d92 100644 --- a/src/ds/d500/d500-options.cpp +++ b/src/ds/d500/d500-options.cpp @@ -53,7 +53,7 @@ namespace librealsense temperature_xu_option::temperature_xu_option(const std::weak_ptr& ep, platform::extension_unit xu, uint8_t id, std::string description, bool allow_set_while_streaming) - : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming) + : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming) { // defining the parsing modifier, to be used on the calls for query method _parsing_modifier = [](const uint8_t* res_bytes) { @@ -77,7 +77,7 @@ namespace librealsense float temperature = -1; try { - temperature = uvc_xu_option::query(); + temperature = uvc_xu_option::query(); } catch (...) { diff --git a/src/ds/d500/d500-options.h b/src/ds/d500/d500-options.h index d21b4553ae..8f471b3409 100644 --- a/src/ds/d500/d500-options.h +++ b/src/ds/d500/d500-options.h @@ -75,8 +75,8 @@ namespace librealsense temperature_component _component; const char* _description; }; - - class temperature_xu_option : public uvc_xu_option, + + class temperature_xu_option : public uvc_xu_option, public readonly_option { public: @@ -91,7 +91,7 @@ namespace librealsense virtual void set(float value) override; inline bool is_enabled() const override { return true; } virtual void enable_recording(std::function record_action) override - { uvc_xu_option::enable_recording(record_action); } + { uvc_xu_option::enable_recording(record_action); } }; class power_line_freq_option : public uvc_pu_option diff --git a/src/platform/uvc-option.h b/src/platform/uvc-option.h index dfd8f8bad3..c52c3cafe1 100644 --- a/src/platform/uvc-option.h +++ b/src/platform/uvc-option.h @@ -103,13 +103,13 @@ class uvc_xu_option : virtual public option uvc_range = ep->invoke_powered( [this]( platform::uvc_device & dev ) { return dev.get_xu_range( _xu, _id, sizeof( T ) ); } ); - if( uvc_range.min.size() < sizeof( int32_t ) ) + if( uvc_range.min.size() < sizeof( T ) ) return option_range{ 0, 0, 1, 0 }; - auto min = *( reinterpret_cast< int32_t * >( uvc_range.min.data() ) ); - auto max = *( reinterpret_cast< int32_t * >( uvc_range.max.data() ) ); - auto step = *( reinterpret_cast< int32_t * >( uvc_range.step.data() ) ); - auto def = *( reinterpret_cast< int32_t * >( uvc_range.def.data() ) ); + auto min = *( reinterpret_cast< T* >( uvc_range.min.data() ) ); + auto max = *( reinterpret_cast< T* >( uvc_range.max.data() ) ); + auto step = *( reinterpret_cast< T* >( uvc_range.step.data() ) ); + auto def = *( reinterpret_cast< T* >( uvc_range.def.data() ) ); return option_range{ static_cast< float >( min ), static_cast< float >( max ), static_cast< float >( step ), From bc50358c364f9b5a5f9159bc7bad07eb34af5685 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Thu, 7 Mar 2024 16:17:19 +0200 Subject: [PATCH 06/15] changing the parsing to the new requirement --- src/ds/d500/d500-options.cpp | 15 ++------------- src/platform/uvc-option.h | 12 ++++++++++-- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/ds/d500/d500-options.cpp b/src/ds/d500/d500-options.cpp index 6ef0303d92..bc8de8cc0c 100644 --- a/src/ds/d500/d500-options.cpp +++ b/src/ds/d500/d500-options.cpp @@ -56,19 +56,8 @@ namespace librealsense : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming) { // defining the parsing modifier, to be used on the calls for query method - _parsing_modifier = [](const uint8_t* res_bytes) { - float temperature = -1; - // parsing the temperature result: 0xABCD: - // whole number = 0xCD - int8_t, - // decimal part = 0xAB - uint8_t - int8_t whole_number_part = static_cast(res_bytes[0]); - uint8_t decimal_part = static_cast(res_bytes[1]); - - if (whole_number_part == 0xFF && decimal_part == 0xFF) - temperature = 0.f; - else - temperature = static_cast(whole_number_part) + decimal_part / 256.f; - return temperature; + _parsing_modifier = [](const int16_t read_value) { + return static_cast(read_value) / 10.f; }; } diff --git a/src/platform/uvc-option.h b/src/platform/uvc-option.h index c52c3cafe1..0ca26ac0f2 100644 --- a/src/platform/uvc-option.h +++ b/src/platform/uvc-option.h @@ -88,7 +88,7 @@ class uvc_xu_option : virtual public option << "get_xu(id=" << std::to_string( _id ) << ") failed!" << " Last Error: " << strerror( errno ) ); if (_parsing_modifier) - return _parsing_modifier(reinterpret_cast(&t)); + return _parsing_modifier(t); return static_cast< float >( t ); } ) ); @@ -110,6 +110,14 @@ class uvc_xu_option : virtual public option auto max = *( reinterpret_cast< T* >( uvc_range.max.data() ) ); auto step = *( reinterpret_cast< T* >( uvc_range.step.data() ) ); auto def = *( reinterpret_cast< T* >( uvc_range.def.data() ) ); + + if (_parsing_modifier) + { + return option_range{ _parsing_modifier( min ), + _parsing_modifier( max ), + _parsing_modifier( step ), + _parsing_modifier( def ) }; + } return option_range{ static_cast< float >( min ), static_cast< float >( max ), static_cast< float >( step ), @@ -167,7 +175,7 @@ class uvc_xu_option : virtual public option }; const std::map< float, std::string > _description_per_value; bool _allow_set_while_streaming; - std::function< float(const uint8_t* param) > _parsing_modifier = nullptr; + std::function< float(const T param) > _parsing_modifier = nullptr; }; From 91b53275be4115b96614241852a289859b408702 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Mon, 11 Mar 2024 11:14:43 +0200 Subject: [PATCH 07/15] test added --- .../live/d500/test-temperatures-xu-vs-hwmc.py | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py diff --git a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py new file mode 100644 index 0000000000..b5248b0ab9 --- /dev/null +++ b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py @@ -0,0 +1,97 @@ +# License: Apache 2.0. See LICENSE file in root directory. +# Copyright(c) 2024 Intel Corporation. All Rights Reserved. + +# test:device D500* + +import pyrealsense2 as rs +from rspy import test + +# This test checks that the same values of temperature are received whether XU command or HWM Command are used. + +dev = test.find_first_device_or_exit() +depth_sensor = dev.first_depth_sensor() +dp_device = dev.as_debug_protocol() + + +######################################## HELPERS ########################################## + +def get_temperatures_from_xu(): + pvt_temp = -10 + ohm_temp = -10 + proj_temp = -10 + + test.check(depth_sensor.supports(rs.option.soc_pvt_temperature)) + test.check(depth_sensor.supports(rs.option.ohm_temperature)) + test.check(depth_sensor.supports(rs.option.projector_temperature)) + + pvt_temp = depth_sensor.get_option(rs.option.soc_pvt_temperature) + ohm_temp = depth_sensor.get_option(rs.option.ohm_temperature) + proj_temp = depth_sensor.get_option(rs.option.projector_temperature) + + return pvt_temp, ohm_temp, proj_temp + + +def parse_temperature_from_hwm(hwm_answer): + temperature = -10.0 + relevant_data = hwm_answer[4:] + temperatures_list = [] + + test.check_equal(len(relevant_data), 20) + whole_number_part = 0 + decimal_part = 0 + for i in range(len(relevant_data)): + if i % 2 == 0: + decimal_part = relevant_data[i] + else: + whole_number_part = relevant_data[i] + current_temp = whole_number_part + decimal_part / 256.0 + temperatures_list.append(current_temp) + whole_number_part = 0 + decimal_part = 0 + return temperatures_list + + +def get_temperatures_from_hwm(): + pvt_temp = -10 + ohm_temp = -10 + proj_temp = -10 + + gtemp_opcode = 0x2a + + # getting all the available temperatures + param_for_all_temp = 0 + all_temp_cmd = dp_device.build_command(opcode=gtemp_opcode, param1=param_for_all_temp) + all_temp_list = parse_temperature_from_hwm(dp_device.send_and_receive_raw_data(all_temp_cmd)) + + # get pvt temperature + pvt_temp_index = 7 + pvt_temp = all_temp_list[pvt_temp_index - 1] + + # get ohm temperature + ohm_temp_index = 2 + ohm_temp = all_temp_list[ohm_temp_index - 1] + + # get projector temperature + proj_temp_index = 1 + proj_temp = all_temp_list[proj_temp_index - 1] + + return pvt_temp, ohm_temp, proj_temp + + +############################################################################################# + +test.start("Compare Temperature readings XU vs HWMC") + +pvt_temp_xu, ohm_temp_xu, projector_temp_xu = get_temperatures_from_xu() + +pvt_temp_hwm, ohm_temp_hwm, projector_temp_hwm = get_temperatures_from_hwm() + +tolerance = 0.1 +test.check_approx_abs(pvt_temp_xu, pvt_temp_hwm, tolerance) +test.check_approx_abs(ohm_temp_xu, ohm_temp_hwm, tolerance) +test.check_approx_abs(projector_temp_xu, projector_temp_xu, tolerance) + +test.finish() +############################################################################################# + +test.print_results_and_exit() From 4209f8a071069db1682a523311fc25e3c20279ef Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Mon, 11 Mar 2024 11:48:24 +0200 Subject: [PATCH 08/15] removing debugging code --- src/ds/d500/d500-device.cpp | 55 ++++++++++++------------------------- 1 file changed, 18 insertions(+), 37 deletions(-) diff --git a/src/ds/d500/d500-device.cpp b/src/ds/d500/d500-device.cpp index a7c26cb1c6..dbd8ac6adb 100644 --- a/src/ds/d500/d500-device.cpp +++ b/src/ds/d500/d500-device.cpp @@ -527,45 +527,26 @@ namespace librealsense rsutils::lazy< float >( [default_depth_units]() { return default_depth_units; } ) ) ); } - bool use_hmc = false; - if (use_hmc) - { - depth_sensor.register_option(RS2_OPTION_SOC_PVT_TEMPERATURE, - std::make_shared(_hw_monitor, - temperature_option::temperature_component::HKR_PVT, "Temperature reading for SOC PVT")); + // defining the temperature options + auto pvt_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, + depth_xu, + DS5_HKR_PVT_TEMPERATURE, + "PVT Temperature"); - depth_sensor.register_option(RS2_OPTION_OHM_TEMPERATURE, - std::make_shared(_hw_monitor, - temperature_option::temperature_component::LEFT_IR, "Temperature reading for Left Infrared Sensor")); + auto proj_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, + depth_xu, + DS5_HKR_PROJECTOR_TEMPERATURE, + "Projector Temperature"); - depth_sensor.register_option(RS2_OPTION_PROJECTOR_TEMPERATURE, - std::make_shared(_hw_monitor, - temperature_option::temperature_component::LEFT_PROJ, "Temperature reading for Left Projector")); - } - else - { - // defining the temperature options - auto pvt_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, - depth_xu, - DS5_HKR_PVT_TEMPERATURE, - "PVT Temperature"); - - auto proj_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, - depth_xu, - DS5_HKR_PROJECTOR_TEMPERATURE, - "Projector Temperature"); - - auto ohm_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, - depth_xu, - DS5_HKR_OHM_TEMPERATURE, - "OHM Temperature"); - - // registering the temperature options - depth_sensor.register_option(RS2_OPTION_SOC_PVT_TEMPERATURE, pvt_temperature); - depth_sensor.register_option(RS2_OPTION_PROJECTOR_TEMPERATURE, proj_temperature); - depth_sensor.register_option(RS2_OPTION_OHM_TEMPERATURE, ohm_temperature); - } - + auto ohm_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, + depth_xu, + DS5_HKR_OHM_TEMPERATURE, + "OHM Temperature"); + + // registering the temperature options + depth_sensor.register_option(RS2_OPTION_SOC_PVT_TEMPERATURE, pvt_temperature); + depth_sensor.register_option(RS2_OPTION_PROJECTOR_TEMPERATURE, proj_temperature); + depth_sensor.register_option(RS2_OPTION_OHM_TEMPERATURE, ohm_temperature); auto error_control = std::make_shared< uvc_xu_option< uint8_t > >( raw_depth_sensor, depth_xu, From 5fd01ca5e5054ffe3c2b3904755fc8db66899f57 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Mon, 11 Mar 2024 16:05:46 +0200 Subject: [PATCH 09/15] cr improvements --- src/ds/d500/d500-options.cpp | 23 +++++-------------- src/platform/uvc-option.h | 12 +++++++--- .../live/d500/test-temperatures-xu-vs-hwmc.py | 17 ++++++++++---- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/ds/d500/d500-options.cpp b/src/ds/d500/d500-options.cpp index bc8de8cc0c..b4bf020ccf 100644 --- a/src/ds/d500/d500-options.cpp +++ b/src/ds/d500/d500-options.cpp @@ -53,26 +53,15 @@ namespace librealsense temperature_xu_option::temperature_xu_option(const std::weak_ptr& ep, platform::extension_unit xu, uint8_t id, std::string description, bool allow_set_while_streaming) - : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming) - { - // defining the parsing modifier, to be used on the calls for query method - _parsing_modifier = [](const int16_t read_value) { - return static_cast(read_value) / 10.f; - }; - } + : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming, + // defining the parsing modifier, to be used on the calls for query and get_range methods + [](const int16_t read_value) { + return static_cast(read_value) / 10.f; + }) {} float temperature_xu_option::query() const { - float temperature = -1; - try - { - temperature = uvc_xu_option::query(); - } - catch (...) - { - throw wrong_api_call_sequence_exception("XU command for reading temperature failed"); - } - return temperature; + return uvc_xu_option::query(); } void temperature_xu_option::set(float value) diff --git a/src/platform/uvc-option.h b/src/platform/uvc-option.h index 0ca26ac0f2..d279bba2fb 100644 --- a/src/platform/uvc-option.h +++ b/src/platform/uvc-option.h @@ -126,16 +126,20 @@ class uvc_xu_option : virtual public option bool is_enabled() const override { return true; } + typedef std::function< float(const T param) > parsing_modifier; + uvc_xu_option( const std::weak_ptr< uvc_sensor > & ep, platform::extension_unit xu, uint8_t id, std::string description, - bool allow_set_while_streaming = true ) + bool allow_set_while_streaming = true, + parsing_modifier modifier = nullptr) : _ep( ep ) , _xu( xu ) , _id( id ) , _desciption( std::move( description ) ) , _allow_set_while_streaming( allow_set_while_streaming ) + , _parsing_modifier(modifier) { } @@ -144,13 +148,15 @@ class uvc_xu_option : virtual public option uint8_t id, std::string description, const std::map< float, std::string > & description_per_value, - bool allow_set_while_streaming = true ) + bool allow_set_while_streaming = true, + parsing_modifier modifier = nullptr) : _ep( ep ) , _xu( xu ) , _id( id ) , _desciption( std::move( description ) ) , _description_per_value( description_per_value ) , _allow_set_while_streaming( allow_set_while_streaming ) + , _parsing_modifier(modifier) { } @@ -175,7 +181,7 @@ class uvc_xu_option : virtual public option }; const std::map< float, std::string > _description_per_value; bool _allow_set_while_streaming; - std::function< float(const T param) > _parsing_modifier = nullptr; + parsing_modifier _parsing_modifier = nullptr; }; diff --git a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py index b5248b0ab9..e499c71652 100644 --- a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py +++ b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py @@ -32,7 +32,18 @@ def get_temperatures_from_xu(): def parse_temperature_from_hwm(hwm_answer): - temperature = -10.0 + """ + The returned value from gtemp hwmc is a list of uint8_t, with: + - the 4 first values are the opcode of the request - 2a 0 0 0 in our case + - the remaining values are temperatures of several components, each represented + by 2 values: the first is the decimal part, and the second one is the whole value part + e.g.: if the 2 values are 90 28 (in hex): + * the whole value part is 0x28 = 40 + * the decimal value part is 0x91 = 144. 144/256 = 0.5625 + So in this example, the resulting temperature is 40.5625 deg. + This function parses the hwmc returned list to a list of temperatures, parsed as explained above. + """ + # stepping over the 4 first values (opcode of the request, see above explanation) relevant_data = hwm_answer[4:] temperatures_list = [] @@ -52,10 +63,6 @@ def parse_temperature_from_hwm(hwm_answer): def get_temperatures_from_hwm(): - pvt_temp = -10 - ohm_temp = -10 - proj_temp = -10 - gtemp_opcode = 0x2a # getting all the available temperatures From 432b4eda8de7e41dcd81ccb121b5b0876cf65441 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Tue, 12 Mar 2024 09:45:32 +0200 Subject: [PATCH 10/15] typo fixed --- unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py index e499c71652..90ed6a871d 100644 --- a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py +++ b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py @@ -39,7 +39,7 @@ def parse_temperature_from_hwm(hwm_answer): by 2 values: the first is the decimal part, and the second one is the whole value part e.g.: if the 2 values are 90 28 (in hex): * the whole value part is 0x28 = 40 - * the decimal value part is 0x91 = 144. 144/256 = 0.5625 + * the decimal value part is 0x90 = 144. 144/256 = 0.5625 So in this example, the resulting temperature is 40.5625 deg. This function parses the hwmc returned list to a list of temperatures, parsed as explained above. """ From 77a7b599aea9f515981b48094ff7873e49cba6ad Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Mon, 1 Apr 2024 16:21:46 +0300 Subject: [PATCH 11/15] - projector temperature registration and test removed - temperatures test relaxed: tolerance increased from 0.1 to 1.0 --- src/ds/d500/d500-device.cpp | 6 ------ .../live/d500/test-temperatures-xu-vs-hwmc.py | 18 +++++------------- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/ds/d500/d500-device.cpp b/src/ds/d500/d500-device.cpp index dbd8ac6adb..c9b57b4091 100644 --- a/src/ds/d500/d500-device.cpp +++ b/src/ds/d500/d500-device.cpp @@ -533,11 +533,6 @@ namespace librealsense DS5_HKR_PVT_TEMPERATURE, "PVT Temperature"); - auto proj_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, - depth_xu, - DS5_HKR_PROJECTOR_TEMPERATURE, - "Projector Temperature"); - auto ohm_temperature = std::make_shared< temperature_xu_option >(raw_depth_sensor, depth_xu, DS5_HKR_OHM_TEMPERATURE, @@ -545,7 +540,6 @@ namespace librealsense // registering the temperature options depth_sensor.register_option(RS2_OPTION_SOC_PVT_TEMPERATURE, pvt_temperature); - depth_sensor.register_option(RS2_OPTION_PROJECTOR_TEMPERATURE, proj_temperature); depth_sensor.register_option(RS2_OPTION_OHM_TEMPERATURE, ohm_temperature); auto error_control = std::make_shared< uvc_xu_option< uint8_t > >( raw_depth_sensor, diff --git a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py index 90ed6a871d..169e8c6764 100644 --- a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py +++ b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py @@ -18,17 +18,14 @@ def get_temperatures_from_xu(): pvt_temp = -10 ohm_temp = -10 - proj_temp = -10 test.check(depth_sensor.supports(rs.option.soc_pvt_temperature)) test.check(depth_sensor.supports(rs.option.ohm_temperature)) - test.check(depth_sensor.supports(rs.option.projector_temperature)) pvt_temp = depth_sensor.get_option(rs.option.soc_pvt_temperature) ohm_temp = depth_sensor.get_option(rs.option.ohm_temperature) - proj_temp = depth_sensor.get_option(rs.option.projector_temperature) - return pvt_temp, ohm_temp, proj_temp + return pvt_temp, ohm_temp def parse_temperature_from_hwm(hwm_answer): @@ -78,25 +75,20 @@ def get_temperatures_from_hwm(): ohm_temp_index = 2 ohm_temp = all_temp_list[ohm_temp_index - 1] - # get projector temperature - proj_temp_index = 1 - proj_temp = all_temp_list[proj_temp_index - 1] - - return pvt_temp, ohm_temp, proj_temp + return pvt_temp, ohm_temp ############################################################################################# test.start("Compare Temperature readings XU vs HWMC") -pvt_temp_xu, ohm_temp_xu, projector_temp_xu = get_temperatures_from_xu() +pvt_temp_xu, ohm_temp_xu = get_temperatures_from_xu() -pvt_temp_hwm, ohm_temp_hwm, projector_temp_hwm = get_temperatures_from_hwm() +pvt_temp_hwm, ohm_temp_hwm = get_temperatures_from_hwm() -tolerance = 0.1 +tolerance = 1.0 test.check_approx_abs(pvt_temp_xu, pvt_temp_hwm, tolerance) test.check_approx_abs(ohm_temp_xu, ohm_temp_hwm, tolerance) -test.check_approx_abs(projector_temp_xu, projector_temp_xu, tolerance) test.finish() ############################################################################################# From fdd8a45173dd48d746323aebba2993acdefc1b77 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Tue, 2 Apr 2024 16:04:32 +0300 Subject: [PATCH 12/15] projector temperature restored in the test, is supported added --- .../live/d500/test-temperatures-xu-vs-hwmc.py | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py index 169e8c6764..f2a3c4a9e0 100644 --- a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py +++ b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py @@ -18,14 +18,17 @@ def get_temperatures_from_xu(): pvt_temp = -10 ohm_temp = -10 + proj_temp = -10 test.check(depth_sensor.supports(rs.option.soc_pvt_temperature)) test.check(depth_sensor.supports(rs.option.ohm_temperature)) + test.check(depth_sensor.supports(rs.option.projector_temperature)) pvt_temp = depth_sensor.get_option(rs.option.soc_pvt_temperature) ohm_temp = depth_sensor.get_option(rs.option.ohm_temperature) + proj_temp = depth_sensor.get_option(rs.option.projector_temperature) - return pvt_temp, ohm_temp + return pvt_temp, ohm_temp, proj_temp def parse_temperature_from_hwm(hwm_answer): @@ -75,20 +78,28 @@ def get_temperatures_from_hwm(): ohm_temp_index = 2 ohm_temp = all_temp_list[ohm_temp_index - 1] - return pvt_temp, ohm_temp + # get projector temperature + proj_temp_index = 1 + proj_temp = all_temp_list[proj_temp_index - 1] + + return pvt_temp, ohm_temp, proj_temp ############################################################################################# test.start("Compare Temperature readings XU vs HWMC") -pvt_temp_xu, ohm_temp_xu = get_temperatures_from_xu() +pvt_temp_xu, ohm_temp_xu, projector_temp_xu = get_temperatures_from_xu() -pvt_temp_hwm, ohm_temp_hwm = get_temperatures_from_hwm() +pvt_temp_hwm, ohm_temp_hwm, projector_temp_hwm = get_temperatures_from_hwm() tolerance = 1.0 -test.check_approx_abs(pvt_temp_xu, pvt_temp_hwm, tolerance) -test.check_approx_abs(ohm_temp_xu, ohm_temp_hwm, tolerance) +if depth_sensor.supports(rs.option.soc_pvt_temperature): + test.check_approx_abs(pvt_temp_xu, pvt_temp_hwm, tolerance) +if depth_sensor.supports(rs.option.ohm_temperature): + test.check_approx_abs(ohm_temp_xu, ohm_temp_hwm, tolerance) +if depth_sensor.supports(rs.option.projector_temperature): + test.check_approx_abs(projector_temp_xu, projector_temp_xu, tolerance) test.finish() ############################################################################################# From c111694e8b305ed28f6769d07233484316cdec24 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Wed, 3 Apr 2024 16:05:56 +0300 Subject: [PATCH 13/15] test deleted --- .../live/d500/test-temperatures-xu-vs-hwmc.py | 107 ------------------ 1 file changed, 107 deletions(-) delete mode 100644 unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py diff --git a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py b/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py deleted file mode 100644 index f2a3c4a9e0..0000000000 --- a/unit-tests/live/d500/test-temperatures-xu-vs-hwmc.py +++ /dev/null @@ -1,107 +0,0 @@ -# License: Apache 2.0. See LICENSE file in root directory. -# Copyright(c) 2024 Intel Corporation. All Rights Reserved. - -# test:device D500* - -import pyrealsense2 as rs -from rspy import test - -# This test checks that the same values of temperature are received whether XU command or HWM Command are used. - -dev = test.find_first_device_or_exit() -depth_sensor = dev.first_depth_sensor() -dp_device = dev.as_debug_protocol() - - -######################################## HELPERS ########################################## - -def get_temperatures_from_xu(): - pvt_temp = -10 - ohm_temp = -10 - proj_temp = -10 - - test.check(depth_sensor.supports(rs.option.soc_pvt_temperature)) - test.check(depth_sensor.supports(rs.option.ohm_temperature)) - test.check(depth_sensor.supports(rs.option.projector_temperature)) - - pvt_temp = depth_sensor.get_option(rs.option.soc_pvt_temperature) - ohm_temp = depth_sensor.get_option(rs.option.ohm_temperature) - proj_temp = depth_sensor.get_option(rs.option.projector_temperature) - - return pvt_temp, ohm_temp, proj_temp - - -def parse_temperature_from_hwm(hwm_answer): - """ - The returned value from gtemp hwmc is a list of uint8_t, with: - - the 4 first values are the opcode of the request - 2a 0 0 0 in our case - - the remaining values are temperatures of several components, each represented - by 2 values: the first is the decimal part, and the second one is the whole value part - e.g.: if the 2 values are 90 28 (in hex): - * the whole value part is 0x28 = 40 - * the decimal value part is 0x90 = 144. 144/256 = 0.5625 - So in this example, the resulting temperature is 40.5625 deg. - This function parses the hwmc returned list to a list of temperatures, parsed as explained above. - """ - # stepping over the 4 first values (opcode of the request, see above explanation) - relevant_data = hwm_answer[4:] - temperatures_list = [] - - test.check_equal(len(relevant_data), 20) - whole_number_part = 0 - decimal_part = 0 - for i in range(len(relevant_data)): - if i % 2 == 0: - decimal_part = relevant_data[i] - else: - whole_number_part = relevant_data[i] - current_temp = whole_number_part + decimal_part / 256.0 - temperatures_list.append(current_temp) - whole_number_part = 0 - decimal_part = 0 - return temperatures_list - - -def get_temperatures_from_hwm(): - gtemp_opcode = 0x2a - - # getting all the available temperatures - param_for_all_temp = 0 - all_temp_cmd = dp_device.build_command(opcode=gtemp_opcode, param1=param_for_all_temp) - all_temp_list = parse_temperature_from_hwm(dp_device.send_and_receive_raw_data(all_temp_cmd)) - - # get pvt temperature - pvt_temp_index = 7 - pvt_temp = all_temp_list[pvt_temp_index - 1] - - # get ohm temperature - ohm_temp_index = 2 - ohm_temp = all_temp_list[ohm_temp_index - 1] - - # get projector temperature - proj_temp_index = 1 - proj_temp = all_temp_list[proj_temp_index - 1] - - return pvt_temp, ohm_temp, proj_temp - - -############################################################################################# - -test.start("Compare Temperature readings XU vs HWMC") - -pvt_temp_xu, ohm_temp_xu, projector_temp_xu = get_temperatures_from_xu() - -pvt_temp_hwm, ohm_temp_hwm, projector_temp_hwm = get_temperatures_from_hwm() - -tolerance = 1.0 -if depth_sensor.supports(rs.option.soc_pvt_temperature): - test.check_approx_abs(pvt_temp_xu, pvt_temp_hwm, tolerance) -if depth_sensor.supports(rs.option.ohm_temperature): - test.check_approx_abs(ohm_temp_xu, ohm_temp_hwm, tolerance) -if depth_sensor.supports(rs.option.projector_temperature): - test.check_approx_abs(projector_temp_xu, projector_temp_xu, tolerance) - -test.finish() -############################################################################################# - -test.print_results_and_exit() From 156161609c25ecfb85e4255ad98fede69a8133c3 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Wed, 3 Apr 2024 16:11:56 +0300 Subject: [PATCH 14/15] moving d500 specific xu from common private file --- src/ds/d500/d500-private.h | 7 ++++--- src/ds/ds-private.h | 3 --- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/ds/d500/d500-private.h b/src/ds/d500/d500-private.h index 59e6ed24a4..d38a8e784b 100644 --- a/src/ds/d500/d500-private.h +++ b/src/ds/d500/d500-private.h @@ -17,9 +17,10 @@ namespace librealsense const uint16_t D555E_PID = 0x0B56; const uint16_t D555E_RECOVERY_PID = 0x0ADE; - namespace xu_id - { - } + // DS500 depth XU identifiers + const uint8_t DS5_HKR_PVT_TEMPERATURE = 0x15; + const uint8_t DS5_HKR_PROJECTOR_TEMPERATURE = 0x16; + const uint8_t DS5_HKR_OHM_TEMPERATURE = 0x17; // d500 Devices supported by the current version static const std::set rs500_sku_pid = { diff --git a/src/ds/ds-private.h b/src/ds/ds-private.h index 90fb595c6e..9d4f15f24f 100644 --- a/src/ds/ds-private.h +++ b/src/ds/ds-private.h @@ -61,9 +61,6 @@ namespace librealsense const uint8_t DS5_EMITTER_FREQUENCY = 0x10; const uint8_t DS5_DEPTH_AUTO_EXPOSURE_MODE = 0x11; - const uint8_t DS5_HKR_PVT_TEMPERATURE = 0x15; - const uint8_t DS5_HKR_PROJECTOR_TEMPERATURE = 0x16; - const uint8_t DS5_HKR_OHM_TEMPERATURE = 0x17; // DS5 fisheye XU identifiers const uint8_t FISHEYE_EXPOSURE = 1; From a728a38c19c072daa698c55efe368b8ed49ce6a3 Mon Sep 17 00:00:00 2001 From: Remi Bettan Date: Thu, 4 Apr 2024 14:55:37 +0300 Subject: [PATCH 15/15] cr --- src/ds/d500/d500-options.cpp | 4 ++-- src/ds/d500/d500-options.h | 3 +-- src/ds/ds-private.h | 1 - 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/ds/d500/d500-options.cpp b/src/ds/d500/d500-options.cpp index b4bf020ccf..aca1c50a62 100644 --- a/src/ds/d500/d500-options.cpp +++ b/src/ds/d500/d500-options.cpp @@ -52,8 +52,8 @@ namespace librealsense } temperature_xu_option::temperature_xu_option(const std::weak_ptr& ep, platform::extension_unit xu, uint8_t id, - std::string description, bool allow_set_while_streaming) - : uvc_xu_option(ep, xu, id, description, allow_set_while_streaming, + std::string description) + : uvc_xu_option(ep, xu, id, description, false, // defining the parsing modifier, to be used on the calls for query and get_range methods [](const int16_t read_value) { return static_cast(read_value) / 10.f; diff --git a/src/ds/d500/d500-options.h b/src/ds/d500/d500-options.h index 8f471b3409..68a2d46411 100644 --- a/src/ds/d500/d500-options.h +++ b/src/ds/d500/d500-options.h @@ -84,8 +84,7 @@ namespace librealsense explicit temperature_xu_option(const std::weak_ptr< uvc_sensor >& ep, platform::extension_unit xu, uint8_t id, - std::string description, - bool allow_set_while_streaming = true); + std::string description); virtual float query() const override; virtual void set(float value) override; diff --git a/src/ds/ds-private.h b/src/ds/ds-private.h index 9d4f15f24f..2cde1a23d6 100644 --- a/src/ds/ds-private.h +++ b/src/ds/ds-private.h @@ -60,7 +60,6 @@ namespace librealsense const uint8_t DS5_THERMAL_COMPENSATION = 0xF; const uint8_t DS5_EMITTER_FREQUENCY = 0x10; const uint8_t DS5_DEPTH_AUTO_EXPOSURE_MODE = 0x11; - // DS5 fisheye XU identifiers const uint8_t FISHEYE_EXPOSURE = 1;