Skip to main content

ng_gateway_sdk/southward/
types.rs

1use serde::{Deserialize, Serialize};
2use serde_repr::{Deserialize_repr, Serialize_repr};
3
4#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
5#[repr(i16)]
6pub enum Status {
7    Enabled = 0,
8    Disabled = 1,
9}
10
11#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
12#[repr(i16)]
13pub enum CollectionType {
14    /// Device actively reports data to gateway
15    Report = 0,
16    /// Gateway actively collects data from device
17    Collection = 1,
18}
19
20#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
21#[repr(i16)]
22pub enum ReportType {
23    /// Report data only when it changes
24    Change = 0,
25    /// Always report data
26    Always = 1,
27}
28
29#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
30#[repr(i16)]
31pub enum DataType {
32    Boolean = 0,
33    Int8 = 1,
34    UInt8 = 2,
35    Int16 = 3,
36    UInt16 = 4,
37    Int32 = 5,
38    UInt32 = 6,
39    Int64 = 7,
40    UInt64 = 8,
41    Float32 = 9,
42    Float64 = 10,
43    String = 11,
44    Binary = 12,
45    Timestamp = 13,
46}
47
48impl DataType {
49    #[inline]
50    pub fn is_numeric(&self) -> bool {
51        matches!(
52            self,
53            DataType::Int8
54                | DataType::UInt8
55                | DataType::Int16
56                | DataType::UInt16
57                | DataType::Int32
58                | DataType::UInt32
59                | DataType::Int64
60                | DataType::UInt64
61                | DataType::Float32
62                | DataType::Float64
63        )
64    }
65}
66
67#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
68#[repr(i16)]
69pub enum AccessMode {
70    Read = 0,
71    Write = 1,
72    ReadWrite = 2,
73}
74
75#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize_repr, Deserialize_repr)]
76#[repr(i16)]
77pub enum DataPointType {
78    Attribute = 0,
79    Telemetry = 1,
80}
81
82/// Device operational state
83#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
84pub enum DeviceState {
85    Inactive,
86    Active,
87    Error,
88    Maintenance,
89}
90
91impl DeviceState {
92    /// Returns true if the device is considered operational/online.
93    #[inline]
94    pub fn is_active(&self) -> bool {
95        matches!(self, DeviceState::Active)
96    }
97}