Browse Source

Change in opcua_builtInDatatypes.h:
UA_Variant and UA_NodeId and UA_ExpandedNodeId

MaximilianBauer 11 years ago
parent
commit
073fe3d929
1 changed files with 94 additions and 29 deletions
  1. 94 29
      OPCUAServer/src/opcua_builtInDatatypes.h

+ 94 - 29
OPCUAServer/src/opcua_builtInDatatypes.h

@@ -163,10 +163,10 @@ typedef enum _UA_IdentifierType
 {
 	// Some Values are called the same as previouse Enumerations so we need
 	//names that are unique
-	IT_NUMERIC,
-	IT_STRING,
-	IT_GUID,
-	IT_OPAQUE
+	IT_NUMERIC = 0,
+	IT_STRING = 1,
+	IT_GUID = 2,
+	IT_OPAQUE = 3
 }
 UA_IdentifierType;
 
@@ -189,33 +189,21 @@ UA_NodeIdEncodingValuesType;
 * NodeId
 */
 typedef struct _UA_NodeId
-{
-	UInt16 Namespace;
-	Int32 IdentifierType; //enum BID_IdentifierType
-	Byte *Value;
-}
-UA_NodeId;
-
-/**
-* StandartNodeIdBinaryEncoding
-*/
-typedef struct _UA_StandartNodeIdBinaryEncoding
 {
 	Int32 EncodingByte; //enum BID_NodeIdEncodingValuesType
 	UInt16 Namespace;
-	Byte *Identifier;
-}
-UA_StandardNodeIdBinaryEncoding;
 
-/**
-* TwoByteNoteIdBinaryEncoding
-*/
-typedef struct _UA_TwoByteNoteId
-{
-//ToDo	Int32 EncodingByte = (Int32) BID_NodeIdEncodingValuesType.TWO_BYTE; //enum BID_NodeIdEncodingValuesType.TWO_BYTE
-	UInt16 Identifier;
+    union
+    {
+        UInt32 Numeric;
+        UA_String String;
+        UA_Guid* Guid;
+        UA_ByteString ByteString;
+    }
+    Identifier;
+
 }
-UA_TwoByteNoteId;
+UA_NodeId;
 
 
 /**
@@ -257,7 +245,7 @@ typedef struct _UA_DiagnosticInfo
 	Int32 Locale;
 	UA_String AdditionalInfo;
 	UA_StatusCode InnerStatusCode;
-//ToDo	UA_DiagnosticInfo InnerDiagnosticInfo; //Struct of its own
+	struct _UA_DiagnosticInfo* InnerDiagnosticInfo;
 }
 UA_DiagnosticInfo;
 
@@ -285,6 +273,7 @@ UA_DiagnosticInfoEncodingMaskType;
 typedef struct _UA_QualifiedName
 {
 	UInt16 NamespaceIndex;
+	UInt16 Reserved;
 	UA_String Name;
 }
 UA_QualifiedName;
@@ -342,12 +331,88 @@ UA_ExtensionObjectEncodingMaskType;
 * Chapter: 5.2.2.16
 * Page: 22
 */
+struct _UA_DataValue;
+struct _UA_Variant;
+typedef union _UA_VariantArrayUnion
+{
+    void*              Array;
+    Boolean*           BooleanArray;
+    SByte*             SByteArray;
+    Byte*              ByteArray;
+    Int16*             Int16Array;
+    UInt16*            UInt16Array;
+    Int32*             Int32Array;
+    UInt32*            UInt32Array;
+    Int64*             Int64Array;
+    UInt64*            UInt64Array;
+    Float*             FloatArray;
+    Double*            DoubleArray;
+    UA_String*            StringArray;
+    UA_DateTime*          DateTimeArray;
+    UA_Guid*              GuidArray;
+    UA_ByteString*        ByteStringArray;
+    UA_ByteString*        XmlElementArray;
+    UA_NodeId*            NodeIdArray;
+    UA_ExpandedNodeId*    ExpandedNodeIdArray;
+    UA_StatusCode*        StatusCodeArray;
+    UA_QualifiedName*     QualifiedNameArray;
+    UA_LocalizedText*     LocalizedTextArray;
+    UA_ExtensionObject*   ExtensionObjectArray;
+    struct _UA_DataValue* DataValueArray;
+    struct _UA_Variant*   VariantArray;
+}
+UA_VariantArrayUnion;
+
+typedef struct _UA_VariantArrayValue
+{
+    Int32  Length;
+    UA_VariantArrayUnion Value;
+}
+UA_VariantArrayValue;
+
+typedef struct _UA_VariantMatrixValue
+{
+    Int32 NoOfDimensions;
+    Int32* Dimensions;
+    UA_VariantArrayUnion Value;
+}
+UA_VariantMatrixValue;
+
+typedef union _UA_VariantUnion
+{
+    Boolean Boolean;
+    SByte SByte;
+    Byte Byte;
+    Int16 Int16;
+    UInt16 UInt16;
+    Int32 Int32;
+    UInt32 UInt32;
+    Int64 Int64;
+    UInt64 UInt64;
+    Float Float;
+    Double Double;
+    UA_DateTime DateTime;
+    UA_String String;
+    UA_Guid* Guid;
+    UA_ByteString ByteString;
+    UA_XmlElement XmlElement;
+    UA_NodeId* NodeId;
+    UA_ExpandedNodeId* ExpandedNodeId;
+    UA_StatusCode StatusCode;
+    UA_QualifiedName* QualifiedName;
+    UA_LocalizedText* LocalizedText;
+    UA_ExtensionObject* ExtensionObject;
+    struct _UA_DataValue* DataValue;
+    UA_VariantArrayValue  Array;
+    UA_VariantMatrixValue Matrix;
+}
+UA_VariantUnion;
+
 typedef struct _UA_Variant
 {
 	Byte EncodingMask; //Type of Enum UA_VariantTypeEncodingMaskType
 	Int32 ArrayLength;
-	Byte *Value;
-	Int32 ArrayDimensions[];
+	UA_VariantUnion *Value;
 }
 UA_Variant;