rcl
beta1
C API providing common ROS client library functionality.
|
#include <rmw/rmw.h>
#include <rmw/types.h>
#include "rosidl_generator_c/service_type_support.h"
#include "rcl/macros.h"
#include "rcl/client.h"
#include "rcl/node.h"
#include "rcl/visibility_control.h"
Go to the source code of this file.
Typedefs | |
typedef rmw_topic_names_and_types_t | rcl_topic_names_and_types_t |
Functions | |
rcl_topic_names_and_types_t | rcl_get_zero_initialized_topic_names_and_types (void) |
Return a rcl_topic_names_and_types_t struct with members initialized to NULL . More... | |
rcl_ret_t | rcl_get_topic_names_and_types (const rcl_node_t *node, rcl_topic_names_and_types_t *topic_names_and_types) |
Return a list of topic names and their types. More... | |
rcl_ret_t | rcl_destroy_topic_names_and_types (rcl_topic_names_and_types_t *topic_names_and_types) |
Destroy a struct which was previously given to rcl_get_topic_names_and_types. More... | |
rcl_ret_t | rcl_count_publishers (const rcl_node_t *node, const char *topic_name, size_t *count) |
Return the number of publishers on a given topic. More... | |
rcl_ret_t | rcl_count_subscribers (const rcl_node_t *node, const char *topic_name, size_t *count) |
Return the number of subscriptions on a given topic. More... | |
rcl_ret_t | rcl_service_server_is_available (const rcl_node_t *node, const rcl_client_t *client, bool *is_available) |
Check if a service server is available for the given service client. More... | |
rcl_topic_names_and_types_t rcl_get_zero_initialized_topic_names_and_types | ( | void | ) |
Return a rcl_topic_names_and_types_t struct with members initialized to NULL
.
rcl_ret_t rcl_get_topic_names_and_types | ( | const rcl_node_t * | node, |
rcl_topic_names_and_types_t * | topic_names_and_types | ||
) |
Return a list of topic names and their types.
This function returns a list of topic names in the ROS graph and their types.
The node parameter must not be NULL
, and must point to a valid node.
The topic_names_and_types parameter must be allocated and zero initialized. The topic_names_and_types is the output for this function, and contains allocated memory. Therefore, it should be passed to rcl_destroy_topic_names_and_types() when it is no longer needed. Failing to do so will result in leaked memory.
Attribute | Adherence |
---|---|
Allocates Memory | Yes |
Thread-Safe | No |
Uses Atomics | No |
Lock-Free | Maybe [1] |
[1] implementation may need to protect the data structure with a lock
[in] | node | the handle to the node being used to query the ROS graph |
[out] | topic_names_and_types | list of topic names and their types |
RCL_RET_OK
if the query was successful, or RCL_RET_NODE_INVALID
if the node is invalid, or RCL_RET_INVALID_ARGUMENT
if any arguments are invalid, or RCL_RET_ERROR
if an unspecified error occurs. rcl_ret_t rcl_destroy_topic_names_and_types | ( | rcl_topic_names_and_types_t * | topic_names_and_types | ) |
Destroy a struct which was previously given to rcl_get_topic_names_and_types.
The topic_names_and_types parameter must not be NULL
, and must point to an already allocated rcl_topic_names_and_types_t struct that was previously passed to a successful rcl_get_topic_names_and_types() call.
Attribute | Adherence |
---|---|
Allocates Memory | Yes |
Thread-Safe | No |
Uses Atomics | No |
Lock-Free | Yes |
[in,out] | topic_names_and_types | struct to be destroyed |
RCL_RET_OK
if successful, or RCL_RET_INVALID_ARGUMENT
if any arguments are invalid, or RCL_RET_ERROR
if an unspecified error occurs. rcl_ret_t rcl_count_publishers | ( | const rcl_node_t * | node, |
const char * | topic_name, | ||
size_t * | count | ||
) |
Return the number of publishers on a given topic.
This function returns the number of publishers on a given topic.
The node parameter must not be NULL
, and must point to a valid node.
The topic_name parameter must not be NULL
, and must not be an empty string. It should also follow the topic name rules.
The count parameter must not be NULL
, and must point to a valid bool. The count parameter is the output for this function and will be set.
Attribute | Adherence |
---|---|
Allocates Memory | No |
Thread-Safe | No |
Uses Atomics | No |
Lock-Free | Maybe [1] |
[1] implementation may need to protect the data structure with a lock
[in] | node | the handle to the node being used to query the ROS graph |
[in] | topic_name | the name of the topic in question |
[out] | count | number of publishers on the given topic |
RCL_RET_OK
if the query was successful, or RCL_RET_NODE_INVALID
if the node is invalid, or RCL_RET_INVALID_ARGUMENT
if any arguments are invalid, or RCL_RET_ERROR
if an unspecified error occurs. rcl_ret_t rcl_count_subscribers | ( | const rcl_node_t * | node, |
const char * | topic_name, | ||
size_t * | count | ||
) |
Return the number of subscriptions on a given topic.
This function returns the number of subscriptions on a given topic.
The node parameter must not be NULL
, and must point to a valid node.
The topic_name parameter must not be NULL
, and must not be an empty string. It should also follow the topic name rules.
The count parameter must not be NULL
, and must point to a valid bool. The count parameter is the output for this function and will be set.
Attribute | Adherence |
---|---|
Allocates Memory | No |
Thread-Safe | No |
Uses Atomics | No |
Lock-Free | Maybe [1] |
[1] implementation may need to protect the data structure with a lock
[in] | node | the handle to the node being used to query the ROS graph |
[in] | topic_name | the name of the topic in question |
[out] | count | number of subscriptions on the given topic |
RCL_RET_OK
if the query was successful, or RCL_RET_NODE_INVALID
if the node is invalid, or RCL_RET_INVALID_ARGUMENT
if any arguments are invalid, or RCL_RET_ERROR
if an unspecified error occurs. rcl_ret_t rcl_service_server_is_available | ( | const rcl_node_t * | node, |
const rcl_client_t * | client, | ||
bool * | is_available | ||
) |
Check if a service server is available for the given service client.
This function will return true for is_available if there is a service server available for the given client.
The node parameter must not be NULL
, and must point to a valid node.
The client parameter must not be NULL
, and must point to a valid client.
The given client and node must match, i.e. the client must have been created using the given node.
The is_available parameter must not be NULL
, and must point a bool variable. The result of the check will be stored in the is_available parameter.
Attribute | Adherence |
---|---|
Allocates Memory | Yes |
Thread-Safe | No |
Uses Atomics | No |
Lock-Free | Maybe [1] |
[1] implementation may need to protect the data structure with a lock
[in] | node | the handle to the node being used to query the ROS graph |
[in] | client | the handle to the service client being queried |
[out] | is_available | set to true if there is a service server available, else false |
RCL_RET_OK
if the check was made successfully (regardless of the service readiness), or RCL_RET_NODE_INVALID
if the node is invalid, or RCL_RET_INVALID_ARGUMENT
if any arguments are invalid, or RCL_RET_ERROR
if an unspecified error occurs.