Skip to main content

rsiot/components_config/spi_master/
fieldbus_request.rs

1use std::time::Instant;
2
3use crate::components_config::master_device::RequestResponseBound;
4
5use super::Operation;
6
7// ANCHOR: FieldbusRequest
8/// Структура отдельного запроса на коммуникацию по шине SPI
9#[derive(Clone, Debug)]
10pub struct FieldbusRequest {
11    /// Время создания запроса.
12    ///
13    /// Можно контролировать время выполнения запросов
14    pub request_creation_time: Instant,
15
16    /// Вид запроса.
17    ///
18    /// Необходим для правильной расшифровки ответа
19    pub request_kind: u8,
20
21    /// Массив операций
22    pub operations: Vec<Operation>,
23}
24// ANCHOR: FieldbusRequest
25
26impl FieldbusRequest {
27    /// Создание запроса. Адрес задается позже
28    pub fn new(request_kind: impl Into<u8>, operations: Vec<Operation>) -> Self {
29        Self {
30            request_creation_time: Instant::now(),
31            request_kind: request_kind.into(),
32            operations,
33        }
34    }
35}
36
37impl RequestResponseBound for FieldbusRequest {}