dbc_rs/value_descriptions/mod.rs
1mod impls;
2
3#[cfg(feature = "std")]
4mod builder;
5
6use crate::compat::ValueDescEntries;
7#[cfg(feature = "std")]
8pub use builder::ValueDescriptionsBuilder;
9
10/// Value descriptions for a signal.
11///
12/// Maps numeric signal values to human-readable text descriptions.
13/// For example, a gear position signal might map:
14/// - 0 -> "Park"
15/// - 1 -> "Reverse"
16/// - 2 -> "Neutral"
17/// - 3 -> "Drive"
18///
19/// # Examples
20///
21/// ```rust,no_run
22/// use dbc_rs::Dbc;
23///
24/// let dbc_content = r#"VERSION "1.0"
25///
26/// BU_: ECM
27///
28/// BO_ 100 EngineData : 8 ECM
29/// SG_ GearPosition : 0|8@1+ (1,0) [0|5] "" *
30///
31/// VAL_ 100 GearPosition 0 "Park" 1 "Reverse" 2 "Neutral" 3 "Drive" ;
32/// "#;
33///
34/// let dbc = Dbc::parse(dbc_content)?;
35/// let message = dbc.messages().iter().find(|m| m.id() == 100).unwrap();
36/// let signal = message.signals().find("GearPosition").unwrap();
37///
38/// if let Some(value_descriptions) = dbc.value_descriptions_for_signal(message.id(), signal.name()) {
39/// if let Some(description) = value_descriptions.get(0) {
40/// println!("Value 0 means: {}", description);
41/// }
42/// }
43/// # Ok::<(), dbc_rs::Error>(())
44/// ```
45#[derive(Debug, Clone, PartialEq, Eq, Hash)]
46pub struct ValueDescriptions {
47 entries: ValueDescEntries,
48}