Skip to main content

rsiot/components/cmp_linux_uart_master/
config.rs

1use std::time::Duration;
2
3use crate::{
4    components_config::{
5        master_device::DeviceTrait,
6        uart_general::{Baudrate, DataBits, FieldbusRequest, FieldbusResponse, Parity, StopBits},
7    },
8    message::MsgDataBound,
9};
10
11// ANCHOR: Config
12/// Конфигурация cmp_linux_uart_master
13#[derive(Debug)]
14pub struct Config<TMsg>
15where
16    TMsg: MsgDataBound,
17{
18    /// Название порта
19    ///
20    /// Примеры:
21    ///
22    /// ```
23    /// port: "/dev/ttyUSB0"
24    /// port: "/dev/ttyAMA0"
25    /// ```
26    pub port: &'static str,
27
28    /// Скорость сетевого обмена
29    pub baudrate: Baudrate,
30
31    /// Кол-во бит данных
32    pub data_bits: DataBits,
33
34    /// Бит четности
35    pub parity: Parity,
36
37    /// Кол-во стоповых бит
38    pub stop_bits: StopBits,
39
40    /// Время ожидания ответа
41    pub timeout: Duration,
42
43    /// Название чипа gpio в системе.
44    ///
45    /// Примеры:
46    ///
47    /// ```rust
48    /// gpio_chip: "/dev/gpiochip0"
49    /// ```
50    pub gpio_chip: &'static str,
51
52    /// Номер пина для сигнала RTS (ready to send).
53    ///
54    /// Примеры:
55    ///
56    /// ```rust
57    /// // На raspberry pi 17 пин - 11 физ. вывод на гребенке
58    /// pin_rts: Some(17),
59    ///
60    /// // Если пин RTS не нужен
61    /// pin_rts: None
62    /// ```
63    pub pin_rts: Option<u32>,
64
65    /// Массив устройств
66    pub devices: Vec<Box<dyn DeviceTrait<TMsg, FieldbusRequest, FieldbusResponse>>>,
67}
68// ANCHOR: Config
69
70impl<TMsg> Default for Config<TMsg>
71where
72    TMsg: MsgDataBound,
73{
74    fn default() -> Self {
75        Self {
76            port: "/dev/ttyAMA0",
77            baudrate: Baudrate::default(),
78            data_bits: DataBits::default(),
79            parity: Parity::default(),
80            stop_bits: StopBits::default(),
81            timeout: Duration::from_millis(100),
82            gpio_chip: "/dev/gpiochip0",
83            pin_rts: Some(17),
84            devices: vec![],
85        }
86    }
87}