Skip to main content

snap7_client/
types.rs

1use std::time::Duration;
2
3#[derive(Debug, Clone)]
4pub struct ConnectParams {
5    pub rack: u8,
6    pub slot: u8,
7    pub pdu_size: u16,
8    pub connect_timeout: Duration,
9    pub request_timeout: Duration,
10}
11
12impl Default for ConnectParams {
13    fn default() -> Self {
14        Self {
15            rack: 0,
16            slot: 1,
17            pdu_size: 480,
18            connect_timeout: Duration::from_secs(5),
19            request_timeout: Duration::from_secs(10),
20        }
21    }
22}
23
24#[derive(Debug, Clone, Copy, PartialEq, Eq)]
25#[repr(u8)]
26pub enum BlockType {
27    OB = 0x38,
28    DB = 0x41,
29    SDB = 0x42,
30    FC = 0x43,
31    SFC = 0x44,
32    FB = 0x45,
33    SFB = 0x46,
34}
35
36#[cfg(test)]
37mod tests {
38    use super::*;
39
40    #[test]
41    fn connect_params_default() {
42        let p = ConnectParams::default();
43        assert_eq!(p.rack, 0);
44        assert_eq!(p.slot, 1);
45        assert_eq!(p.pdu_size, 480);
46    }
47
48    #[test]
49    fn block_type_discriminants() {
50        assert_eq!(BlockType::DB as u8, 0x41);
51        assert_eq!(BlockType::OB as u8, 0x38);
52    }
53}