rsiot/components_config/modbus_client/
fieldbus_request.rs1use std::time::Instant;
2
3use crate::components_config::master_device::RequestResponseBound;
4
5#[derive(Clone, Debug)]
7pub struct FieldbusRequest {
8 pub request_creation_time: Instant,
12
13 pub request_kind: u8,
17
18 pub operation: RequestContent,
20}
21
22impl FieldbusRequest {
23 pub fn new(request_kind: impl Into<u8>, operation: RequestContent) -> Self {
25 Self {
26 request_creation_time: Instant::now(),
27 request_kind: request_kind.into(),
28 operation,
29 }
30 }
31}
32
33impl RequestResponseBound for FieldbusRequest {}
34
35#[derive(Clone, Debug)]
37pub enum RequestContent {
38 ReadCoils {
40 start_address: u16,
42 count: u16,
44 },
45 ReadHoldingRegisters {
47 start_address: u16,
49 count: u16,
51 },
52 ReadInputRegisters {
54 start_address: u16,
56 count: u16,
58 },
59 WriteSingleRegister {
61 address: u16,
63 value: u16,
65 },
66}