rsiot/components/cmp_linux_spi_master/
config.rs1use linux_embedded_hal::spidev::SpiModeFlags;
2
3use crate::{
4 components_config::{
5 master_device::DeviceTrait,
6 spi_master::{self, ConfigDeviceSpiMode},
7 },
8 message::MsgDataBound,
9};
10
11pub struct Config<TMsg>
14where
15 TMsg: MsgDataBound,
16{
17 pub devices_comm_settings: Vec<ConfigDevicesCommSettings>,
21
22 pub devices:
24 Vec<Box<dyn DeviceTrait<TMsg, spi_master::FieldbusRequest, spi_master::FieldbusResponse>>>,
25}
26pub struct ConfigDevicesCommSettings {
31 pub linux_device: LinuxDevice,
33
34 pub baudrate: u32,
36
37 pub spi_mode: ConfigDeviceSpiMode,
39}
40pub enum LinuxDevice {
45 Spi {
47 dev_spi: String,
49 },
50
51 SpiWithCs {
53 dev_spi: String,
55 dev_gpio: String,
57 gpio_line: u8,
59 },
60}
61impl From<ConfigDeviceSpiMode> for SpiModeFlags {
64 fn from(value: ConfigDeviceSpiMode) -> Self {
65 match value {
66 ConfigDeviceSpiMode::Mode0 => SpiModeFlags::SPI_MODE_0,
67 ConfigDeviceSpiMode::Mode1 => SpiModeFlags::SPI_MODE_1,
68 ConfigDeviceSpiMode::Mode2 => SpiModeFlags::SPI_MODE_2,
69 ConfigDeviceSpiMode::Mode3 => SpiModeFlags::SPI_MODE_3,
70 }
71 }
72}