@@ -63,10 +63,11 @@ class LifecycleNode::LifecycleNodeInterfaceImpl
6363
6464 ~LifecycleNodeInterfaceImpl ()
6565 {
66+ fprintf (stderr, " oh yeah destructuro\n " );
6667 rcl_node_t * node_handle = node_base_interface_->get_rcl_node_handle ();
67- const rcl_node_options_t * node_options = rcl_node_get_options (node_handle );
68- auto ret = rcl_lifecycle_state_machine_fini (
69- &state_machine_, node_handle, &node_options-> allocator );
68+ fprintf (stderr, " oh yeah end destructuro \n " );
69+ auto ret = rcl_lifecycle_state_machine_fini (&state_machine_, node_handle);
70+ fprintf (stderr, " oh yeah end destructuro222 \n " );
7071 if (ret != RCL_RET_OK) {
7172 RCUTILS_LOG_FATAL_NAMED (
7273 " rclcpp_lifecycle" ,
@@ -75,12 +76,16 @@ class LifecycleNode::LifecycleNodeInterfaceImpl
7576 }
7677
7778 void
78- init ()
79+ init (bool enable_communication_interface = true )
7980 {
8081 rcl_node_t * node_handle = node_base_interface_->get_rcl_node_handle ();
8182 const rcl_node_options_t * node_options =
8283 rcl_node_get_options (node_base_interface_->get_rcl_node_handle ());
8384 state_machine_ = rcl_lifecycle_get_zero_initialized_state_machine ();
85+ auto state_machine_options = rcl_lifecycle_get_default_state_machine_options ();
86+ state_machine_options.enable_com_interface = enable_communication_interface;
87+ state_machine_options.allocator = node_options->allocator ;
88+
8489 // The call to initialize the state machine takes
8590 // currently five different typesupports for all publishers/services
8691 // created within the RCL_LIFECYCLE structure.
@@ -96,94 +101,96 @@ class LifecycleNode::LifecycleNodeInterfaceImpl
96101 rosidl_typesupport_cpp::get_service_type_support_handle<GetAvailableStatesSrv>(),
97102 rosidl_typesupport_cpp::get_service_type_support_handle<GetAvailableTransitionsSrv>(),
98103 rosidl_typesupport_cpp::get_service_type_support_handle<GetAvailableTransitionsSrv>(),
99- true ,
100- &node_options->allocator );
104+ &state_machine_options);
101105 if (ret != RCL_RET_OK) {
106+ fprintf (stderr, " oh yeah %s\n " , node_base_interface_->get_name ());
102107 throw std::runtime_error (
103108 std::string (" Couldn't initialize state machine for node " ) +
104109 node_base_interface_->get_name ());
105110 }
106111
107- { // change_state
108- auto cb = std::bind (
109- &LifecycleNodeInterfaceImpl::on_change_state, this ,
110- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
111- rclcpp::AnyServiceCallback<ChangeStateSrv> any_cb;
112- any_cb.set (std::move (cb));
113-
114- srv_change_state_ = std::make_shared<rclcpp::Service<ChangeStateSrv>>(
115- node_base_interface_->get_shared_rcl_node_handle (),
116- &state_machine_.com_interface .srv_change_state ,
117- any_cb);
118- node_services_interface_->add_service (
119- std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_change_state_),
120- nullptr );
121- }
112+ if (enable_communication_interface) {
113+ { // change_state
114+ auto cb = std::bind (
115+ &LifecycleNodeInterfaceImpl::on_change_state, this ,
116+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
117+ rclcpp::AnyServiceCallback<ChangeStateSrv> any_cb;
118+ any_cb.set (std::move (cb));
119+
120+ srv_change_state_ = std::make_shared<rclcpp::Service<ChangeStateSrv>>(
121+ node_base_interface_->get_shared_rcl_node_handle (),
122+ &state_machine_.com_interface .srv_change_state ,
123+ any_cb);
124+ node_services_interface_->add_service (
125+ std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_change_state_),
126+ nullptr );
127+ }
122128
123- { // get_state
124- auto cb = std::bind (
125- &LifecycleNodeInterfaceImpl::on_get_state, this ,
126- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
127- rclcpp::AnyServiceCallback<GetStateSrv> any_cb;
128- any_cb.set (std::move (cb));
129-
130- srv_get_state_ = std::make_shared<rclcpp::Service<GetStateSrv>>(
131- node_base_interface_->get_shared_rcl_node_handle (),
132- &state_machine_.com_interface .srv_get_state ,
133- any_cb);
134- node_services_interface_->add_service (
135- std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_get_state_),
136- nullptr );
137- }
129+ { // get_state
130+ auto cb = std::bind (
131+ &LifecycleNodeInterfaceImpl::on_get_state, this ,
132+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
133+ rclcpp::AnyServiceCallback<GetStateSrv> any_cb;
134+ any_cb.set (std::move (cb));
135+
136+ srv_get_state_ = std::make_shared<rclcpp::Service<GetStateSrv>>(
137+ node_base_interface_->get_shared_rcl_node_handle (),
138+ &state_machine_.com_interface .srv_get_state ,
139+ any_cb);
140+ node_services_interface_->add_service (
141+ std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_get_state_),
142+ nullptr );
143+ }
138144
139- { // get_available_states
140- auto cb = std::bind (
141- &LifecycleNodeInterfaceImpl::on_get_available_states, this ,
142- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
143- rclcpp::AnyServiceCallback<GetAvailableStatesSrv> any_cb;
144- any_cb.set (std::move (cb));
145-
146- srv_get_available_states_ = std::make_shared<rclcpp::Service<GetAvailableStatesSrv>>(
147- node_base_interface_->get_shared_rcl_node_handle (),
148- &state_machine_.com_interface .srv_get_available_states ,
149- any_cb);
150- node_services_interface_->add_service (
151- std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_get_available_states_),
152- nullptr );
153- }
145+ { // get_available_states
146+ auto cb = std::bind (
147+ &LifecycleNodeInterfaceImpl::on_get_available_states, this ,
148+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
149+ rclcpp::AnyServiceCallback<GetAvailableStatesSrv> any_cb;
150+ any_cb.set (std::move (cb));
151+
152+ srv_get_available_states_ = std::make_shared<rclcpp::Service<GetAvailableStatesSrv>>(
153+ node_base_interface_->get_shared_rcl_node_handle (),
154+ &state_machine_.com_interface .srv_get_available_states ,
155+ any_cb);
156+ node_services_interface_->add_service (
157+ std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_get_available_states_),
158+ nullptr );
159+ }
154160
155- { // get_available_transitions
156- auto cb = std::bind (
157- &LifecycleNodeInterfaceImpl::on_get_available_transitions, this ,
158- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
159- rclcpp::AnyServiceCallback<GetAvailableTransitionsSrv> any_cb;
160- any_cb.set (std::move (cb));
161-
162- srv_get_available_transitions_ =
163- std::make_shared<rclcpp::Service<GetAvailableTransitionsSrv>>(
164- node_base_interface_->get_shared_rcl_node_handle (),
165- &state_machine_.com_interface .srv_get_available_transitions ,
166- any_cb);
167- node_services_interface_->add_service (
168- std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_get_available_transitions_),
169- nullptr );
170- }
161+ { // get_available_transitions
162+ auto cb = std::bind (
163+ &LifecycleNodeInterfaceImpl::on_get_available_transitions, this ,
164+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
165+ rclcpp::AnyServiceCallback<GetAvailableTransitionsSrv> any_cb;
166+ any_cb.set (std::move (cb));
167+
168+ srv_get_available_transitions_ =
169+ std::make_shared<rclcpp::Service<GetAvailableTransitionsSrv>>(
170+ node_base_interface_->get_shared_rcl_node_handle (),
171+ &state_machine_.com_interface .srv_get_available_transitions ,
172+ any_cb);
173+ node_services_interface_->add_service (
174+ std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_get_available_transitions_),
175+ nullptr );
176+ }
171177
172- { // get_transition_graph
173- auto cb = std::bind (
174- &LifecycleNodeInterfaceImpl::on_get_transition_graph, this ,
175- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
176- rclcpp::AnyServiceCallback<GetAvailableTransitionsSrv> any_cb;
177- any_cb.set (std::move (cb));
178-
179- srv_get_transition_graph_ =
180- std::make_shared<rclcpp::Service<GetAvailableTransitionsSrv>>(
181- node_base_interface_->get_shared_rcl_node_handle (),
182- &state_machine_.com_interface .srv_get_transition_graph ,
183- any_cb);
184- node_services_interface_->add_service (
185- std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_get_transition_graph_),
186- nullptr );
178+ { // get_transition_graph
179+ auto cb = std::bind (
180+ &LifecycleNodeInterfaceImpl::on_get_transition_graph, this ,
181+ std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
182+ rclcpp::AnyServiceCallback<GetAvailableTransitionsSrv> any_cb;
183+ any_cb.set (std::move (cb));
184+
185+ srv_get_transition_graph_ =
186+ std::make_shared<rclcpp::Service<GetAvailableTransitionsSrv>>(
187+ node_base_interface_->get_shared_rcl_node_handle (),
188+ &state_machine_.com_interface .srv_get_transition_graph ,
189+ any_cb);
190+ node_services_interface_->add_service (
191+ std::dynamic_pointer_cast<rclcpp::ServiceBase>(srv_get_transition_graph_),
192+ nullptr );
193+ }
187194 }
188195 }
189196
0 commit comments