rsiot/drivers_i2c/general/
config.rs

1use std::time::Duration;
2
3use crate::message::{Message, MsgDataBound};
4
5use super::super::I2cSlaveAddress;
6
7/// Функция преобразования входящих сообщений в данные запроса по I2C
8pub type FnInput<TMsg> = fn(&Message<TMsg>) -> anyhow::Result<Option<Vec<u8>>>;
9
10/// Функция преобразования данных ответа I2C в исходящие сообщения
11pub type FnOutput<TMsg> = fn(Vec<u8>) -> anyhow::Result<Option<Message<TMsg>>>;
12
13/// Конфигурация
14#[derive(Clone)]
15pub struct Config<TMsg>
16where
17    TMsg: MsgDataBound,
18{
19    /// Адрес
20    pub address: I2cSlaveAddress,
21
22    /// Тайм-аут запроса
23    pub timeout: Duration,
24
25    /// Функция преобразования входящих сообщений в данные запроса по I2C
26    pub fn_input: FnInput<TMsg>,
27
28    /// Функция преобразования данных ответа I2C в исходящие сообщения
29    pub fn_output: FnOutput<TMsg>,
30}