rcl_lifecycle  master
C API providing common functionality for ROS lifecycle.
All Classes Namespaces Files Functions Variables Modules Pages
rcl_lifecycle.h
1 // Copyright 2016 Open Source Robotics Foundation, Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
33 #ifndef RCL_LIFECYCLE__RCL_LIFECYCLE_H_
34 #define RCL_LIFECYCLE__RCL_LIFECYCLE_H_
35 
36 #ifdef __cplusplus
37 extern "C"
38 {
39 #endif
40 
41 #include <stdbool.h>
42 
43 #include "rcl_lifecycle/data_types.h"
44 #include "rcl_lifecycle/default_state_machine.h"
45 #include "rcl_lifecycle/visibility_control.h"
46 
48 
54 RCL_LIFECYCLE_PUBLIC
56 rcl_lifecycle_get_zero_initialized_state();
57 
59 
83 RCL_LIFECYCLE_PUBLIC
84 RCL_WARN_UNUSED
86 rcl_lifecycle_state_init(
87  rcl_lifecycle_state_t * state,
88  uint8_t id,
89  const char * label,
90  const rcl_allocator_t * allocator);
91 
93 
112 RCL_LIFECYCLE_PUBLIC
113 RCL_WARN_UNUSED
114 rcl_ret_t
115 rcl_lifecycle_state_fini(
116  rcl_lifecycle_state_t * state,
117  const rcl_allocator_t * allocator);
118 
120 
124 RCL_LIFECYCLE_PUBLIC
126 rcl_lifecycle_get_zero_initialized_transition();
127 
129 
159 RCL_LIFECYCLE_PUBLIC
160 RCL_WARN_UNUSED
161 rcl_ret_t
162 rcl_lifecycle_transition_init(
163  rcl_lifecycle_transition_t * transition,
164  unsigned int id,
165  const char * label,
166  rcl_lifecycle_state_t * start,
167  rcl_lifecycle_state_t * goal,
168  const rcl_allocator_t * allocator);
169 
171 
190 RCL_LIFECYCLE_PUBLIC
191 RCL_WARN_UNUSED
192 rcl_ret_t
193 rcl_lifecycle_transition_fini(
194  rcl_lifecycle_transition_t * transition,
195  const rcl_allocator_t * allocator);
196 
198 RCL_LIFECYCLE_PUBLIC
200 rcl_lifecycle_get_default_state_machine_options();
201 
203 
207 RCL_LIFECYCLE_PUBLIC
209 rcl_lifecycle_get_zero_initialized_state_machine();
210 
212 
241 RCL_LIFECYCLE_PUBLIC
242 RCL_WARN_UNUSED
243 rcl_ret_t
244 rcl_lifecycle_state_machine_init(
245  rcl_lifecycle_state_machine_t * state_machine,
246  rcl_node_t * node_handle,
247  const rosidl_message_type_support_t * ts_pub_notify,
248  const rosidl_service_type_support_t * ts_srv_change_state,
249  const rosidl_service_type_support_t * ts_srv_get_state,
250  const rosidl_service_type_support_t * ts_srv_get_available_states,
251  const rosidl_service_type_support_t * ts_srv_get_available_transitions,
252  const rosidl_service_type_support_t * ts_srv_get_transition_graph,
253  const rcl_lifecycle_state_machine_options_t * state_machine_options);
254 
256 
275 RCL_LIFECYCLE_PUBLIC
276 RCL_WARN_UNUSED
277 rcl_ret_t
278 rcl_lifecycle_state_machine_fini(
279  rcl_lifecycle_state_machine_t * state_machine,
280  rcl_node_t * node_handle);
281 
283 
300 RCL_LIFECYCLE_PUBLIC
301 RCL_WARN_UNUSED
302 rcl_ret_t
303 rcl_lifecycle_state_machine_is_initialized(
304  const rcl_lifecycle_state_machine_t * state_machine);
305 
307 
323 RCL_LIFECYCLE_PUBLIC
324 RCL_WARN_UNUSED
326 rcl_lifecycle_get_transition_by_id(
327  const rcl_lifecycle_state_t * state,
328  uint8_t id);
329 
331 
347 RCL_LIFECYCLE_PUBLIC
348 RCL_WARN_UNUSED
350 rcl_lifecycle_get_transition_by_label(
351  const rcl_lifecycle_state_t * state,
352  const char * label);
353 
355 
376 RCL_LIFECYCLE_PUBLIC
377 RCL_WARN_UNUSED
378 rcl_ret_t
379 rcl_lifecycle_trigger_transition_by_id(
380  rcl_lifecycle_state_machine_t * state_machine,
381  uint8_t id,
382  bool publish_notification);
383 
385 
406 RCL_LIFECYCLE_PUBLIC
407 RCL_WARN_UNUSED
408 rcl_ret_t
409 rcl_lifecycle_trigger_transition_by_label(
410  rcl_lifecycle_state_machine_t * state_machine,
411  const char * label,
412  bool publish_notification);
413 
415 
429 RCL_LIFECYCLE_PUBLIC
430 void
431 rcl_print_state_machine(const rcl_lifecycle_state_machine_t * state_machine);
432 
433 #ifdef __cplusplus
434 }
435 #endif // extern "C"
436 
437 #endif // RCL_LIFECYCLE__RCL_LIFECYCLE_H_
rcl_node_t
rcl_lifecycle_state_t
It contains the state of the lifecycle state machine.
Definition: data_types.h:30
rcl_ret_t
rmw_ret_t rcl_ret_t
rosidl_service_type_support_t
rcl_lifecycle_state_machine_t
It contains the state machine data.
Definition: data_types.h:101
rcl_lifecycle_state_machine_options_t
It contains various options to configure the rcl_lifecycle_state_machine_t instance.
Definition: data_types.h:90
rcutils_allocator_t
rcl_lifecycle_transition_t
It contains the transitions of the lifecycle state machine.
Definition: data_types.h:44
rosidl_message_type_support_t