rcl_action  master
C API providing common functionality for ROS actions.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
action_server.h
Go to the documentation of this file.
1 // Copyright 2018 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 
15 #ifndef RCL_ACTION__ACTION_SERVER_H_
16 #define RCL_ACTION__ACTION_SERVER_H_
17 
18 #ifdef __cplusplus
19 extern "C"
20 {
21 #endif
22 
23 #include "rcl_action/goal_handle.h"
24 #include "rcl_action/types.h"
26 #include "rcl/macros.h"
27 #include "rcl/node.h"
28 #include "rcl/time.h"
29 
30 #include "rosidl_generator_c/action_type_support_struct.h"
31 
33 struct rcl_action_server_impl_t;
34 
36 typedef struct rcl_action_server_t
37 {
38  struct rcl_action_server_impl_t * impl;
40 
43 {
51 
58 
60 
68 
70 
172 rcl_ret_t
174  rcl_action_server_t * action_server,
175  rcl_node_t * node,
176  rcl_clock_t * clock,
177  const rosidl_action_type_support_t * type_support,
178  const char * action_name,
179  const rcl_action_server_options_t * options);
180 
182 
210 rcl_ret_t
211 rcl_action_server_fini(rcl_action_server_t * action_server, rcl_node_t * node);
212 
214 
229 
231 
274 rcl_ret_t
276  const rcl_action_server_t * action_server,
277  rmw_request_id_t * request_header,
278  void * ros_goal_request);
279 
281 
322 rcl_ret_t
324  const rcl_action_server_t * action_server,
325  rmw_request_id_t * response_header,
326  void * ros_goal_response);
327 
329 
388  rcl_action_server_t * action_server,
389  const rcl_action_goal_info_t * goal_info);
390 
392 
434 rcl_ret_t
436  const rcl_action_server_t * action_server,
437  void * ros_feedback);
438 
440 
461 rcl_ret_t
463  const rcl_action_server_t * action_server,
464  rcl_action_goal_status_array_t * status_message);
465 
467 
491 rcl_ret_t
493  const rcl_action_server_t * action_server,
494  const void * status_message);
495 
497 
530 rcl_ret_t
532  const rcl_action_server_t * action_server,
533  rmw_request_id_t * request_header,
534  void * ros_result_request);
535 
537 
566 rcl_ret_t
568  const rcl_action_server_t * action_server,
569  rmw_request_id_t * response_header,
570  void * ros_result_response);
571 
573 
619 rcl_ret_t
621  const rcl_action_server_t * action_server,
622  rcl_action_goal_info_t * expired_goals,
623  size_t expired_goals_capacity,
624  size_t * num_expired);
625 
627 
644 rcl_ret_t
646  const rcl_action_server_t * action_server);
647 
649 
685 rcl_ret_t
687  const rcl_action_server_t * action_server,
688  rmw_request_id_t * request_header,
689  void * ros_cancel_request);
690 
692 
730 rcl_ret_t
732  const rcl_action_server_t * action_server,
733  const rcl_action_cancel_request_t * cancel_request,
734  rcl_action_cancel_response_t * cancel_response);
735 
737 
758 rcl_ret_t
760  const rcl_action_server_t * action_server,
761  rmw_request_id_t * response_header,
762  void * ros_cancel_response);
763 
765 
789 const char *
791 
793 
819 
821 
853 rcl_ret_t
855  const rcl_action_server_t * action_server,
856  rcl_action_goal_handle_t *** goal_handles,
857  size_t * num_goals);
858 
860 
879 bool
881  const rcl_action_server_t * action_server,
882  const rcl_action_goal_info_t * goal_info);
883 
885 
905 bool
906 rcl_action_server_is_valid(const rcl_action_server_t * action_server);
907 
909 
929 bool
931 
932 #ifdef __cplusplus
933 }
934 #endif
935 
936 #endif // RCL_ACTION__ACTION_SERVER_H_
RCL_ACTION_PUBLIC bool rcl_action_server_is_valid_except_context(const rcl_action_server_t *action_server)
Check if an action server is valid without erroring if the library is shutting down.
#define RCL_ACTION_PUBLIC
Definition: visibility_control.h:50
rcl_clock_type_t clock_type
Clock type used for checking result timeouts.
Definition: action_server.h:54
rmw_qos_profile_t feedback_topic_qos
Definition: action_server.h:48
struct rcl_action_server_t rcl_action_server_t
Structure which encapsulates a ROS Action Server.
rmw_ret_t rcl_ret_t
Structure which encapsulates a ROS Action Server.
Definition: action_server.h:36
rcl_duration_t result_timeout
Goal handles that have results longer than this time are deallocated.
Definition: action_server.h:56
RCL_ACTION_PUBLIC const char * rcl_action_server_get_action_name(const rcl_action_server_t *action_server)
Get the action name for an action server.
RCL_ACTION_PUBLIC rcl_action_server_options_t rcl_action_server_get_default_options(void)
Return the default action server options in a rcl_action_server_options_t.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_take_result_request(const rcl_action_server_t *action_server, rmw_request_id_t *request_header, void *ros_result_request)
Take a pending result request using an action server.
rcl_clock_type_t
RCL_ACTION_PUBLIC bool rcl_action_server_goal_exists(const rcl_action_server_t *action_server, const rcl_action_goal_info_t *goal_info)
Check if a goal is already being tracked by an action server.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_get_goal_status_array(const rcl_action_server_t *action_server, rcl_action_goal_status_array_t *status_message)
Get a status array message for accepted goals associated with an action server.
RCL_ACTION_PUBLIC bool rcl_action_server_is_valid(const rcl_action_server_t *action_server)
Check if an action server is valid.
rcl_allocator_t allocator
Custom allocator for the action server, used for incidental allocations.
Definition: action_server.h:52
struct rcl_action_server_options_t rcl_action_server_options_t
Options available for a rcl_action_server_t.
rmw_qos_profile_t cancel_service_qos
Definition: action_server.h:46
Options available for a rcl_action_server_t.
Definition: action_server.h:42
#define RCL_WARN_UNUSED
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_take_goal_request(const rcl_action_server_t *action_server, rmw_request_id_t *request_header, void *ros_goal_request)
Take a pending ROS goal using an action server.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_server_get_goal_handles(const rcl_action_server_t *action_server, rcl_action_goal_handle_t ***goal_handles, size_t *num_goals)
Get the goal handles for all goals an action server is tracking.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_process_cancel_request(const rcl_action_server_t *action_server, const rcl_action_cancel_request_t *cancel_request, rcl_action_cancel_response_t *cancel_response)
Process a cancel request using an action server.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_take_cancel_request(const rcl_action_server_t *action_server, rmw_request_id_t *request_header, void *ros_cancel_request)
Take a pending cancel request using an action server.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_server_init(rcl_action_server_t *action_server, rcl_node_t *node, rcl_clock_t *clock, const rosidl_action_type_support_t *type_support, const char *action_name, const rcl_action_server_options_t *options)
Initialize an action server.
RCL_ACTION_PUBLIC rcl_action_goal_handle_t * rcl_action_accept_new_goal(rcl_action_server_t *action_server, const rcl_action_goal_info_t *goal_info)
Accept a new goal using an action server.
rmw_qos_profile_t goal_service_qos
Middleware quality of service settings for the action server.
Definition: action_server.h:45
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_send_goal_response(const rcl_action_server_t *action_server, rmw_request_id_t *response_header, void *ros_goal_response)
Send a response for a goal request to an action client using an action server.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_server_fini(rcl_action_server_t *action_server, rcl_node_t *node)
Finalize an action server.
RCL_ACTION_PUBLIC rcl_action_server_t rcl_action_get_zero_initialized_server(void)
Return a rcl_action_server_t struct with members set to NULL.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_send_result_response(const rcl_action_server_t *action_server, rmw_request_id_t *response_header, void *ros_result_response)
Send a result response using an action server.
action_msgs__msg__GoalInfo rcl_action_goal_info_t
Definition: types.h:66
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_publish_feedback(const rcl_action_server_t *action_server, void *ros_feedback)
Publish a ROS feedback message for an active goal using an action server.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_publish_status(const rcl_action_server_t *action_server, const void *status_message)
Publish a status array message for accepted goals associated with an action server.
Goal handle for an action.
Definition: goal_handle.h:33
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_notify_goal_done(const rcl_action_server_t *action_server)
Notifies action server that a goal handle reached a terminal state.
action_msgs__srv__CancelGoal_Request rcl_action_cancel_request_t
Definition: types.h:74
rmw_qos_profile_t result_service_qos
Definition: action_server.h:47
Definition: types.h:68
struct rcl_action_server_impl_t * impl
Definition: action_server.h:38
RCL_ACTION_PUBLIC const rcl_action_server_options_t * rcl_action_server_get_options(const rcl_action_server_t *action_server)
Return the rcl_action_server_options_t for an action server.
Definition: types.h:75
rmw_qos_profile_t status_topic_qos
Definition: action_server.h:49
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_send_cancel_response(const rcl_action_server_t *action_server, rmw_request_id_t *response_header, void *ros_cancel_response)
Send a cancel response using an action server.
RCL_ACTION_PUBLIC rcl_ret_t rcl_action_expire_goals(const rcl_action_server_t *action_server, rcl_action_goal_info_t *expired_goals, size_t expired_goals_capacity, size_t *num_expired)
Expires goals associated with an action server.