busmust_sys/
bitrate_builder.rs

1use BMBitrate;
2
3impl BMBitrate {
4    pub fn builder() -> BMBitrateBuilder {
5        BMBitrateBuilder::default()
6    }
7}
8
9/// Builder for [BMBitrate] structure.
10#[derive(Default)]
11pub struct BMBitrateBuilder {
12    /// Nominal bitrate in kbps, default as 500, note this is the only valid bitrate in CAN CLASSIC mode.
13    n_bitrate: u16,
14    /// Data bitrate in kbps, default as 500, note this is ignored in CAN CLASSIC mode.
15    d_bitrate: u16,
16    /// Nominal sample position (percentage, 0-100, default as 75
17    n_sample_pos: u8,
18    /// Data sample position (percentage, 0-100, default as 75
19    d_sample_pos: u8
20}
21
22impl BMBitrateBuilder {
23    pub fn new() -> BMBitrateBuilder {
24        BMBitrateBuilder {
25            n_bitrate: 500,
26            d_bitrate: 2000,
27            n_sample_pos: 75,
28            d_sample_pos: 75
29        }
30    }
31
32    pub fn bitrate(mut self, n_bitrate: u16) -> BMBitrateBuilder {
33        self.n_bitrate = n_bitrate;
34        self
35    }
36
37    pub fn data_bitrate(mut self, d_bitrate: u16) -> BMBitrateBuilder {
38        self.d_bitrate = d_bitrate;
39        self
40    }
41
42    pub fn sample_pos(mut self, n_sample_pos: u8) -> BMBitrateBuilder {
43        self.n_sample_pos = n_sample_pos;
44        self
45    }
46
47    pub fn data_sample_pos(mut self, d_sample_pos: u8) -> BMBitrateBuilder {
48        self.d_sample_pos = d_sample_pos;
49        self
50    }
51
52    pub fn build(self) -> BMBitrate {
53        BMBitrate {
54            n_bitrate: self.n_bitrate,
55            d_bitrate: self.d_bitrate,
56            n_sample_pos: self.n_sample_pos,
57            d_sample_pos: self.d_sample_pos,
58            clock_freq: 0,
59            reserved: 0,
60            n_btr0: 0,
61            n_btr1: 0,
62            d_btr0: 0,
63            d_btr1: 0
64        }
65    }
66}