dbc_rs/signal/builder/mod.rs
1use crate::{ByteOrder, ReceiversBuilder};
2
3/// Builder for creating CAN signals programmatically.
4///
5/// Use this builder to construct [`Signal`](crate::Signal) instances with validated
6/// properties. Required fields (name, start_bit, length) must be set before calling
7/// [`build()`](Self::build).
8///
9/// # Examples
10///
11/// ```rust,no_run
12/// use dbc_rs::{SignalBuilder, ByteOrder};
13///
14/// let signal = SignalBuilder::new()
15/// .name("EngineRPM")
16/// .start_bit(0)
17/// .length(16)
18/// .byte_order(ByteOrder::LittleEndian)
19/// .unsigned(true)
20/// .factor(0.25)
21/// .offset(0.0)
22/// .min(0.0)
23/// .max(8000.0)
24/// .unit("rpm")
25/// .build()?;
26/// # Ok::<(), dbc_rs::Error>(())
27/// ```
28#[derive(Debug, Clone)]
29pub struct SignalBuilder {
30 name: Option<String>,
31 start_bit: Option<u16>,
32 length: Option<u16>,
33 byte_order: Option<ByteOrder>,
34 unsigned: Option<bool>,
35 factor: Option<f64>,
36 offset: Option<f64>,
37 min: Option<f64>,
38 max: Option<f64>,
39 unit: Option<String>,
40 receivers: ReceiversBuilder,
41 comment: Option<String>,
42}
43
44mod build;
45mod impls;