Skip to content

Commit c4cf7a0

Browse files
squizz617sloretz
andauthored
make _on_parameter_event return result correctly (#817)
* make _on_parameter_event return result correctly Previously, `_on_parameter_event` always returned `successful=True` to the caller (e.g., ros2param set) regardless of whether setting `use_sim_time` parameter actually succeeded or not. * PoC: ```sh # terminal 1 $ ros2 run examples_rclpy_minimal_publisher publisher_member_function [INFO] [1629490410.452032755] [minimal_publisher]: Publishing: "Hello World: 0" [INFO] [1629490410.918999697] [minimal_publisher]: Publishing: "Hello World: 1" [INFO] [1629490411.419087028] [minimal_publisher]: Publishing: "Hello World: 2" [INFO] [1629490411.919343319] [minimal_publisher]: Publishing: "Hello World: 3" [INFO] [1629490412.419345165] [minimal_publisher]: Publishing: "Hello World: 4" [INFO] [1629490412.919260702] [minimal_publisher]: Publishing: "Hello World: 5" [ERROR] [1629490413.030775970] [minimal_publisher]: use_sim_time parameter set to something besides a bool [INFO] [1629490413.419389164] [minimal_publisher]: Publishing: "Hello World: 6" [INFO] [1629490413.919106545] [minimal_publisher]: Publishing: "Hello World: 7" ``` ```sh # terminal 2 $ ros2 param set /minimal_publisher use_sim_time Trueeeee Set parameter successful ``` As demonstrated above, when trying to set `use_sim_time` param to an invalid type, the minimal_publisher node complains it cannot. However, ros2 param prints "Set parameter successful". This commit fixes this issue. Signed-off-by: Seulbae Kim <[email protected]> * use single quote Signed-off-by: Seulbae Kim <[email protected]> Co-authored-by: Shane Loretz <[email protected]>
1 parent 649bdec commit c4cf7a0

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

rclpy/rclpy/time_source.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,19 +123,24 @@ def clock_callback(self, msg):
123123
clock.set_ros_time_override(time_from_msg)
124124

125125
def _on_parameter_event(self, parameter_list):
126+
successful = True
127+
reason = ''
128+
126129
for parameter in parameter_list:
127130
if parameter.name == USE_SIM_TIME_NAME:
128131
if parameter.type_ == Parameter.Type.BOOL:
129132
self.ros_time_is_active = parameter.value
130133
else:
134+
successful = False
135+
reason = '{} parameter set to something besides a bool'.format(
136+
USE_SIM_TIME_NAME)
137+
131138
node = self._get_node()
132139
if node:
133-
node.get_logger().error(
134-
'{} parameter set to something besides a bool'
135-
.format(USE_SIM_TIME_NAME))
140+
node.get_logger().error(reason)
136141
break
137142

138-
return SetParametersResult(successful=True)
143+
return SetParametersResult(successful=successful, reason=reason)
139144

140145
def _get_node(self):
141146
if self._node_weak_ref is not None:

0 commit comments

Comments
 (0)