#include "uaprovider_demo_types_1.h"
#include <opcua_platformdefs.h>
#include <opcua_statuscodes.h>
#include <opcua_errorhandling.h>
#include <opcua_memory.h>
#include <opcua_string.h>
#include <opcua_guid.h>
#include <opcua_encoder.h>
#include <opcua_decoder.h>
#include <opcua_identifiers.h>
#include "uaprovider_demo_identifiers_1.h"
#ifndef OPCUA_EXCLUDE_Demo_HeaterStatus
static struct _OpcUa_EnumeratedValue g_Demo_HeaterStatus_EnumeratedValues[] =
{
{"Demo_HeaterStatus_Off", 0},
{"Demo_HeaterStatus_Heating", 1},
{"Demo_HeaterStatus_Cooling", 2},
{ OpcUa_Null, 0 }
};
struct _OpcUa_EnumeratedType Demo_HeaterStatus_EnumeratedType =
{
"HeaterStatus",
g_Demo_HeaterStatus_EnumeratedValues
};
#endif
#ifndef OPCUA_EXCLUDE_Demo_Vector
OpcUa_Void Demo_Vector_Initialize(Demo_Vector* a_pValue)
{
if (a_pValue != OpcUa_Null)
{
OpcUa_Field_Initialize(Double, x);
OpcUa_Field_Initialize(Double, y);
OpcUa_Field_Initialize(Double, z);
}
}
OpcUa_Void Demo_Vector_Clear(Demo_Vector* a_pValue)
{
if (a_pValue != OpcUa_Null)
{
OpcUa_Field_Clear(Double, x);
OpcUa_Field_Clear(Double, y);
OpcUa_Field_Clear(Double, z);
}
}
OpcUa_StatusCode Demo_Vector_GetSize(Demo_Vector* a_pValue, OpcUa_Encoder* a_pEncoder, OpcUa_Int32* a_pSize)
{
OpcUa_Int32 iSize = 0;
OpcUa_InitializeStatus(OpcUa_Module_Serializer, "Vector_GetSize");
OpcUa_ReturnErrorIfArgumentNull(a_pValue);
OpcUa_ReturnErrorIfArgumentNull(a_pEncoder);
OpcUa_ReturnErrorIfArgumentNull(a_pSize);
*a_pSize = -1;
OpcUa_Field_GetSize(Double, x);
OpcUa_Field_GetSize(Double, y);
OpcUa_Field_GetSize(Double, z);
*a_pSize = iSize;
OpcUa_ReturnStatusCode;
OpcUa_BeginErrorHandling;
*a_pSize = -1;
OpcUa_FinishErrorHandling;
}
OpcUa_StatusCode Demo_Vector_Encode(Demo_Vector* a_pValue, OpcUa_Encoder* a_pEncoder)
{
OpcUa_InitializeStatus(OpcUa_Module_Serializer, "Vector_Encode");
OpcUa_ReturnErrorIfArgumentNull(a_pValue);
OpcUa_ReturnErrorIfArgumentNull(a_pEncoder);
OpcUa_Field_Write(Double, x);
OpcUa_Field_Write(Double, y);
OpcUa_Field_Write(Double, z);
OpcUa_ReturnStatusCode;
OpcUa_BeginErrorHandling;
OpcUa_FinishErrorHandling;
}
OpcUa_StatusCode Demo_Vector_Decode(Demo_Vector* a_pValue, OpcUa_Decoder* a_pDecoder)
{
OpcUa_InitializeStatus(OpcUa_Module_Serializer, "Vector_Decode");
OpcUa_ReturnErrorIfArgumentNull(a_pValue);
OpcUa_ReturnErrorIfArgumentNull(a_pDecoder);
Demo_Vector_Initialize(a_pValue);
OpcUa_Field_Read(Double, x);
OpcUa_Field_Read(Double, y);
OpcUa_Field_Read(Double, z);
OpcUa_ReturnStatusCode;
OpcUa_BeginErrorHandling;
Demo_Vector_Clear(a_pValue);
OpcUa_FinishErrorHandling;
}
#if OPCUA_ENCODEABLE_OBJECT_COMPARE_SUPPORTED
OPCUA_EXPORT OpcUa_Int Demo_Vector_Compare(const Demo_Vector* a_pValue1, const Demo_Vector* a_pValue2)
{
if (a_pValue1 == a_pValue2)
{
return 0;
}
OpcUa_Field_Compare(Double, x);
OpcUa_Field_Compare(Double, y);
OpcUa_Field_Compare(Double, z);
return 0;
}
#endif
#if OPCUA_ENCODEABLE_OBJECT_COPY_SUPPORTED
OPCUA_EXPORT OpcUa_StatusCode Demo_Vector_Copy(const Demo_Vector* a_pSource, Demo_Vector** a_ppCopy)
{
OpcUa_InitializeStatus(OpcUa_Module_ProxyStub, "Vector_Copy");
OpcUa_ReturnErrorIfArgumentNull(a_pSource);
OpcUa_ReturnErrorIfArgumentNull(a_ppCopy);
*a_ppCopy = OpcUa_Alloc(sizeof( Demo_Vector ));
OpcUa_GotoErrorIfAllocFailed((*a_ppCopy));
uStatus = Demo_Vector_CopyTo(a_pSource, *a_ppCopy);
OpcUa_GotoErrorIfBad(uStatus);
OpcUa_ReturnStatusCode;
OpcUa_BeginErrorHandling;
if (*a_ppCopy != OpcUa_Null)
{
OpcUa_Free(*a_ppCopy);
*a_ppCopy = OpcUa_Null;
}
OpcUa_FinishErrorHandling;
}
OPCUA_EXPORT OpcUa_StatusCode Demo_Vector_CopyTo(const Demo_Vector* a_pSource, Demo_Vector* a_pDestination)
{
OpcUa_InitializeStatus(OpcUa_Module_ProxyStub, "Vector_CopyTo");
OpcUa_ReturnErrorIfArgumentNull(a_pSource);
OpcUa_ReturnErrorIfArgumentNull(a_pDestination);
Demo_Vector_Initialize(a_pDestination);
OpcUa_Field_CopyToScalar(Double, x);
OpcUa_Field_CopyToScalar(Double, y);
OpcUa_Field_CopyToScalar(Double, z);
OpcUa_ReturnStatusCode;
OpcUa_BeginErrorHandling;
Demo_Vector_Clear(a_pDestination);
OpcUa_FinishErrorHandling;
}
#endif
struct _OpcUa_EncodeableType Demo_Vector_EncodeableType =
{
#if !OPCUA_ENCODEABLE_OBJECT_OMIT_TYPE_NAME
"Vector",
#endif
Demo_VectorId,
Demo_Vector_Encoding_DefaultBinary,
Demo_Vector_Encoding_DefaultXml,
Demo_NamespaceUri1,
sizeof(Demo_Vector),
(OpcUa_EncodeableObject_PfnInitialize*)Demo_Vector_Initialize,
(OpcUa_EncodeableObject_PfnClear*)Demo_Vector_Clear,
(OpcUa_EncodeableObject_PfnGetSize*)Demo_Vector_GetSize,
(OpcUa_EncodeableObject_PfnEncode*)Demo_Vector_Encode,
(OpcUa_EncodeableObject_PfnDecode*)Demo_Vector_Decode
#if OPCUA_ENCODEABLE_OBJECT_COMPARE_SUPPORTED
,(OpcUa_EncodeableObject_PfnCompare*)Demo_Vector_Compare
#endif
#if OPCUA_ENCODEABLE_OBJECT_COPY_SUPPORTED
,(OpcUa_EncodeableObject_PfnCopy*)Demo_Vector_Copy,
(OpcUa_EncodeableObject_PfnCopyTo*)Demo_Vector_CopyTo
#endif
};
#endif
static OpcUa_EncodeableType* g_Demo_KnownEncodeableTypes[] =
{
#ifndef OPCUA_EXCLUDE_Demo_Vector
&Demo_Vector_EncodeableType,
#endif
OpcUa_Null
};
OpcUa_EncodeableType** Demo_KnownEncodeableTypes = g_Demo_KnownEncodeableTypes;