rustdds/ros2/
builtin_topics.rs1use crate::{
2 dds::qos::{
3 policy::{
4 Deadline, DestinationOrder, Durability, History, LatencyBudget, Lifespan, Liveliness,
5 Ownership, Reliability,
6 },
7 QosPolicies,
8 },
9 structure::duration::Duration,
10};
11
12pub struct ROSDiscoveryTopic {}
13
14impl ROSDiscoveryTopic {
15 const QOS: QosPolicies = QosPolicies {
16 durability: Some(Durability::TransientLocal),
17 presentation: None,
18 deadline: Some(Deadline(Duration::INFINITE)),
19 latency_budget: Some(LatencyBudget {
20 duration: Duration::ZERO,
21 }),
22 ownership: Some(Ownership::Shared),
23 liveliness: Some(Liveliness::Automatic {
24 lease_duration: Duration::INFINITE,
25 }),
26 time_based_filter: None,
27 reliability: Some(Reliability::Reliable {
28 max_blocking_time: Duration::ZERO,
29 }),
30 destination_order: Some(DestinationOrder::ByReceptionTimestamp),
31 history: Some(History::KeepLast { depth: 1 }),
32 resource_limits: None,
33 lifespan: Some(Lifespan {
34 duration: Duration::INFINITE,
35 }),
36 #[cfg(feature = "security")]
37 property: None,
38 };
39
40 const TOPIC_NAME: &'static str = "ros_discovery_info";
41 const TYPE_NAME: &'static str = "rmw_dds_common::msg::dds_::ParticipantEntitiesInfo_";
42
43 pub fn topic_name() -> &'static str {
44 Self::TOPIC_NAME
45 }
46
47 pub fn type_name() -> &'static str {
48 Self::TYPE_NAME
49 }
50
51 pub const fn qos() -> QosPolicies {
52 Self::QOS
53 }
54}
55
56pub struct ParameterEventsTopic {}
57
58impl ParameterEventsTopic {
59 const QOS: QosPolicies = QosPolicies {
60 durability: Some(Durability::TransientLocal),
61 presentation: None,
62 deadline: None,
63 latency_budget: None,
64 ownership: None,
65 liveliness: None,
66 time_based_filter: None,
67 reliability: Some(Reliability::Reliable {
68 max_blocking_time: Duration::ZERO,
69 }),
70 destination_order: None,
71 history: Some(History::KeepLast { depth: 1 }),
72 resource_limits: None,
73 lifespan: None,
74 #[cfg(feature = "security")]
75 property: None,
76 };
77
78 const TOPIC_NAME: &'static str = "rt/parameter_events";
79 const TYPE_NAME: &'static str = "rcl_interfaces::msg::dds_::ParameterEvent_";
80
81 pub fn topic_name() -> &'static str {
82 Self::TOPIC_NAME
83 }
84
85 pub fn type_name() -> &'static str {
86 Self::TYPE_NAME
87 }
88
89 pub fn qos() -> QosPolicies {
90 Self::QOS
91 }
92}
93
94pub struct RosOutTopic {}
95
96impl RosOutTopic {
97 const QOS: QosPolicies = QosPolicies {
98 durability: Some(Durability::TransientLocal),
99 presentation: None,
100 deadline: Some(Deadline(Duration::INFINITE)),
101 latency_budget: Some(LatencyBudget {
102 duration: Duration::ZERO,
103 }),
104 ownership: Some(Ownership::Shared),
105 liveliness: Some(Liveliness::Automatic {
106 lease_duration: Duration::INFINITE,
107 }),
108 time_based_filter: None,
109 reliability: Some(Reliability::Reliable {
110 max_blocking_time: Duration::ZERO,
111 }),
112 destination_order: Some(DestinationOrder::ByReceptionTimestamp),
113 history: Some(History::KeepLast { depth: 1 }),
114 resource_limits: None,
115 lifespan: Some(Lifespan {
116 duration: Duration::from_secs(10),
117 }),
118 #[cfg(feature = "security")]
119 property: None,
120 };
121
122 const TOPIC_NAME: &'static str = "rt/rosout";
123 const TYPE_NAME: &'static str = "rcl_interfaces::msg::dds_::Log_";
124
125 pub fn topic_name() -> &'static str {
126 Self::TOPIC_NAME
127 }
128
129 pub fn type_name() -> &'static str {
130 Self::TYPE_NAME
131 }
132
133 pub fn qos() -> QosPolicies {
134 Self::QOS
135 }
136}