diff --git a/rosbridge_library/src/rosbridge_library/capabilities/call_service.py b/rosbridge_library/src/rosbridge_library/capabilities/call_service.py index 33f7c1807..0a6fc3d95 100644 --- a/rosbridge_library/src/rosbridge_library/capabilities/call_service.py +++ b/rosbridge_library/src/rosbridge_library/capabilities/call_service.py @@ -52,6 +52,12 @@ def __init__(self, protocol): # Call superclass constructor Capability.__init__(self, protocol) + self.default_timeout = ( + protocol.node_handle.get_parameter("default_call_service_timeout") + .get_parameter_value() + .double_value + ) + # Register the operations that this capability provides call_services_in_new_thread = ( protocol.node_handle.get_parameter("call_services_in_new_thread") @@ -81,7 +87,7 @@ def call_service(self, message): fragment_size = message.get("fragment_size", None) compression = message.get("compression", "none") args = message.get("args", []) - timeout = message.get("timeout", 5.0) + timeout = message.get("timeout", self.default_timeout) if CallService.services_glob is not None and CallService.services_glob: self.protocol.log( diff --git a/rosbridge_library/test/capabilities/test_call_service.py b/rosbridge_library/test/capabilities/test_call_service.py index a11ba3662..0ae780201 100755 --- a/rosbridge_library/test/capabilities/test_call_service.py +++ b/rosbridge_library/test/capabilities/test_call_service.py @@ -40,6 +40,7 @@ def setUp(self): self.executor.add_node(self.node) self.node.declare_parameter("call_services_in_new_thread", False) + self.node.declare_parameter("default_call_service_timeout", 5.0) self.node.declare_parameter("send_action_goals_in_new_thread", False) # Create service servers with a separate callback group diff --git a/rosbridge_library/test/capabilities/test_service_capabilities.py b/rosbridge_library/test/capabilities/test_service_capabilities.py index 4c2d3fdfa..2eda02db5 100755 --- a/rosbridge_library/test/capabilities/test_service_capabilities.py +++ b/rosbridge_library/test/capabilities/test_service_capabilities.py @@ -23,6 +23,7 @@ def setUp(self): self.node = Node("test_service_capabilities") self.node.declare_parameter("call_services_in_new_thread", False) + self.node.declare_parameter("default_call_service_timeout", 5.0) self.node.declare_parameter("send_action_goals_in_new_thread", False) self.proto = Protocol(self._testMethodName, self.node) diff --git a/rosbridge_server/launch/rosbridge_websocket_launch.xml b/rosbridge_server/launch/rosbridge_websocket_launch.xml index 389b2ff15..1063d9645 100644 --- a/rosbridge_server/launch/rosbridge_websocket_launch.xml +++ b/rosbridge_server/launch/rosbridge_websocket_launch.xml @@ -17,6 +17,7 @@ + @@ -42,6 +43,7 @@ + diff --git a/rosbridge_server/scripts/rosbridge_websocket.py b/rosbridge_server/scripts/rosbridge_websocket.py index 49d2a52b6..ad58fca99 100755 --- a/rosbridge_server/scripts/rosbridge_websocket.py +++ b/rosbridge_server/scripts/rosbridge_websocket.py @@ -178,6 +178,10 @@ def protocol_parameter_handling(self): "call_services_in_new_thread", False ).value + RosbridgeWebSocket.default_call_service_timeout = self.declare_parameter( + "default_call_service_timeout", 5.0 + ).value + RosbridgeWebSocket.send_action_goals_in_new_thread = self.declare_parameter( "send_action_goals_in_new_thread", False ).value