Skip to content

Commit 2b69aef

Browse files
committed
IDL
1 parent 8c85590 commit 2b69aef

File tree

4 files changed

+608
-5
lines changed

4 files changed

+608
-5
lines changed

crates/utils/re_mcap/src/layers/raw.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ impl MessageParser for RawMcapMessageParser {
2626
msg: &::mcap::Message<'_>,
2727
) -> anyhow::Result<()> {
2828
re_tracing::profile_function!();
29+
2930
self.data.values().values().append_slice(&msg.data);
3031
self.data.values().append(true);
3132
self.data.append(true);

crates/utils/re_mcap/src/layers/ros2.rs

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
use std::collections::BTreeMap;
22

33
use super::MessageLayer;
4-
use crate::{
5-
parsers::MessageParser,
6-
parsers::ros2msg::{
4+
use crate::parsers::{
5+
MessageParser,
6+
ros2msg::{
77
Ros2MessageParser,
8+
idl::{MessageSchema, MessageSpec},
89
rcl_interfaces::LogMessageParser,
910
sensor_msgs::{
1011
BatteryStateMessageParser, CameraInfoMessageParser, CompressedImageMessageParser,
@@ -92,9 +93,28 @@ impl MessageLayer for McapRos2Layer {
9293
}
9394

9495
fn supports_channel(&self, channel: &mcap::Channel<'_>) -> bool {
95-
channel.schema.as_ref().is_some_and(|s| {
96+
if channel.schema.as_ref().is_some_and(|s| {
9697
s.encoding.as_str() == Self::ENCODING && self.registry.contains_key(&s.name)
97-
})
98+
}) {
99+
true
100+
} else {
101+
let schema = channel.schema.as_ref().unwrap();
102+
let schema_content = String::from_utf8_lossy(schema.data.as_ref());
103+
if let Ok(message_spec) = MessageSchema::parse(schema.name.clone(), &schema_content) {
104+
re_log::warn_once!(
105+
"Message schema {:?} is currently not supported, but parsed spec: {message_spec:#?}",
106+
schema.name
107+
);
108+
} else {
109+
re_log::warn_once!(
110+
"Message schema {:?} is currently not supported, and failed to parse spec",
111+
schema.name
112+
);
113+
re_log::warn_once!("Schema content:\n{}", schema_content);
114+
}
115+
116+
false
117+
}
98118
}
99119

100120
fn message_parser(
@@ -114,6 +134,7 @@ impl MessageLayer for McapRos2Layer {
114134
"Message schema {:?} is currently not supported",
115135
schema.name
116136
);
137+
117138
None
118139
}
119140
}

0 commit comments

Comments
 (0)