rsiot/components_config/master_device/mod.rs
1//! Реализация опроса подчиненных устройств по любому протоколу - I2C, SPI, UART
2//!
3//! На рисунке приведена структура работы драйвера устройства. В драйвере реализуется логическая
4//! часть опроса устройств. Физическая реализация взамодействия с интерфейсом реализована в
5//! конкретных компонентах. Таким образом, драйвера можно использовать в разных реализациях.
6//! Например, драйвера устройств I2С можно использовать как в компоненте cmp_linux_i2c_master, так и
7//! cmp_esp_i2c_master.
8//!
9#![doc = include_str!("doc/diagram.svg")]
10//!
11//! Цифрами 1, 2, 3, 4 помечены каналы передачи данных, соответствующие каналам на структуре
12//! компонента опроса устройств ([FieldbusExecution](crate::components::shared_tasks::fieldbus_execution)). В таблице приведено описание задач.
13//!
14//! | Название | Описание |
15//! | ------- | ------- |
16//! | InitRequest | Задача создания запросов, с помощью которых можно инициализировать устройство. |
17//! | PeriodicRequest | Задача создания периодических запросов. Можно создавать несколько запросов с разными периодами вызова. |
18//! | Input | Обновление буфера на основе входящих сообщений из шины MsgBus. Обновление происходит на основе функции из конфигурации драйвера.|
19//! | BufferPeriodic | Задача необходима для периодического запуска задачи BufferToRequests. |
20//! | BufferToRequestsRequest | Задача создания запросов на основе буфера. |
21//! | Request | Задача объединяет запросы из задач InitRequest, PeriodicRequest и BufferToRequests и отправляет запросы в интерфейс. |
22//! | Response | Задача получает ответы из интерфейса. На основе конфигурации драйвера создаются исходящие сообщения и передаются в шину MsgBus. Также при необходимости можно передать сигнал в задачу BufferToRequests для создания новых запросов в интерфейс. |
23
24mod buffer_bound;
25mod device;
26mod device_trait;
27mod error;
28mod fieldbus_request_with_index;
29mod fieldbus_response_with_index;
30mod request_response_bound;
31
32pub use buffer_bound::BufferBound;
33pub use device::*;
34pub use device_trait::DeviceTrait;
35pub use error::Error;
36pub(crate) use fieldbus_request_with_index::FieldbusRequestWithIndex;
37pub(crate) use fieldbus_response_with_index::FieldbusResponseWithIndex;
38pub(crate) use request_response_bound::RequestResponseBound;
39
40/// Тип Result
41pub type Result<T> = std::result::Result<T, Error>;