From 85c6f9628ed20c74b9b70c736df5a34b37e1f5a1 Mon Sep 17 00:00:00 2001 From: Lennart Nachtigall Date: Mon, 15 Jan 2024 10:34:20 +0100 Subject: [PATCH 1/3] resolve symlinks --- src/ros2/usb_cam_node.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ros2/usb_cam_node.cpp b/src/ros2/usb_cam_node.cpp index 1a1cca97..f5a487d2 100644 --- a/src/ros2/usb_cam_node.cpp +++ b/src/ros2/usb_cam_node.cpp @@ -30,7 +30,7 @@ #include #include #include - +#include #include "usb_cam/usb_cam_node.hpp" #include "usb_cam/utils.hpp" @@ -121,6 +121,14 @@ void UsbCamNode::service_capture( } } +std::string resolve_device_path(const std::string& path){ + if(std::filesystem::is_symlink(path)){ + //For some reason read_symlink only returns videox + return "/dev/" + std::string(std::filesystem::read_symlink(path)); + } + return path; +} + void UsbCamNode::init() { while (m_parameters.frame_id == "") { @@ -246,7 +254,7 @@ void UsbCamNode::assign_params(const std::vector & parameters } else if (parameter.get_name() == "av_device_format") { m_parameters.av_device_format = parameter.value_to_string(); } else if (parameter.get_name() == "video_device") { - m_parameters.device_name = parameter.value_to_string(); + m_parameters.device_name = resolve_device_path(parameter.value_to_string()); } else if (parameter.get_name() == "brightness") { m_parameters.brightness = parameter.as_int(); } else if (parameter.get_name() == "contrast") { From cf57f102cf726e58e88597a321a6caf26e16d354 Mon Sep 17 00:00:00 2001 From: Lennart Nachtigall Date: Tue, 16 Jan 2024 08:47:39 +0100 Subject: [PATCH 2/3] try to fix formatting issue --- src/ros2/usb_cam_node.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ros2/usb_cam_node.cpp b/src/ros2/usb_cam_node.cpp index f5a487d2..ec813671 100644 --- a/src/ros2/usb_cam_node.cpp +++ b/src/ros2/usb_cam_node.cpp @@ -123,7 +123,7 @@ void UsbCamNode::service_capture( std::string resolve_device_path(const std::string& path){ if(std::filesystem::is_symlink(path)){ - //For some reason read_symlink only returns videox + // For some reason read_symlink only returns videox return "/dev/" + std::string(std::filesystem::read_symlink(path)); } return path; From ca58339a407fa0d95d24ec28f2acb7fe057fe9e4 Mon Sep 17 00:00:00 2001 From: Lennart Nachtigall Date: Wed, 17 Jan 2024 07:39:11 +0100 Subject: [PATCH 3/3] Update usb_cam_node.cpp Fix formatting --- src/ros2/usb_cam_node.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ros2/usb_cam_node.cpp b/src/ros2/usb_cam_node.cpp index ec813671..f8e8deda 100644 --- a/src/ros2/usb_cam_node.cpp +++ b/src/ros2/usb_cam_node.cpp @@ -121,8 +121,9 @@ void UsbCamNode::service_capture( } } -std::string resolve_device_path(const std::string& path){ - if(std::filesystem::is_symlink(path)){ +std::string resolve_device_path(const std::string & path) +{ + if (std::filesystem::is_symlink(path)) { // For some reason read_symlink only returns videox return "/dev/" + std::string(std::filesystem::read_symlink(path)); }