data_value.h
Go to the documentation of this file.
1 
11 #ifndef __OPC_UA_DATA_VALUE_H__
12 #define __OPC_UA_DATA_VALUE_H__
13 
15 
16 namespace OpcUa
17 {
18 const uint8_t DATA_VALUE = 1;
19 const uint8_t DATA_VALUE_STATUS_CODE = 2;
20 const uint8_t DATA_VALUE_SOURCE_TIMESTAMP = 4;
21 const uint8_t DATA_VALUE_Server_TIMESTAMP = 8;
22 const uint8_t DATA_VALUE_SOURCE_PICOSECONDS = 16;
23 const uint8_t DATA_VALUE_Server_PICOSECONDS = 32;
24 const uint8_t DATA_VALUE_ALL = ~uint8_t();
25 
26 struct DataValue
27 {
28  uint8_t Encoding;
35 
37  : Encoding(0)
38  , Status(StatusCode::Good)
39  , SourceTimestamp(0)
40  , SourcePicoseconds(0)
41  , ServerTimestamp(0)
42  , ServerPicoseconds(0)
43  {
44  }
45 
46  DataValue(const DataValue & data) = default;
47 
48  explicit DataValue(const Variant & value)
49  : DataValue()
50  {
51  Value = value;
52  Encoding |= DATA_VALUE;
53  }
54 
55  template <typename T>
56  explicit DataValue(const T val)
57  : DataValue()
58  {
59  Value = Variant(val);
60  Encoding |= DATA_VALUE;
61  }
62 
63  DataValue & operator= (const Variant & value)
64  {
65  Value = value;
66  Encoding |= DATA_VALUE;
67  return *this;
68  }
69 
70  template <typename T>
71  DataValue & operator= (const T & value)
72  {
73  Value = Variant(value);
74  Encoding |= DATA_VALUE;
75  return *this;
76  }
77 
78  template <typename T>
79  bool operator== (const T & t) const
80  {
81  return (Encoding & DATA_VALUE) && Value == t;
82  }
83 
84  bool operator== (const DataValue & data) const
85  {
86  if (Encoding != data.Encoding)
87  { return false; }
88 
89  if ((Encoding & DATA_VALUE) && Value != data.Value)
90  { return false; }
91 
92  if ((Encoding & DATA_VALUE_STATUS_CODE) && Status != data.Status)
93  { return false; }
94 
95  if ((Encoding & DATA_VALUE_SOURCE_TIMESTAMP) && SourceTimestamp != data.SourceTimestamp)
96  { return false; }
97 
98  if ((Encoding & DATA_VALUE_SOURCE_PICOSECONDS) && SourcePicoseconds != data.SourcePicoseconds)
99  { return false; }
100 
101  if ((Encoding & DATA_VALUE_Server_TIMESTAMP) && ServerTimestamp != data.ServerTimestamp)
102  { return false; }
103 
104  if ((Encoding & DATA_VALUE_Server_PICOSECONDS) && ServerPicoseconds != data.ServerPicoseconds)
105  { return false; }
106 
107  return true;
108  }
109 
110  void SetSourceTimestamp(const DateTime & t)
111  {
112  SourceTimestamp = t;
113  Encoding |= DATA_VALUE_SOURCE_TIMESTAMP;
114  }
115 
116  void SetServerTimestamp(const DateTime & t)
117  {
118  ServerTimestamp = t;
119  Encoding |= DATA_VALUE_Server_TIMESTAMP;
120  }
121 };
122 
123 } // namespace OpcUa
124 
125 #endif // __OPC_UA_DATA_VALUE_H__
126 
bool operator==(const T &t) const
Definition: data_value.h:79
DataValue(const Variant &value)
Definition: data_value.h:48
const uint8_t DATA_VALUE_STATUS_CODE
Definition: data_value.h:19
DataValue(const T val)
Definition: data_value.h:56
uint16_t ServerPicoseconds
Definition: data_value.h:34
const uint8_t DATA_VALUE_Server_TIMESTAMP
Definition: data_value.h:21
void SetSourceTimestamp(const DateTime &t)
Definition: data_value.h:110
const uint8_t DATA_VALUE_SOURCE_PICOSECONDS
Definition: data_value.h:22
const uint8_t DATA_VALUE_SOURCE_TIMESTAMP
Definition: data_value.h:20
OPC UA Address space part. GNU LGPL.
const uint8_t DATA_VALUE_Server_PICOSECONDS
Definition: data_value.h:23
const uint8_t DATA_VALUE_ALL
Definition: data_value.h:24
DateTime ServerTimestamp
Definition: data_value.h:33
void SetServerTimestamp(const DateTime &t)
Definition: data_value.h:116
DateTime SourceTimestamp
Definition: data_value.h:31
const uint8_t DATA_VALUE
Definition: data_value.h:18
uint8_t Encoding
Definition: data_value.h:28
DataValue & operator=(const Variant &value)
Definition: data_value.h:63
StatusCode Status
Definition: data_value.h:30
uint16_t SourcePicoseconds
Definition: data_value.h:32


ros_opcua_impl_freeopcua
Author(s): Denis Štogl
autogenerated on Tue Jan 19 2021 03:06:04