mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-10 22:49:51 +08:00
feat: enhance setDisparityRangeModeCallback with valid mode checks and detailed error messages
This commit is contained in:
@@ -401,13 +401,26 @@ void OBCameraNode::setDisparityRangeModeCallback(const std::shared_ptr<SetInt32:
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto range = device_->getIntPropertyRange(OB_PROP_DISP_SEARCH_RANGE_MODE_INT);
|
auto range = device_->getIntPropertyRange(OB_PROP_DISP_SEARCH_RANGE_MODE_INT);
|
||||||
int requested_mode_value = request->data;
|
const int requested_mode_value = request->data;
|
||||||
int hw_mode_index = requested_mode_value;
|
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) {
|
if (hw_mode_index < range.min || hw_mode_index > range.max) {
|
||||||
response->success = false;
|
response->success = false;
|
||||||
response->message =
|
std::string supported_mode;
|
||||||
"Invalid disparity range mode. Allowed values:" + std::to_string(range.min) + " to " +
|
for (int i = range.min; i <= range.max; ++i) {
|
||||||
std::to_string(range.max);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user