@@ -125,6 +125,12 @@ LifecycleManager::managerCallback(
125125 case ManageLifecycleNodes::Request::STARTUP:
126126 response->success = startup ();
127127 break ;
128+ case ManageLifecycleNodes::Request::CONFIGURE:
129+ response->success = configure ();
130+ break ;
131+ case ManageLifecycleNodes::Request::CLEANUP:
132+ response->success = cleanup ();
133+ break ;
128134 case ManageLifecycleNodes::Request::RESET:
129135 response->success = reset ();
130136 break ;
@@ -291,6 +297,34 @@ LifecycleManager::startup()
291297 return true ;
292298}
293299
300+ bool
301+ LifecycleManager::configure ()
302+ {
303+ message (" Configuring managed nodes..." );
304+ if (!changeStateForAllNodes (Transition::TRANSITION_CONFIGURE)) {
305+ RCLCPP_ERROR (get_logger (), " Failed to configure all requested nodes. Aborting bringup." );
306+ managed_nodes_state_ = NodeState::UNKNOWN;
307+ return false ;
308+ }
309+ message (" Managed nodes are now configured" );
310+ managed_nodes_state_ = NodeState::INACTIVE;
311+ return true ;
312+ }
313+
314+ bool
315+ LifecycleManager::cleanup ()
316+ {
317+ message (" Cleaning up managed nodes..." );
318+ if (!changeStateForAllNodes (Transition::TRANSITION_CLEANUP)) {
319+ RCLCPP_ERROR (get_logger (), " Failed to cleanup all requested nodes. Aborting cleanup." );
320+ managed_nodes_state_ = NodeState::UNKNOWN;
321+ return false ;
322+ }
323+ message (" Managed nodes have been cleaned up" );
324+ managed_nodes_state_ = NodeState::UNCONFIGURED;
325+ return true ;
326+ }
327+
294328bool
295329LifecycleManager::shutdown ()
296330{
0 commit comments