1 | // Copyright (C) 2015 basysKom GmbH, opensource@basyskom.com |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | |
4 | #ifndef QOPCUATYPE |
5 | #define QOPCUATYPE |
6 | |
7 | #include <QtOpcUa/qopcuaglobal.h> |
8 | #include <QtOpcUa/qopcuanodeids.h> |
9 | |
10 | #include <QtCore/qmetatype.h> |
11 | #include <QtCore/qpair.h> |
12 | #include <QtCore/qvariant.h> |
13 | |
14 | QT_BEGIN_NAMESPACE |
15 | |
16 | namespace QOpcUa { |
17 | Q_OPCUA_EXPORT Q_NAMESPACE |
18 | Q_CLASSINFO("RegisterEnumClassesUnscoped" , "false" ) |
19 | |
20 | // see OPC-UA Part 3, 5.2.3 & 8.30 |
21 | enum class NodeClass { |
22 | Undefined = 0, |
23 | Object = 1, |
24 | Variable = 2, |
25 | Method = 4, |
26 | ObjectType = 8, |
27 | VariableType = 16, |
28 | ReferenceType = 32, |
29 | DataType = 64, |
30 | View = 128, |
31 | }; |
32 | Q_ENUM_NS(NodeClass) |
33 | Q_DECLARE_FLAGS(NodeClasses, NodeClass) |
34 | |
35 | enum class NodeAttribute { |
36 | None = 0, |
37 | NodeId = (1 << 0), |
38 | NodeClass = (1 << 1), |
39 | BrowseName = (1 << 2), |
40 | DisplayName = (1 << 3), |
41 | Description = (1 << 4), |
42 | WriteMask = (1 << 5), |
43 | UserWriteMask = (1 << 6), // Base attributes, see part 4, 5.2.1 |
44 | IsAbstract = (1 << 7), |
45 | Symmetric = (1 << 8), |
46 | InverseName = (1 << 9), // Reference attributes, see part 4, 5.3.1 |
47 | ContainsNoLoops = (1 << 10), |
48 | EventNotifier = (1 << 11), // View attributes, see part 4, 5.4 |
49 | // Objects also add the EventNotifier attribute, see part 4, 5.5.1 |
50 | // ObjectType also add the IsAbstract attribute, see part 4, 5.5.2 |
51 | Value = (1 << 12), |
52 | DataType = (1 << 13), |
53 | ValueRank = (1 << 14), |
54 | ArrayDimensions = (1 << 15), |
55 | AccessLevel = (1 << 16), |
56 | UserAccessLevel = (1 << 17), |
57 | MinimumSamplingInterval = (1 << 18), |
58 | Historizing = (1 << 19), // Value attributes, see part 4, 5.6.2 |
59 | // VariableType also adds the Value, DataType, ValueRank, ArrayDimensions |
60 | // and isAbstract attributes, see part 4, 5.6.5 |
61 | Executable = (1 << 20), |
62 | UserExecutable = (1 << 21), // Method attributes, see part 4, 5.7 |
63 | }; |
64 | Q_ENUM_NS(NodeAttribute) |
65 | Q_DECLARE_FLAGS(NodeAttributes, NodeAttribute) |
66 | |
67 | // Defined in OPC-UA part 3, Table 8. |
68 | enum class WriteMaskBit : quint32 { |
69 | None = 0, |
70 | AccessLevel = (1 << 0), |
71 | ArrayDimensions = (1 << 1), |
72 | BrowseName = (1 << 2), |
73 | ContainsNoLoops = (1 << 3), |
74 | DataType = (1 << 4), |
75 | Description = (1 << 5), |
76 | DisplayName = (1 << 6), |
77 | EventNotifier = (1 << 7), |
78 | Executable = (1 << 8), |
79 | Historizing = (1 << 9), |
80 | InverseName = (1 << 10), |
81 | IsAbstract = (1 << 11), |
82 | MinimumSamplingInterval = (1 << 12), |
83 | NodeClass = (1 << 13), |
84 | NodeId = (1 << 14), |
85 | Symmetric = (1 << 15), |
86 | UserAccessLevel = (1 << 16), |
87 | UserExecutable = (1 << 17), |
88 | UserWriteMask = (1 << 18), |
89 | ValueRank = (1 << 19), |
90 | WriteMask = (1 << 20), |
91 | ValueForVariableType = (1 << 21), |
92 | }; |
93 | Q_ENUM_NS(WriteMaskBit) |
94 | Q_DECLARE_FLAGS(WriteMask, WriteMaskBit) |
95 | |
96 | // Defined in OPC-UA part 3, Table 8. |
97 | enum class AccessLevelBit : quint8 { |
98 | None = 0, |
99 | CurrentRead = (1 << 0), |
100 | CurrentWrite = (1 << 1), |
101 | HistoryRead = (1 << 2), |
102 | HistoryWrite = (1 << 3), |
103 | SemanticChange = (1 << 4), |
104 | StatusWrite = (1 << 5), |
105 | TimestampWrite = (1 << 6), |
106 | }; |
107 | Q_ENUM_NS(AccessLevelBit) |
108 | Q_DECLARE_FLAGS(AccessLevel, AccessLevelBit) |
109 | |
110 | // Defined in OPC-UA part 3, Table 6. |
111 | enum class EventNotifierBit : quint8 { |
112 | None = 0, |
113 | SubscribeToEvents = (1 << 0), |
114 | HistoryRead = (1 << 2), |
115 | HistoryWrite = (1 << 3) |
116 | }; |
117 | Q_ENUM_NS(EventNotifierBit) |
118 | Q_DECLARE_FLAGS(EventNotifier, EventNotifierBit) |
119 | |
120 | #if QT_VERSION >= 0x060000 |
121 | inline size_t qHash(const QOpcUa::NodeAttribute& attr) |
122 | #else |
123 | inline uint qHash(const QOpcUa::NodeAttribute& attr) |
124 | #endif |
125 | { |
126 | return ::qHash(key: static_cast<uint>(attr)); |
127 | } |
128 | |
129 | // The reference types are nodes in namespace 0, the enum value is their numeric identifier. |
130 | // Identifiers are specified in https://opcfoundation.org/UA/schemas/1.03/NodeIds.csv |
131 | enum class ReferenceTypeId : quint32 { |
132 | Unspecified = 0, |
133 | References = 31, |
134 | NonHierarchicalReferences = 32, |
135 | HierarchicalReferences = 33, |
136 | HasChild = 34, |
137 | Organizes = 35, |
138 | HasEventSource = 36, |
139 | HasModellingRule = 37, |
140 | HasEncoding = 38, |
141 | HasDescription = 39, |
142 | HasTypeDefinition = 40, |
143 | GeneratesEvent = 41, |
144 | Aggregates = 44, |
145 | HasSubtype = 45, |
146 | HasProperty = 46, |
147 | HasComponent = 47, |
148 | HasNotifier = 48, |
149 | HasOrderedComponent = 49, |
150 | FromState = 51, |
151 | ToState = 52, |
152 | HasCause = 53, |
153 | HasEffect = 54, |
154 | HasHistoricalConfiguration = 56, |
155 | HasSubStateMachine = 117, |
156 | HasArgumentDescription = 129, |
157 | HasOptionalInputArgumentDescription = 131, |
158 | AlwaysGeneratesEvent = 3065, |
159 | HasTrueSubState = 9004, |
160 | HasFalseSubState = 9005, |
161 | HasCondition = 9006, |
162 | HasPubSubConnection = 14476, |
163 | DataSetToWriter = 14936, |
164 | HasGuard = 15112, |
165 | HasDataSetWriter = 15296, |
166 | HasDataSetReader = 15297, |
167 | HasAlarmSuppressionGroup = 16361, |
168 | AlarmGroupMember = 16362, |
169 | HasEffectDisable = 17276, |
170 | HasDictionaryEntry = 17597, |
171 | HasInterface = 17603, |
172 | HasAddIn = 17604, |
173 | HasEffectEnable = 17983, |
174 | HasEffectSuppressed = 17984, |
175 | HasEffectUnsuppressed = 17985, |
176 | HasWriterGroup = 18804, |
177 | HasReaderGroup = 18805, |
178 | AliasFor = 23469, |
179 | }; |
180 | Q_ENUM_NS(ReferenceTypeId) |
181 | |
182 | enum Types |
183 | { |
184 | Boolean = 0, |
185 | Int32 = 1, |
186 | UInt32 = 2, |
187 | Double = 3, |
188 | Float = 4, |
189 | String = 5, |
190 | LocalizedText = 6, |
191 | DateTime = 7, |
192 | UInt16 = 8, |
193 | Int16 = 9, |
194 | UInt64 = 10, |
195 | Int64 = 11, |
196 | Byte = 12, |
197 | SByte = 13, |
198 | ByteString = 14, |
199 | XmlElement = 15, |
200 | NodeId = 16, |
201 | Guid = 17, |
202 | QualifiedName = 18, |
203 | StatusCode = 19, |
204 | ExtensionObject = 20, |
205 | Range = 21, |
206 | EUInformation = 22, |
207 | ComplexNumber = 23, |
208 | DoubleComplexNumber = 24, |
209 | AxisInformation = 25, |
210 | XV = 26, |
211 | ExpandedNodeId = 27, |
212 | Argument = 28, |
213 | Undefined = 0xFFFFFFFF |
214 | }; |
215 | Q_ENUM_NS(Types) |
216 | |
217 | // OpcUa Specification Part 4, Chapter 7.34 "Status Code" |
218 | // OpcUa Specification Part 6, Annex A.2 "Status Codes |
219 | enum UaStatusCode : quint32 |
220 | { |
221 | Good = 0, |
222 | BadUnexpectedError = 0x80010000, |
223 | BadInternalError = 0x80020000, |
224 | BadOutOfMemory = 0x80030000, |
225 | BadResourceUnavailable = 0x80040000, |
226 | BadCommunicationError = 0x80050000, |
227 | BadEncodingError = 0x80060000, |
228 | BadDecodingError = 0x80070000, |
229 | BadEncodingLimitsExceeded = 0x80080000, |
230 | BadRequestTooLarge = 0x80B80000, |
231 | BadResponseTooLarge = 0x80B90000, |
232 | BadUnknownResponse = 0x80090000, |
233 | BadTimeout = 0x800A0000, |
234 | BadServiceUnsupported = 0x800B0000, |
235 | BadShutdown = 0x800C0000, |
236 | BadServerNotConnected = 0x800D0000, |
237 | BadServerHalted = 0x800E0000, |
238 | BadNothingToDo = 0x800F0000, |
239 | BadTooManyOperations = 0x80100000, |
240 | BadTooManyMonitoredItems = 0x80DB0000, |
241 | BadDataTypeIdUnknown = 0x80110000, |
242 | BadCertificateInvalid = 0x80120000, |
243 | BadSecurityChecksFailed = 0x80130000, |
244 | BadCertificateTimeInvalid = 0x80140000, |
245 | BadCertificateIssuerTimeInvalid = 0x80150000, |
246 | BadCertificateHostNameInvalid = 0x80160000, |
247 | BadCertificateUriInvalid = 0x80170000, |
248 | BadCertificateUseNotAllowed = 0x80180000, |
249 | BadCertificateIssuerUseNotAllowed = 0x80190000, |
250 | BadCertificateUntrusted = 0x801A0000, |
251 | BadCertificateRevocationUnknown = 0x801B0000, |
252 | BadCertificateIssuerRevocationUnknown = 0x801C0000, |
253 | BadCertificateRevoked = 0x801D0000, |
254 | BadCertificateIssuerRevoked = 0x801E0000, |
255 | BadCertificateChainIncomplete = 0x810D0000, |
256 | BadUserAccessDenied = 0x801F0000, |
257 | BadIdentityTokenInvalid = 0x80200000, |
258 | BadIdentityTokenRejected = 0x80210000, |
259 | BadSecureChannelIdInvalid = 0x80220000, |
260 | BadInvalidTimestamp = 0x80230000, |
261 | BadNonceInvalid = 0x80240000, |
262 | BadSessionIdInvalid = 0x80250000, |
263 | BadSessionClosed = 0x80260000, |
264 | BadSessionNotActivated = 0x80270000, |
265 | BadSubscriptionIdInvalid = 0x80280000, |
266 | = 0x802A0000, |
267 | BadTimestampsToReturnInvalid = 0x802B0000, |
268 | BadRequestCancelledByClient = 0x802C0000, |
269 | BadTooManyArguments = 0x80E50000, |
270 | GoodSubscriptionTransferred = 0x002D0000, |
271 | GoodCompletesAsynchronously = 0x002E0000, |
272 | GoodOverload = 0x002F0000, |
273 | GoodClamped = 0x00300000, |
274 | BadNoCommunication = 0x80310000, |
275 | BadWaitingForInitialData = 0x80320000, |
276 | BadNodeIdInvalid = 0x80330000, |
277 | BadNodeIdUnknown = 0x80340000, |
278 | BadAttributeIdInvalid = 0x80350000, |
279 | BadIndexRangeInvalid = 0x80360000, |
280 | BadIndexRangeNoData = 0x80370000, |
281 | BadDataEncodingInvalid = 0x80380000, |
282 | BadDataEncodingUnsupported = 0x80390000, |
283 | BadNotReadable = 0x803A0000, |
284 | BadNotWritable = 0x803B0000, |
285 | BadOutOfRange = 0x803C0000, |
286 | BadNotSupported = 0x803D0000, |
287 | BadNotFound = 0x803E0000, |
288 | BadObjectDeleted = 0x803F0000, |
289 | BadNotImplemented = 0x80400000, |
290 | BadMonitoringModeInvalid = 0x80410000, |
291 | BadMonitoredItemIdInvalid = 0x80420000, |
292 | BadMonitoredItemFilterInvalid = 0x80430000, |
293 | BadMonitoredItemFilterUnsupported = 0x80440000, |
294 | BadFilterNotAllowed = 0x80450000, |
295 | BadStructureMissing = 0x80460000, |
296 | BadEventFilterInvalid = 0x80470000, |
297 | BadContentFilterInvalid = 0x80480000, |
298 | BadFilterOperatorInvalid = 0x80C10000, |
299 | BadFilterOperatorUnsupported = 0x80C20000, |
300 | BadFilterOperandCountMismatch = 0x80C30000, |
301 | BadFilterOperandInvalid = 0x80490000, |
302 | BadFilterElementInvalid = 0x80C40000, |
303 | BadFilterLiteralInvalid = 0x80C50000, |
304 | BadContinuationPointInvalid = 0x804A0000, |
305 | BadNoContinuationPoints = 0x804B0000, |
306 | BadReferenceTypeIdInvalid = 0x804C0000, |
307 | BadBrowseDirectionInvalid = 0x804D0000, |
308 | BadNodeNotInView = 0x804E0000, |
309 | BadServerUriInvalid = 0x804F0000, |
310 | BadServerNameMissing = 0x80500000, |
311 | BadDiscoveryUrlMissing = 0x80510000, |
312 | BadSempahoreFileMissing = 0x80520000, |
313 | BadRequestTypeInvalid = 0x80530000, |
314 | BadSecurityModeRejected = 0x80540000, |
315 | BadSecurityPolicyRejected = 0x80550000, |
316 | BadTooManySessions = 0x80560000, |
317 | BadUserSignatureInvalid = 0x80570000, |
318 | BadApplicationSignatureInvalid = 0x80580000, |
319 | BadNoValidCertificates = 0x80590000, |
320 | BadIdentityChangeNotSupported = 0x80C60000, |
321 | BadRequestCancelledByRequest = 0x805A0000, |
322 | BadParentNodeIdInvalid = 0x805B0000, |
323 | BadReferenceNotAllowed = 0x805C0000, |
324 | BadNodeIdRejected = 0x805D0000, |
325 | BadNodeIdExists = 0x805E0000, |
326 | BadNodeClassInvalid = 0x805F0000, |
327 | BadBrowseNameInvalid = 0x80600000, |
328 | BadBrowseNameDuplicated = 0x80610000, |
329 | BadNodeAttributesInvalid = 0x80620000, |
330 | BadTypeDefinitionInvalid = 0x80630000, |
331 | BadSourceNodeIdInvalid = 0x80640000, |
332 | BadTargetNodeIdInvalid = 0x80650000, |
333 | BadDuplicateReferenceNotAllowed = 0x80660000, |
334 | BadInvalidSelfReference = 0x80670000, |
335 | BadReferenceLocalOnly = 0x80680000, |
336 | BadNoDeleteRights = 0x80690000, |
337 | UncertainReferenceNotDeleted = 0x40BC0000, |
338 | BadServerIndexInvalid = 0x806A0000, |
339 | BadViewIdUnknown = 0x806B0000, |
340 | BadViewTimestampInvalid = 0x80C90000, |
341 | BadViewParameterMismatch = 0x80CA0000, |
342 | BadViewVersionInvalid = 0x80CB0000, |
343 | UncertainNotAllNodesAvailable = 0x40C00000, |
344 | GoodResultsMayBeIncomplete = 0x00BA0000, |
345 | BadNotTypeDefinition = 0x80C80000, |
346 | UncertainReferenceOutOfServer = 0x406C0000, |
347 | BadTooManyMatches = 0x806D0000, |
348 | BadQueryTooComplex = 0x806E0000, |
349 | BadNoMatch = 0x806F0000, |
350 | BadMaxAgeInvalid = 0x80700000, |
351 | BadSecurityModeInsufficient = 0x80E60000, |
352 | BadHistoryOperationInvalid = 0x80710000, |
353 | BadHistoryOperationUnsupported = 0x80720000, |
354 | BadInvalidTimestampArgument = 0x80BD0000, |
355 | BadWriteNotSupported = 0x80730000, |
356 | BadTypeMismatch = 0x80740000, |
357 | BadMethodInvalid = 0x80750000, |
358 | BadArgumentsMissing = 0x80760000, |
359 | BadTooManySubscriptions = 0x80770000, |
360 | BadTooManyPublishRequests = 0x80780000, |
361 | BadNoSubscription = 0x80790000, |
362 | BadSequenceNumberUnknown = 0x807A0000, |
363 | BadMessageNotAvailable = 0x807B0000, |
364 | BadInsufficientClientProfile = 0x807C0000, |
365 | BadStateNotActive = 0x80BF0000, |
366 | BadTcpServerTooBusy = 0x807D0000, |
367 | BadTcpMessageTypeInvalid = 0x807E0000, |
368 | BadTcpSecureChannelUnknown = 0x807F0000, |
369 | BadTcpMessageTooLarge = 0x80800000, |
370 | BadTcpNotEnoughResources = 0x80810000, |
371 | BadTcpInternalError = 0x80820000, |
372 | BadTcpEndpointUrlInvalid = 0x80830000, |
373 | BadRequestInterrupted = 0x80840000, |
374 | BadRequestTimeout = 0x80850000, |
375 | BadSecureChannelClosed = 0x80860000, |
376 | BadSecureChannelTokenUnknown = 0x80870000, |
377 | BadSequenceNumberInvalid = 0x80880000, |
378 | BadProtocolVersionUnsupported = 0x80BE0000, |
379 | BadConfigurationError = 0x80890000, |
380 | BadNotConnected = 0x808A0000, |
381 | BadDeviceFailure = 0x808B0000, |
382 | BadSensorFailure = 0x808C0000, |
383 | BadOutOfService = 0x808D0000, |
384 | BadDeadbandFilterInvalid = 0x808E0000, |
385 | UncertainNoCommunicationLastUsableValue = 0x408F0000, |
386 | UncertainLastUsableValue = 0x40900000, |
387 | UncertainSubstituteValue = 0x40910000, |
388 | UncertainInitialValue = 0x40920000, |
389 | UncertainSensorNotAccurate = 0x40930000, |
390 | UncertainEngineeringUnitsExceeded = 0x40940000, |
391 | UncertainSubNormal = 0x40950000, |
392 | GoodLocalOverride = 0x00960000, |
393 | BadRefreshInProgress = 0x80970000, |
394 | BadConditionAlreadyDisabled = 0x80980000, |
395 | BadConditionAlreadyEnabled = 0x80CC0000, |
396 | BadConditionDisabled = 0x80990000, |
397 | BadEventIdUnknown = 0x809A0000, |
398 | BadEventNotAcknowledgeable = 0x80BB0000, |
399 | BadDialogNotActive = 0x80CD0000, |
400 | BadDialogResponseInvalid = 0x80CE0000, |
401 | BadConditionBranchAlreadyAcked = 0x80CF0000, |
402 | BadConditionBranchAlreadyConfirmed = 0x80D00000, |
403 | BadConditionAlreadyShelved = 0x80D10000, |
404 | BadConditionNotShelved = 0x80D20000, |
405 | BadShelvingTimeOutOfRange = 0x80D30000, |
406 | BadNoData = 0x809B0000, |
407 | BadBoundNotFound = 0x80D70000, |
408 | BadBoundNotSupported = 0x80D80000, |
409 | BadDataLost = 0x809D0000, |
410 | BadDataUnavailable = 0x809E0000, |
411 | BadEntryExists = 0x809F0000, |
412 | BadNoEntryExists = 0x80A00000, |
413 | BadTimestampNotSupported = 0x80A10000, |
414 | GoodEntryInserted = 0x00A20000, |
415 | GoodEntryReplaced = 0x00A30000, |
416 | UncertainDataSubNormal = 0x40A40000, |
417 | GoodNoData = 0x00A50000, |
418 | GoodMoreData = 0x00A60000, |
419 | BadAggregateListMismatch = 0x80D40000, |
420 | BadAggregateNotSupported = 0x80D50000, |
421 | BadAggregateInvalidInputs = 0x80D60000, |
422 | BadAggregateConfigurationRejected = 0x80DA0000, |
423 | GoodDataIgnored = 0x00D90000, |
424 | BadRequestNotAllowed = 0x80E40000, |
425 | GoodEdited = 0x00DC0000, |
426 | GoodPostActionFailed = 0x00DD0000, |
427 | UncertainDominantValueChanged = 0x40DE0000, |
428 | GoodDependentValueChanged = 0x00E00000, |
429 | BadDominantValueChanged = 0x80E10000, |
430 | UncertainDependentValueChanged = 0x40E20000, |
431 | BadDependentValueChanged = 0x80E30000, |
432 | GoodCommunicationEvent = 0x00A70000, |
433 | GoodShutdownEvent = 0x00A80000, |
434 | GoodCallAgain = 0x00A90000, |
435 | GoodNonCriticalTimeout = 0x00AA0000, |
436 | BadInvalidArgument = 0x80AB0000, |
437 | BadConnectionRejected = 0x80AC0000, |
438 | BadDisconnect = 0x80AD0000, |
439 | BadConnectionClosed = 0x80AE0000, |
440 | BadInvalidState = 0x80AF0000, |
441 | BadEndOfStream = 0x80B00000, |
442 | BadNoDataAvailable = 0x80B10000, |
443 | BadWaitingForResponse = 0x80B20000, |
444 | BadOperationAbandoned = 0x80B30000, |
445 | BadExpectedStreamToBlock = 0x80B40000, |
446 | BadWouldBlock = 0x80B50000, |
447 | BadSyntaxError = 0x80B60000, |
448 | BadMaxConnectionsReached = 0x80B70000 |
449 | }; |
450 | Q_ENUM_NS(UaStatusCode) |
451 | |
452 | enum class ErrorCategory { |
453 | NoError, |
454 | NodeError, |
455 | AttributeError, |
456 | PermissionError, |
457 | ArgumentError, |
458 | TypeError, |
459 | ConnectionError, |
460 | UnspecifiedError |
461 | }; |
462 | Q_ENUM_NS(ErrorCategory) |
463 | |
464 | Q_OPCUA_EXPORT bool isSuccessStatus(QOpcUa::UaStatusCode statusCode); |
465 | Q_OPCUA_EXPORT QOpcUa::ErrorCategory errorCategory(QOpcUa::UaStatusCode statusCode); |
466 | Q_OPCUA_EXPORT QString statusToString(QOpcUa::UaStatusCode statusCode); |
467 | Q_OPCUA_EXPORT bool isSecurePolicy(const QString &securityPolicy); |
468 | |
469 | // NodeId helpers |
470 | Q_OPCUA_EXPORT QString nodeIdFromString(quint16 ns, const QString &identifier); |
471 | Q_OPCUA_EXPORT QString nodeIdFromByteString(quint16 ns, const QByteArray &identifier); |
472 | Q_OPCUA_EXPORT QString nodeIdFromGuid(quint16 ns, const QUuid &identifier); |
473 | Q_OPCUA_EXPORT QString nodeIdFromInteger(quint16 ns, quint32 identifier); |
474 | Q_OPCUA_EXPORT QString nodeIdFromReferenceType(QOpcUa::ReferenceTypeId referenceType); |
475 | Q_OPCUA_EXPORT bool nodeIdStringSplit(const QString &nodeIdString, quint16 *nsIndex, |
476 | QString *identifier, char *identifierType); |
477 | Q_OPCUA_EXPORT bool nodeIdEquals(const QString &first, const QString &second); |
478 | Q_OPCUA_EXPORT QString namespace0Id(QOpcUa::NodeIds::Namespace0 id); |
479 | Q_OPCUA_EXPORT QOpcUa::NodeIds::Namespace0 namespace0IdFromNodeId(const QString &nodeId); |
480 | Q_OPCUA_EXPORT QString namespace0IdName(QOpcUa::NodeIds::Namespace0 id); |
481 | |
482 | typedef QPair<QVariant, QOpcUa::Types> TypedVariant; |
483 | |
484 | enum class AxisScale : quint32 { |
485 | Linear = 0, |
486 | Log = 1, |
487 | Ln = 2 |
488 | }; |
489 | |
490 | Q_OPCUA_EXPORT QOpcUa::Types metaTypeToQOpcUaType(QMetaType::Type type); |
491 | Q_OPCUA_EXPORT QOpcUa::Types opcUaDataTypeToQOpcUaType(const QString &type); |
492 | } |
493 | |
494 | Q_DECLARE_TYPEINFO(QOpcUa::Types, Q_PRIMITIVE_TYPE); |
495 | Q_DECLARE_TYPEINFO(QOpcUa::UaStatusCode, Q_PRIMITIVE_TYPE); |
496 | Q_DECLARE_TYPEINFO(QOpcUa::ErrorCategory, Q_PRIMITIVE_TYPE); |
497 | |
498 | Q_DECLARE_TYPEINFO(QOpcUa::NodeClass, Q_PRIMITIVE_TYPE); |
499 | Q_DECLARE_TYPEINFO(QOpcUa::NodeAttribute, Q_PRIMITIVE_TYPE); |
500 | Q_DECLARE_OPERATORS_FOR_FLAGS(QOpcUa::NodeAttributes) |
501 | Q_DECLARE_OPERATORS_FOR_FLAGS(QOpcUa::WriteMask) |
502 | Q_DECLARE_OPERATORS_FOR_FLAGS(QOpcUa::AccessLevel) |
503 | Q_DECLARE_OPERATORS_FOR_FLAGS(QOpcUa::EventNotifier) |
504 | Q_DECLARE_OPERATORS_FOR_FLAGS(QOpcUa::NodeClasses) |
505 | Q_DECLARE_TYPEINFO(QOpcUa::ReferenceTypeId, Q_PRIMITIVE_TYPE); |
506 | |
507 | QT_END_NAMESPACE |
508 | |
509 | Q_DECLARE_METATYPE(QOpcUa::Types) |
510 | Q_DECLARE_METATYPE(QOpcUa::TypedVariant) |
511 | Q_DECLARE_METATYPE(QOpcUa::UaStatusCode) |
512 | Q_DECLARE_METATYPE(QOpcUa::ErrorCategory) |
513 | Q_DECLARE_METATYPE(QOpcUa::NodeClass) |
514 | Q_DECLARE_METATYPE(QOpcUa::NodeAttribute) |
515 | Q_DECLARE_METATYPE(QOpcUa::NodeAttributes) |
516 | Q_DECLARE_METATYPE(QOpcUa::WriteMaskBit) |
517 | Q_DECLARE_METATYPE(QOpcUa::WriteMask) |
518 | Q_DECLARE_METATYPE(QOpcUa::AccessLevelBit) |
519 | Q_DECLARE_METATYPE(QOpcUa::AccessLevel) |
520 | Q_DECLARE_METATYPE(QOpcUa::EventNotifierBit) |
521 | Q_DECLARE_METATYPE(QOpcUa::EventNotifier) |
522 | Q_DECLARE_METATYPE(QOpcUa::ReferenceTypeId) |
523 | Q_DECLARE_METATYPE(QOpcUa::NodeClasses) |
524 | |
525 | #endif // QOPCUATYPE |
526 | |