From 1ccf18d85a6fe96391538bfa14e0e9e7f45d4204 Mon Sep 17 00:00:00 2001 From: Bernd Pfrommer Date: Mon, 8 Jul 2024 15:22:18 -0400 Subject: [PATCH] add support for transport layer and stream params --- spinnaker_camera_driver/config/blackfly.yaml | 13 +++++++++++++ spinnaker_camera_driver/config/blackfly_s.yaml | 7 +++++++ .../launch/driver_node.launch.py | 7 ++++--- spinnaker_camera_driver/src/genicam_utils.cpp | 16 +++++++++++++--- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/spinnaker_camera_driver/config/blackfly.yaml b/spinnaker_camera_driver/config/blackfly.yaml index 541747e..de060c3 100644 --- a/spinnaker_camera_driver/config/blackfly.yaml +++ b/spinnaker_camera_driver/config/blackfly.yaml @@ -172,3 +172,16 @@ parameters: - name: chunk_enable_timestamp type: bool node: ChunkDataControl/ChunkEnable + # + # ------- stream layer + # + - name: "stream_buffer_handling_mode" + type: enum + # valid values: "NewestFirst", "OldestFirst", "NewestOnly", "OldestFirstOverwrite" + node: BufferHandlingControl/StreamBufferHandlingMode + # + # ------- transport layer + # + - name: "multicast_monitor_mode" + type: bool + node: "DeviceControl/DeviceMulticastMonitorMode" diff --git a/spinnaker_camera_driver/config/blackfly_s.yaml b/spinnaker_camera_driver/config/blackfly_s.yaml index 6d59255..6900e76 100644 --- a/spinnaker_camera_driver/config/blackfly_s.yaml +++ b/spinnaker_camera_driver/config/blackfly_s.yaml @@ -169,3 +169,10 @@ parameters: - name: chunk_enable_timestamp type: bool node: ChunkDataControl/ChunkEnable + # + # ------- stream layer + # + - name: "stream_buffer_handling_mode" + type: enum + # valid values: "NewestFirst", "OldestFirst", "NewestOnly", "OldestFirstOverwrite" + node: BufferHandlingControl/StreamBufferHandlingMode diff --git a/spinnaker_camera_driver/launch/driver_node.launch.py b/spinnaker_camera_driver/launch/driver_node.launch.py index d25dd54..661e00f 100644 --- a/spinnaker_camera_driver/launch/driver_node.launch.py +++ b/spinnaker_camera_driver/launch/driver_node.launch.py @@ -63,8 +63,8 @@ 'chunk_enable_timestamp': True, }, 'blackfly': { - 'debug': True, - 'dump_node_map': True, + 'debug': False, + 'dump_node_map': False, 'gain_auto': 'Continuous', 'pixel_format': 'BayerRG8', 'exposure_auto': 'Continuous', @@ -73,7 +73,8 @@ 'frame_rate_enable': True, 'buffer_queue_size': 10, 'trigger_mode': 'Off', - 'stream_buffer_handling_mode': 'NewestFirst' + # 'stream_buffer_handling_mode': 'NewestFirst', + # 'multicast_monitor_mode': False }, 'chameleon': { 'debug': False, diff --git a/spinnaker_camera_driver/src/genicam_utils.cpp b/spinnaker_camera_driver/src/genicam_utils.cpp index 15e170c..1c22be8 100644 --- a/spinnaker_camera_driver/src/genicam_utils.cpp +++ b/spinnaker_camera_driver/src/genicam_utils.cpp @@ -94,9 +94,19 @@ static std::optional find_node( std::optional find_node( const std::string & path, Spinnaker::CameraPtr cam, bool debug, bool allow_unreadable) { - INodeMap & appLayerNodeMap = cam->GetNodeMap(); - CNodePtr rootNode = appLayerNodeMap.GetNode("Root"); - return (find_node(path, rootNode, debug, allow_unreadable)); + CNodePtr rootNode = cam->GetNodeMap().GetNode("Root"); + std::optional nodeptr = find_node(path, rootNode, debug, allow_unreadable); + if (nodeptr) { + return (nodeptr); + } + rootNode = cam->GetTLStreamNodeMap().GetNode("Root"); + nodeptr = find_node(path, rootNode, debug, allow_unreadable); + if (nodeptr) { + return (nodeptr); + } + rootNode = cam->GetTLDeviceNodeMap().GetNode("Root"); + nodeptr = find_node(path, rootNode, debug, allow_unreadable); + return (nodeptr); } } // namespace genicam_utils } // namespace spinnaker_camera_driver