rsiot/components/cmp_esp_spi_master/
config.rsuse esp_idf_svc::hal::gpio::AnyIOPin;
use esp_idf_svc::hal::spi::config::{MODE_0, MODE_1, MODE_2, MODE_3};
use esp_idf_svc::hal::{peripheral::Peripheral, spi::Spi};
use crate::components_config::master_device::DeviceTrait;
use crate::components_config::spi_master;
use crate::message::MsgDataBound;
pub struct Config<TMsg, TSpi, TPeripheral>
where
TMsg: MsgDataBound,
TSpi: Peripheral<P = TPeripheral> + 'static,
TPeripheral: Spi,
{
pub spi: TSpi,
pub pin_miso: AnyIOPin,
pub pin_mosi: AnyIOPin,
pub pin_sck: AnyIOPin,
pub devices_comm_settings: Vec<ConfigDevicesCommSettings>,
pub devices: Vec<
Box<dyn DeviceTrait<TMsg, spi_master::FieldbusRequest, spi_master::FieldbusResponse, u8>>,
>,
}
pub struct ConfigDevicesCommSettings {
pub pin_cs: AnyIOPin,
pub baudrate: u32,
pub spi_mode: ConfigDeviceSpiMode,
}
#[allow(missing_docs)]
pub enum ConfigDeviceSpiMode {
Mode0,
Mode1,
Mode2,
Mode3,
}
impl From<ConfigDeviceSpiMode> for esp_idf_svc::hal::spi::config::Mode {
fn from(value: ConfigDeviceSpiMode) -> Self {
match value {
ConfigDeviceSpiMode::Mode0 => MODE_0,
ConfigDeviceSpiMode::Mode1 => MODE_1,
ConfigDeviceSpiMode::Mode2 => MODE_2,
ConfigDeviceSpiMode::Mode3 => MODE_3,
}
}
}