1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/// EtherCAT SDO/PDO Value
#[derive(Debug, Clone, PartialEq)]
pub enum Value {
    /// BIT
    Bool(bool),

    /// BYTE
    Byte(u8),

    /// SINT
    I8(i8),
    /// INT
    I16(i16),
    /// DINT
    I32(i32),
    /// LINT
    I64(i64),

    /// USINT
    U8(u8),
    /// UINT
    U16(u16),
    /// UDINT
    U32(u32),
    /// ULINT
    U64(u64),

    /// REAL
    F32(f32),
    /// LREAL
    F64(f64),

    /// STRING(n) a.k.a. visiable string
    String(String),

    /// ARRAY of BYTE a.k.a. Octet String
    U8Array(Vec<u8>),

    /// ARRAY of UINT a.k.a. Unicode String
    U16Array(Vec<u16>),

    // TODO:
    //I24
    //I40
    //I48
    //I56

    // TODO:
    //U24
    //U40
    //U48
    //U56
    /// BIT 1
    Bit1(bool),
    /// BIT 2
    Bit2(bool),
    /// BIT 3
    Bit3(bool),
    /// BIT 4
    Bit4(bool),
    /// BIT 5
    Bit5(bool),
    /// BIT 6
    Bit6(bool),
    /// BIT 7
    Bit7(bool),
    /// BIT 8
    Bit8(bool),

    // TODO:
    // /// Time of Day
    // TimeOfDay,
    // /// Time Difference
    // TimeDifference,

    // TODO:
    // /// Domain
    // Domain,
    Raw(Vec<u8>),
}