rsiot/components/cmp_esp_i2c_master/
config.rs1use std::time::Duration;
2
3use esp_idf_svc::hal::{gpio::AnyIOPin, i2c::I2c};
4
5use crate::{
6 components_config::{
7 i2c_master::{FieldbusRequest, FieldbusResponse},
8 master_device::DeviceTrait,
9 },
10 message::MsgDataBound,
11};
12
13pub struct Config<TMsg, TI2c>
16where
17 TMsg: MsgDataBound,
18 TI2c: I2c + 'static,
19{
20 pub i2c: TI2c,
22
23 pub sda: AnyIOPin<'static>,
25
26 pub scl: AnyIOPin<'static>,
28
29 pub baudrate: ConfigBaudrate,
31
32 pub pullup_enable: bool,
34
35 pub timeout: Duration,
37
38 pub devices: Vec<Box<dyn DeviceTrait<TMsg, FieldbusRequest, FieldbusResponse>>>,
40}
41#[derive(Clone)]
45pub enum ConfigBaudrate {
46 Standard,
48
49 Fast,
51}