rsiot/components/cmp_esp_i2c_master/
config.rs

1use std::time::Duration;
2
3use esp_idf_svc::hal::{gpio::AnyIOPin, i2c::I2c, peripheral::Peripheral};
4
5use crate::{drivers_i2c::I2cDevices, message::MsgDataBound};
6
7/// Конфигурация cmp_esp_i2c_master
8pub struct Config<TMsg, TI2c, TPeripheral>
9where
10    TMsg: MsgDataBound,
11    TI2c: Peripheral<P = TPeripheral> + 'static,
12    TPeripheral: I2c,
13{
14    /// Ссылка на аппартный интерфейс I2C
15    pub i2c: TI2c,
16
17    /// Пин сигнала SDA
18    pub sda: AnyIOPin,
19
20    /// Пин сигнала SCL
21    pub scl: AnyIOPin,
22
23    /// Скорость
24    pub baudrate: ConfigBaudrate,
25
26    /// true - подключить подтяжку встроенными резисторами
27    pub pullup_enable: bool,
28
29    /// Таймаут запроса
30    pub timeout: Duration,
31
32    /// Конфигурация устройств по шине
33    pub devices: Vec<I2cDevices<TMsg>>,
34}
35
36/// Скорость шины
37#[derive(Clone)]
38pub enum ConfigBaudrate {
39    /// 100 kHz
40    Standard,
41
42    /// 400 kHz
43    Fast,
44}