1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
use std::os::raw::{c_char, c_void};
use crate::*;
#[repr(C)]
#[derive(Debug)]
struct rcl_subscription_impl_t {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug)]
pub struct rcl_subscription_t {
impl_: *mut rcl_subscription_impl_t,
}
#[repr(C)]
#[derive(Debug)]
pub struct rcl_subscription_options_t {
pub qos: rmw_qos_profile_t,
pub allocator: rcl_allocator_t,
pub rmw_subscription_options: rmw_subscription_options_t,
}
extern "C" {
pub fn rcl_get_zero_initialized_subscription() -> rcl_subscription_t;
pub fn rcl_subscription_init(
subscription: *mut rcl_subscription_t,
node: *const rcl_node_t,
type_support: *const rosidl_message_type_support_t,
topic_name: *const c_char,
options: *const rcl_subscription_options_t,
) -> rcl_ret_t;
pub fn rcl_subscription_fini(
subscription: *mut rcl_subscription_t,
node: *mut rcl_node_t,
) -> rcl_ret_t;
pub fn rcl_subscription_get_default_options() -> rcl_subscription_options_t;
pub fn rcl_take(
subscription: *const rcl_subscription_t,
ros_message: *mut c_void,
message_info: *mut rmw_message_info_t,
allocation: *mut rmw_subscription_allocation_t,
) -> rcl_ret_t;
pub fn rcl_take_serialized_message(
subscription: *const rcl_subscription_t,
serialized_message: *mut rcl_serialized_message_t,
message_info: *mut rmw_message_info_t,
allocation: *mut rmw_subscription_allocation_t,
) -> rcl_ret_t;
pub fn rcl_take_loaned_message(
subscription: *const rcl_subscription_t,
loaned_message: *mut *mut c_void,
message_info: *mut rmw_message_info_t,
allocation: *mut rmw_subscription_allocation_t,
) -> rcl_ret_t;
pub fn rcl_return_loaned_message_from_subscription(
subscription: *const rcl_subscription_t,
loaned_message: *mut c_void,
) -> rcl_ret_t;
pub fn rcl_subscription_get_topic_name(
subscription: *const rcl_subscription_t,
) -> *const c_char;
pub fn rcl_subscription_get_options(
subscription: *const rcl_subscription_t,
) -> *const rcl_subscription_options_t;
pub fn rcl_subscription_is_valid(subscription: *const rcl_subscription_t) -> bool;
pub fn rcl_subscription_get_publisher_count(
subscription: *const rcl_subscription_t,
publisher_count: *mut usize,
) -> rmw_ret_t;
pub fn rcl_subscription_get_actual_qos(
subscription: *const rcl_subscription_t,
) -> *const rmw_qos_profile_t;
pub fn rcl_subscription_can_loan_messages(subscription: *const rcl_subscription_t) -> bool;
}