mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-11 23:09:51 +08:00
feat: add device preset option to list_camera_profile tool
This commit is contained in:
@@ -22,15 +22,18 @@ constexpr char kDocumentationUrl[] =
|
|||||||
struct CliArgs {
|
struct CliArgs {
|
||||||
bool help = false;
|
bool help = false;
|
||||||
std::string serial_number;
|
std::string serial_number;
|
||||||
|
std::string device_preset;
|
||||||
std::string sdk_log_level = "off";
|
std::string sdk_log_level = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
void printUsage() {
|
void printUsage() {
|
||||||
std::cout << "Usage:\n"
|
std::cout << "Usage:\n"
|
||||||
<< "ros2 run orbbec_camera list_camera_profile_mode_node --\\\n"
|
<< "ros2 run orbbec_camera list_camera_profile_mode_node --\\\n"
|
||||||
<< " [--serial_number SN]\n\n"
|
<< " [--serial_number SN] [--device_preset PRESET]\n\n"
|
||||||
<< "Parameters:\n"
|
<< "Parameters:\n"
|
||||||
<< " --serial_number SN Select a specific camera by serial number.\n"
|
<< " --serial_number SN Select a specific camera by serial number.\n"
|
||||||
|
<< " --device_preset PRESET\n"
|
||||||
|
<< " Load a device preset before listing profiles.\n"
|
||||||
<< " --sdk_log_level LEVEL\n"
|
<< " --sdk_log_level LEVEL\n"
|
||||||
<< " SDK file log level: debug/info/warn/error/fatal/off "
|
<< " SDK file log level: debug/info/warn/error/fatal/off "
|
||||||
"(default: off).\n"
|
"(default: off).\n"
|
||||||
@@ -67,6 +70,28 @@ bool parseArgs(int argc, char** argv, CliArgs& args, std::string& error) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (current.rfind("--device_preset=", 0) == 0) {
|
||||||
|
args.device_preset = current.substr(std::strlen("--device_preset="));
|
||||||
|
if (args.device_preset.empty()) {
|
||||||
|
error = "--device_preset requires a value";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (current == "--device_preset") {
|
||||||
|
if (++i >= argc) {
|
||||||
|
error = "--device_preset requires a value";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
args.device_preset = argv[i];
|
||||||
|
if (args.device_preset.empty()) {
|
||||||
|
error = "--device_preset requires a value";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (current.rfind("--sdk_log_level=", 0) == 0) {
|
if (current.rfind("--sdk_log_level=", 0) == 0) {
|
||||||
args.sdk_log_level = current.substr(std::strlen("--sdk_log_level="));
|
args.sdk_log_level = current.substr(std::strlen("--sdk_log_level="));
|
||||||
continue;
|
continue;
|
||||||
@@ -220,6 +245,23 @@ void printPreset(const std::shared_ptr<ob::Device>& device) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool loadDevicePreset(const std::shared_ptr<ob::Device>& device, const std::string& device_preset) {
|
||||||
|
if (device_preset.empty()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
device->loadPreset(device_preset.c_str());
|
||||||
|
std::cout << "Loaded device preset: " << device_preset << std::endl;
|
||||||
|
return true;
|
||||||
|
} catch (const ob::Error& e) {
|
||||||
|
std::cerr << "Failed to load device preset: " << formatObErrorWithStatus(e) << std::endl;
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
std::cerr << "Failed to load device preset: " << e.what() << std::endl;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
CliArgs args;
|
CliArgs args;
|
||||||
std::string parse_error;
|
std::string parse_error;
|
||||||
@@ -247,6 +289,9 @@ int main(int argc, char** argv) {
|
|||||||
if (isSdkLogEnabled(args.sdk_log_level)) {
|
if (isSdkLogEnabled(args.sdk_log_level)) {
|
||||||
firmware_log_enabled = enableFirmwareLog(device);
|
firmware_log_enabled = enableFirmwareLog(device);
|
||||||
}
|
}
|
||||||
|
if (!loadDevicePreset(device, args.device_preset)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
listSensorProfiles(device);
|
listSensorProfiles(device);
|
||||||
printDeviceProperties(device);
|
printDeviceProperties(device);
|
||||||
printPreset(device);
|
printPreset(device);
|
||||||
|
|||||||
Reference in New Issue
Block a user