dbc_rs/dbc/
mod.rs

1use crate::{ExtendedMultiplexing, MAX_EXTENDED_MULTIPLEXING, Nodes, Version, compat::Vec};
2
3// Module declarations
4mod messages;
5#[cfg(feature = "std")]
6mod value_descriptions_map;
7
8// Include modules for additional functionality
9#[cfg(feature = "std")]
10mod builder;
11mod core;
12mod decode;
13mod parse;
14#[cfg(feature = "std")]
15mod serialize;
16mod validate;
17
18// Re-exports
19use messages::Messages;
20
21#[cfg(feature = "std")]
22use value_descriptions_map::ValueDescriptionsMap;
23
24#[cfg(feature = "std")]
25pub use builder::DbcBuilder;
26
27use validate::Validate;
28
29/// Represents a complete DBC (CAN database) file.
30///
31/// A `Dbc` contains:
32/// - An optional version string
33/// - A list of nodes (ECUs)
34/// - A collection of messages with their signals
35///
36/// # Examples
37///
38/// ```rust,no_run
39/// use dbc_rs::Dbc;
40///
41/// let dbc_content = r#"VERSION "1.0"
42///
43/// BU_: ECM TCM
44///
45/// BO_ 256 EngineData : 8 ECM
46///  SG_ RPM : 0|16@0+ (0.25,0) [0|8000] "rpm" TCM
47/// "#;
48///
49/// let dbc = Dbc::parse(dbc_content)?;
50/// println!("Parsed {} messages", dbc.messages().len());
51/// # Ok::<(), dbc_rs::Error>(())
52/// ```
53#[derive(Debug)]
54pub struct Dbc {
55    version: Option<Version>,
56    nodes: Nodes,
57    messages: Messages,
58    #[cfg(feature = "std")]
59    value_descriptions: ValueDescriptionsMap,
60    extended_multiplexing: Vec<ExtendedMultiplexing, { MAX_EXTENDED_MULTIPLEXING }>,
61}