From 92df6da74d067d4f0b2c24c7287cdef5858d374f Mon Sep 17 00:00:00 2001 From: ob-yalian Date: Fri, 27 Feb 2026 18:03:49 +0800 Subject: [PATCH] feat: enhance setDisparityRangeModeCallback with valid mode checks and detailed error messages --- orbbec_camera/src/ros_service.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/orbbec_camera/src/ros_service.cpp b/orbbec_camera/src/ros_service.cpp index d7877276..916d14e2 100644 --- a/orbbec_camera/src/ros_service.cpp +++ b/orbbec_camera/src/ros_service.cpp @@ -401,13 +401,26 @@ void OBCameraNode::setDisparityRangeModeCallback(const std::shared_ptrgetIntPropertyRange(OB_PROP_DISP_SEARCH_RANGE_MODE_INT); - int requested_mode_value = request->data; - int hw_mode_index = requested_mode_value; + const int requested_mode_value = request->data; + int hw_mode_index = -1; + if (requested_mode_value == 64) { + hw_mode_index = 0; + } else if (requested_mode_value == 128) { + hw_mode_index = 1; + } else if (requested_mode_value == 256) { + hw_mode_index = 2; + } + if (hw_mode_index < range.min || hw_mode_index > range.max) { response->success = false; - response->message = - "Invalid disparity range mode. Allowed values:" + std::to_string(range.min) + " to " + - std::to_string(range.max); + std::string supported_mode; + for (int i = range.min; i <= range.max; ++i) { + supported_mode += (i == 0) ? "64/" + : (i == 1) ? "128/" + : (i == 2) ? "256" + : std::to_string(i); + } + response->message = "Invalid disparity range mode. Allowed values:" + supported_mode; return; }