dbc_rs/receivers/builder/mod.rs
1use super::Receivers;
2use std::string::String;
3
4/// Builder for creating `Receivers` programmatically.
5///
6/// This builder allows you to construct receiver configurations for signals
7/// when building DBC files programmatically.
8///
9/// Per DBC specification Section 9.5, valid receivers are:
10/// - Specific node names (comma-separated in DBC output)
11/// - `Vector__XXX` for no specific receiver (represented as `Receivers::None`)
12///
13/// # Examples
14///
15/// ```rust,no_run
16/// use dbc_rs::{ReceiversBuilder, SignalBuilder, ByteOrder};
17///
18/// // Specific nodes
19/// let specific = ReceiversBuilder::new()
20/// .add_node("TCM")
21/// .add_node("BCM")
22/// .build()?;
23///
24/// // No receivers (serializes as Vector__XXX)
25/// let none = ReceiversBuilder::new().none().build()?;
26///
27/// // Use with signal builder
28/// let signal = SignalBuilder::new()
29/// .name("RPM")
30/// .start_bit(0)
31/// .length(16)
32/// .byte_order(ByteOrder::BigEndian)
33/// .unsigned(true)
34/// .factor(0.25)
35/// .offset(0.0)
36/// .min(0.0)
37/// .max(8000.0)
38/// .receivers(ReceiversBuilder::new().add_node("TCM").add_node("BCM"))
39/// .build()?;
40/// # Ok::<(), dbc_rs::Error>(())
41/// ```
42///
43/// # Feature Requirements
44///
45/// This builder requires the `std` feature to be enabled.
46#[derive(Debug, Clone)]
47pub struct ReceiversBuilder {
48 pub(crate) nodes: Vec<String>,
49}
50
51mod build;
52mod impls;