rcl_action  master
C API providing common functionality for ROS actions.
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 
56 
58 
66 
68 
170 rcl_ret_t
172  rcl_action_server_t * action_server,
173  rcl_node_t * node,
174  rcl_clock_t * clock,
175  const rosidl_action_type_support_t * type_support,
176  const char * action_name,
177  const rcl_action_server_options_t * options);
178 
180 
208 rcl_ret_t
209 rcl_action_server_fini(rcl_action_server_t * action_server, rcl_node_t * node);
210 
212 
227 
229 
272 rcl_ret_t
274  const rcl_action_server_t * action_server,
275  rmw_request_id_t * request_header,
276  void * ros_goal_request);
277 
279 
320 rcl_ret_t
322  const rcl_action_server_t * action_server,
323  rmw_request_id_t * response_header,
324  void * ros_goal_response);
325 
327 
386  rcl_action_server_t * action_server,
387  const rcl_action_goal_info_t * goal_info);
388 
390 
432 rcl_ret_t
434  const rcl_action_server_t * action_server,
435  void * ros_feedback);
436 
438 
459 rcl_ret_t
461  const rcl_action_server_t * action_server,
462  rcl_action_goal_status_array_t * status_message);
463 
465 
489 rcl_ret_t
491  const rcl_action_server_t * action_server,
492  const void * status_message);
493 
495 
528 rcl_ret_t
530  const rcl_action_server_t * action_server,
531  rmw_request_id_t * request_header,
532  void * ros_result_request);
533 
535 
564 rcl_ret_t
566  const rcl_action_server_t * action_server,
567  rmw_request_id_t * response_header,
568  void * ros_result_response);
569 
571 
616 rcl_ret_t
618  const rcl_action_server_t * action_server,
619  rcl_action_goal_info_t * expired_goals,
620  size_t expired_goals_capacity,
621  size_t * num_expired);
622 
624 
641 rcl_ret_t
643  const rcl_action_server_t * action_server);
644 
646 
682 rcl_ret_t
684  const rcl_action_server_t * action_server,
685  rmw_request_id_t * request_header,
686  void * ros_cancel_request);
687 
689 
727 rcl_ret_t
729  const rcl_action_server_t * action_server,
730  const rcl_action_cancel_request_t * cancel_request,
731  rcl_action_cancel_response_t * cancel_response);
732 
734 
755 rcl_ret_t
757  const rcl_action_server_t * action_server,
758  rmw_request_id_t * response_header,
759  void * ros_cancel_response);
760 
762 
786 const char *
788 
790 
816 
818 
850 rcl_ret_t
852  const rcl_action_server_t * action_server,
853  rcl_action_goal_handle_t *** goal_handles,
854  size_t * num_goals);
855 
857 
876 bool
878  const rcl_action_server_t * action_server,
879  const rcl_action_goal_info_t * goal_info);
880 
882 
902 bool
903 rcl_action_server_is_valid(const rcl_action_server_t * action_server);
904 
906 
926 bool
928 
929 #ifdef __cplusplus
930 }
931 #endif
932 
933 #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
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:54
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_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.