dbc_rs/extended_multiplexing/builder/mod.rs
1/// Builder for creating `ExtendedMultiplexing` programmatically.
2///
3/// This builder allows you to construct extended multiplexing entries when building DBC files
4/// programmatically. Extended multiplexing (SG_MUL_VAL_) entries define which multiplexer
5/// switch values activate specific multiplexed signals.
6///
7/// # Examples
8///
9/// ```rust,no_run
10/// use dbc_rs::ExtendedMultiplexingBuilder;
11///
12/// // Build an extended multiplexing entry
13/// let ext_mux = ExtendedMultiplexingBuilder::new()
14/// .message_id(500)
15/// .signal_name("Signal_A")
16/// .multiplexer_switch("Mux1")
17/// .add_value_range(0, 5)
18/// .add_value_range(10, 15)
19/// .build()?;
20///
21/// assert_eq!(ext_mux.message_id(), 500);
22/// assert_eq!(ext_mux.signal_name(), "Signal_A");
23/// assert_eq!(ext_mux.multiplexer_switch(), "Mux1");
24/// # Ok::<(), dbc_rs::Error>(())
25/// ```
26///
27/// # Feature Requirements
28///
29/// This builder requires the `std` feature to be enabled.
30#[derive(Debug, Clone)]
31pub struct ExtendedMultiplexingBuilder {
32 pub(crate) message_id: Option<u32>,
33 pub(crate) signal_name: Option<String>,
34 pub(crate) multiplexer_switch: Option<String>,
35 pub(crate) value_ranges: std::vec::Vec<(u64, u64)>,
36}
37
38mod build;
39mod impls;