#include <uaserver_config.h>
#include <opcua_platformdefs.h>
#include <opcua_statuscodes.h>
#include <uaserver_basenode.h>
#include <uaserver_utilities.h>
#include <uaserver_p_atomic.h>
#include <uaserver_call.h>
#include "uaprovider_demo_helper.h"
#include "uaprovider_demo_types_1.h"
#include "uaprovider_demo_boilertype_methods.h"
#include "uaprovider_demo_methods_1.h"
#include "uaprovider_demo_identifiers_1.h"
OPCUA_BEGIN_EXTERN_C
OpcUa_StatusCode UaProvider_Demo_BoilerType_CallFill(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 1)
{
OpcUa_Double SetPoint;
OpcUa_Variant *pArgument0 = &a_pRequest->InputArguments[0];
if (!pArgument0 || pArgument0->Datatype != OpcUaType_Double)
{
return OpcUa_BadInvalidArgument;
}
SetPoint = pArgument0->Value.Double;
ret = UaProvider_Demo_BoilerType_Fill(a_pCallContext, &a_pRequest->ObjectId, SetPoint);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_BoilerType_CallHeat(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 1)
{
OpcUa_Double Setpoint;
OpcUa_Variant *pArgument0 = &a_pRequest->InputArguments[0];
if (!pArgument0 || pArgument0->Datatype != OpcUaType_Double)
{
return OpcUa_BadInvalidArgument;
}
Setpoint = pArgument0->Value.Double;
ret = UaProvider_Demo_BoilerType_Heat(a_pCallContext, &a_pRequest->ObjectId, Setpoint);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Has3ForwardReferences2_CallMethod1(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_Has3ForwardReferences2_Method1(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Has3ForwardReferences2_CallMethod2(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_Has3ForwardReferences2_Method2(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Has3ForwardReferences2_CallMethod3(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_Has3ForwardReferences2_Method3(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Has3ForwardReferences5_CallReferencedNode3(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_Has3ForwardReferences5_ReferencedNode3(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_NodeClasses_CallMethod(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_NodeClasses_Method(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_DynamicNodes_CallCreateDynamicNode(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_DynamicNodes_CreateDynamicNode(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_DynamicNodes_CallDeleteDynamicNode(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_DynamicNodes_DeleteDynamicNode(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_History_CallStartLogging(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_History_StartLogging(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_History_CallStopLogging(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_History_StopLogging(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Method_CallMultiply(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 2)
{
OpcUa_Double a;
OpcUa_Double b;
OpcUa_Double result;
OpcUa_Variant *pArgument0 = &a_pRequest->InputArguments[0];
OpcUa_Variant *pArgument1 = &a_pRequest->InputArguments[1];
if (!pArgument0 || pArgument0->Datatype != OpcUaType_Double
|| !pArgument1 || pArgument1->Datatype != OpcUaType_Double)
{
return OpcUa_BadInvalidArgument;
}
a = pArgument0->Value.Double;
b = pArgument1->Value.Double;
ret = UaProvider_Demo_Method_Multiply(a_pCallContext, &a_pRequest->ObjectId, a, b, &result);
a_pResult->StatusCode = ret;
if (OpcUa_IsBad(ret)) return ret;
a_pResult->NoOfOutputArguments = 1;
a_pResult->OutputArguments = (OpcUa_Variant *)OpcUa_Alloc(1 * sizeof(OpcUa_Variant));
if ( a_pResult->OutputArguments )
{
OpcUa_Variant_Initialize(&a_pResult->OutputArguments[0]);
a_pResult->OutputArguments[0].Datatype = OpcUaType_Double;
a_pResult->OutputArguments[0].Value.Double = result;
}
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Method_CallVectorAdd(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 2)
{
Demo_Vector *v1;
Demo_Vector *v2;
Demo_Vector result;
Demo_Vector *presult;
OpcUa_Variant *pArgument0 = &a_pRequest->InputArguments[0];
OpcUa_Variant *pArgument1 = &a_pRequest->InputArguments[1];
if (!pArgument0 || pArgument0->Datatype != OpcUaType_ExtensionObject
|| !pArgument0->Value.ExtensionObject
|| pArgument0->Value.ExtensionObject->Encoding != OpcUa_ExtensionObjectEncoding_EncodeableObject
|| !pArgument0->Value.ExtensionObject->Body.EncodeableObject.Type
|| pArgument0->Value.ExtensionObject->Body.EncodeableObject.Type->TypeId != Demo_VectorId
|| !pArgument1 || pArgument1->Datatype != OpcUaType_ExtensionObject
|| !pArgument1->Value.ExtensionObject
|| pArgument1->Value.ExtensionObject->Encoding != OpcUa_ExtensionObjectEncoding_EncodeableObject
|| !pArgument1->Value.ExtensionObject->Body.EncodeableObject.Type
|| pArgument1->Value.ExtensionObject->Body.EncodeableObject.Type->TypeId != Demo_VectorId)
{
return OpcUa_BadInvalidArgument;
}
v1 = pArgument0->Value.ExtensionObject->Body.EncodeableObject.Object;
v2 = pArgument1->Value.ExtensionObject->Body.EncodeableObject.Object;
ret = UaProvider_Demo_Method_VectorAdd(a_pCallContext, &a_pRequest->ObjectId, v1, v2, &result);
a_pResult->StatusCode = ret;
if (OpcUa_IsBad(ret)) return ret;
a_pResult->NoOfOutputArguments = 1;
a_pResult->OutputArguments = (OpcUa_Variant *)OpcUa_Alloc(1 * sizeof(OpcUa_Variant));
if ( a_pResult->OutputArguments )
{
OpcUa_Variant_Initialize(&a_pResult->OutputArguments[0]);
a_pResult->OutputArguments[0].Datatype = OpcUaType_ExtensionObject;
a_pResult->OutputArguments[0].Value.ExtensionObject = (OpcUa_ExtensionObject*)OpcUa_Alloc(sizeof(OpcUa_ExtensionObject));
OpcUa_ExtensionObject_Initialize(a_pResult->OutputArguments[0].Value.ExtensionObject);
OpcUa_EncodeableObject_CreateExtension(&Demo_Vector_EncodeableType, a_pResult->OutputArguments[0].Value.ExtensionObject, (OpcUa_Void**)&presult);
Demo_Vector_CopyTo(&result, presult);
Demo_Vector_Clear(&result);
}
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Demo_CallSetSimulationSpeed(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 1)
{
OpcUa_UInt32 speed;
OpcUa_Variant *pArgument0 = &a_pRequest->InputArguments[0];
if (!pArgument0 || pArgument0->Datatype != OpcUaType_UInt32)
{
return OpcUa_BadInvalidArgument;
}
speed = pArgument0->Value.UInt32;
ret = UaProvider_Demo_Demo_SetSimulationSpeed(a_pCallContext, &a_pRequest->ObjectId, speed);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Demo_CallStartSimulation(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_Demo_StartSimulation(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Demo_CallStopSimulation(
UaServer_ProviderCallContext* a_pCallContext, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
OpcUa_StatusCode ret = OpcUa_Good;
if (a_pRequest->NoOfInputArguments == 0)
{
ret = UaProvider_Demo_Demo_StopSimulation(a_pCallContext, &a_pRequest->ObjectId);
a_pResult->StatusCode = ret;
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return ret;
}
#if UASERVER_SUPPORT_EVENTS
OpcUa_StatusCode UaProvider_Demo_CallAcknowledge(
UaServer_Event *a_pEvent, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
if (a_pRequest->NoOfInputArguments == 2)
{
a_pResult->StatusCode = OpcUa_Good;
a_pResult->NoOfInputArgumentResults = 2;
a_pResult->InputArgumentResults = (OpcUa_StatusCode*)OpcUa_Alloc(a_pResult->NoOfInputArgumentResults * sizeof(OpcUa_StatusCode));
OpcUa_MemSet(a_pResult->InputArgumentResults, 0, a_pResult->NoOfInputArgumentResults * sizeof(OpcUa_StatusCode));
if (a_pRequest->InputArguments[0].Datatype != OpcUaType_ByteString
|| a_pRequest->InputArguments[0].ArrayType != OpcUa_VariantArrayType_Scalar)
{
a_pResult->InputArgumentResults[0] = OpcUa_BadTypeMismatch;
a_pResult->StatusCode = OpcUa_BadTypeMismatch;
}
if (a_pRequest->InputArguments[1].Datatype != OpcUaType_LocalizedText
|| a_pRequest->InputArguments[1].ArrayType != OpcUa_VariantArrayType_Scalar)
{
a_pResult->InputArgumentResults[1] = OpcUa_BadTypeMismatch;
a_pResult->StatusCode = OpcUa_BadTypeMismatch;
}
if (OpcUa_IsGood(a_pResult->StatusCode))
{
if (OpcUa_ByteString_Compare(pEventId, &a_pRequest->InputArguments[0].Value.ByteString) != 0)
{
a_pResult->StatusCode = OpcUa_BadEventIdUnknown;
}
}
if (OpcUa_IsGood(a_pResult->StatusCode))
{
a_pResult->StatusCode = OpcUa_BadConditionBranchAlreadyAcked;
if (pAckedState != OpcUa_Null
&& pAckedState->Datatype == OpcUaType_Boolean
&& pAckedState->ArrayType == OpcUa_VariantArrayType_Scalar
&& pAckedState->Value.Boolean == OpcUa_False)
{
a_pResult->StatusCode = OpcUa_Good;
}
}
if (OpcUa_IsGood(a_pResult->StatusCode))
{
OpcUa_Variant value;
OpcUa_NodeId *pSourceNode;
OpcUa_Variant_Initialize(&value);
value.Datatype = OpcUaType_LocalizedText;
value.Value.LocalizedText = (OpcUa_LocalizedText*)OpcUa_Alloc(sizeof(OpcUa_LocalizedText));
OpcUa_LocalizedText_Initialize(value.Value.LocalizedText);
OpcUa_String_StrnCat(&value.Value.LocalizedText->Text, OpcUa_String_FromCString("Acknowledged"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_Boolean;
value.Value.Boolean = OpcUa_True;
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_DateTime;
value.Value.DateTime = OpcUa_DateTime_UtcNow();
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_LocalizedText;
value.Value.LocalizedText = (OpcUa_LocalizedText*)OpcUa_Alloc(sizeof(OpcUa_LocalizedText));
OpcUa_LocalizedText_Initialize(value.Value.LocalizedText);
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_DateTime;
value.Value.DateTime = OpcUa_DateTime_UtcNow();
OpcUa_Variant_Clear(&value);
if (pSourceNode != OpcUa_Null)
{
OpcUa_BaseNode *pBaseNode;
if (pBaseNode != OpcUa_Null)
{
}
}
}
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return OpcUa_Good;
}
OpcUa_StatusCode UaProvider_Demo_CallConfirm(
UaServer_Event *a_pEvent, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
if (a_pRequest->NoOfInputArguments == 2)
{
a_pResult->StatusCode = OpcUa_Good;
a_pResult->NoOfInputArgumentResults = 2;
a_pResult->InputArgumentResults = (OpcUa_StatusCode*)OpcUa_Alloc(a_pResult->NoOfInputArgumentResults * sizeof(OpcUa_StatusCode));
OpcUa_MemSet(a_pResult->InputArgumentResults, 0, a_pResult->NoOfInputArgumentResults * sizeof(OpcUa_StatusCode));
if (a_pRequest->InputArguments[0].Datatype != OpcUaType_ByteString
|| a_pRequest->InputArguments[0].ArrayType != OpcUa_VariantArrayType_Scalar)
{
a_pResult->InputArgumentResults[0] = OpcUa_BadTypeMismatch;
a_pResult->StatusCode = OpcUa_BadTypeMismatch;
}
if (a_pRequest->InputArguments[1].Datatype != OpcUaType_LocalizedText
|| a_pRequest->InputArguments[1].ArrayType != OpcUa_VariantArrayType_Scalar)
{
a_pResult->InputArgumentResults[1] = OpcUa_BadTypeMismatch;
a_pResult->StatusCode = OpcUa_BadTypeMismatch;
}
if (OpcUa_IsGood(a_pResult->StatusCode))
{
if (OpcUa_ByteString_Compare(pEventId, &a_pRequest->InputArguments[0].Value.ByteString) != 0)
{
a_pResult->StatusCode = OpcUa_BadEventIdUnknown;
}
}
if (OpcUa_IsGood(a_pResult->StatusCode))
{
a_pResult->StatusCode = OpcUa_BadConditionBranchAlreadyConfirmed;
if (pAckedState != OpcUa_Null
&& pAckedState->Datatype == OpcUaType_Boolean
&& pAckedState->ArrayType == OpcUa_VariantArrayType_Scalar
&& pAckedState->Value.Boolean == OpcUa_False)
{
a_pResult->StatusCode = OpcUa_Good;
}
}
if (OpcUa_IsGood(a_pResult->StatusCode))
{
OpcUa_Variant value;
OpcUa_NodeId *pSourceNode;
OpcUa_Variant_Initialize(&value);
value.Datatype = OpcUaType_LocalizedText;
value.Value.LocalizedText = (OpcUa_LocalizedText*)OpcUa_Alloc(sizeof(OpcUa_LocalizedText));
OpcUa_LocalizedText_Initialize(value.Value.LocalizedText);
OpcUa_String_StrnCat(&value.Value.LocalizedText->Text, OpcUa_String_FromCString("Confirmed"), OPCUA_STRING_LENDONTCARE);
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_Boolean;
value.Value.Boolean = OpcUa_True;
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_DateTime;
value.Value.DateTime = OpcUa_DateTime_UtcNow();
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_LocalizedText;
value.Value.LocalizedText = (OpcUa_LocalizedText*)OpcUa_Alloc(sizeof(OpcUa_LocalizedText));
OpcUa_LocalizedText_Initialize(value.Value.LocalizedText);
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_DateTime;
value.Value.DateTime = OpcUa_DateTime_UtcNow();
OpcUa_Variant_Clear(&value);
if (pSourceNode != OpcUa_Null)
{
OpcUa_BaseNode *pBaseNode;
if (pBaseNode != OpcUa_Null)
{
}
}
}
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return OpcUa_Good;
}
OpcUa_StatusCode UaProvider_Demo_CallAddComment(
UaServer_Event *a_pEvent, OpcUa_CallMethodRequest* a_pRequest, OpcUa_CallMethodResult* a_pResult)
{
if (a_pRequest->NoOfInputArguments == 2)
{
a_pResult->StatusCode = OpcUa_Good;
a_pResult->NoOfInputArgumentResults = 2;
a_pResult->InputArgumentResults = (OpcUa_StatusCode*)OpcUa_Alloc(a_pResult->NoOfInputArgumentResults * sizeof(OpcUa_StatusCode));
OpcUa_MemSet(a_pResult->InputArgumentResults, 0, a_pResult->NoOfInputArgumentResults * sizeof(OpcUa_StatusCode));
if (a_pRequest->InputArguments[0].Datatype != OpcUaType_ByteString
|| a_pRequest->InputArguments[0].ArrayType != OpcUa_VariantArrayType_Scalar)
{
a_pResult->InputArgumentResults[0] = OpcUa_BadTypeMismatch;
a_pResult->StatusCode = OpcUa_BadTypeMismatch;
}
if (a_pRequest->InputArguments[1].Datatype != OpcUaType_LocalizedText
|| a_pRequest->InputArguments[1].ArrayType != OpcUa_VariantArrayType_Scalar)
{
a_pResult->InputArgumentResults[1] = OpcUa_BadTypeMismatch;
a_pResult->StatusCode = OpcUa_BadTypeMismatch;
}
if (OpcUa_IsGood(a_pResult->StatusCode))
{
if (OpcUa_ByteString_Compare(pEventId, &a_pRequest->InputArguments[0].Value.ByteString) != 0)
{
a_pResult->StatusCode = OpcUa_BadEventIdUnknown;
}
}
if (OpcUa_IsGood(a_pResult->StatusCode))
{
OpcUa_Variant value;
OpcUa_NodeId *pSourceNode;
OpcUa_Variant_Initialize(&value);
value.Datatype = OpcUaType_LocalizedText;
value.Value.LocalizedText = (OpcUa_LocalizedText*)OpcUa_Alloc(sizeof(OpcUa_LocalizedText));
OpcUa_LocalizedText_Initialize(value.Value.LocalizedText);
OpcUa_Variant_Clear(&value);
value.Datatype = OpcUaType_DateTime;
value.Value.DateTime = OpcUa_DateTime_UtcNow();
OpcUa_Variant_Clear(&value);
if (pSourceNode != OpcUa_Null)
{
OpcUa_BaseNode *pBaseNode;
if (pBaseNode != OpcUa_Null)
{
}
}
}
}
else
{
a_pResult->StatusCode = OpcUa_BadArgumentsMissing;
}
return OpcUa_Good;
}
#endif
{
OpcUa_CallRequest *pRequest;
OpcUa_CallResponse *pResponse;
OpcUa_Int32 i;
OpcUa_NodeId *pMethodId = OpcUa_Null;
OpcUa_BaseNode *pNode = OpcUa_Null;
OpcUa_ReturnErrorIfArgumentNull(a_pCallContext);
for (i = 0; i < pRequest->NoOfMethodsToCall; i++)
{
if (pRequest->MethodsToCall[i].MethodId.NamespaceIndex == g_UaProviderDemo_uNamespaceIndex1)
{
pMethodId = &(pRequest->MethodsToCall[i].MethodId);
if (pNode == 0)
{
pResponse->Results[i].StatusCode = OpcUa_BadNodeIdUnknown;
continue;
}
#if UASERVER_SUPPORT_AUTHORIZATION
{
pResponse->Results[i].StatusCode = OpcUa_BadUserAccessDenied;
continue;
}
#endif
if (pMethodId->IdentifierType == OpcUa_IdentifierType_Numeric)
{
switch (pMethodId->Identifier.Numeric)
{
case Demo_BoilerType_FillId:
UaProvider_Demo_BoilerType_CallFill(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
break;
case Demo_BoilerType_HeatId:
UaProvider_Demo_BoilerType_CallHeat(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
break;
case Demo_Objects_Demo_CTT_References_Has3ForwardReferences2_Method1:
UaProvider_Demo_Has3ForwardReferences2_CallMethod1(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
break;
case Demo_Objects_Demo_CTT_References_Has3ForwardReferences2_Method2:
UaProvider_Demo_Has3ForwardReferences2_CallMethod2(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
break;
case Demo_Objects_Demo_CTT_References_Has3ForwardReferences2_Method3:
UaProvider_Demo_Has3ForwardReferences2_CallMethod3(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
break;
case Demo_Objects_Demo_CTT_References_Has3ForwardReferences5_ReferencedNode3:
UaProvider_Demo_Has3ForwardReferences5_CallReferencedNode3(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
break;
default:
break;
}
}
else if (pMethodId->IdentifierType == OpcUa_IdentifierType_String)
{
if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_BoilerDemo_Boiler1_Fill) == 0)
{
UaProvider_Demo_BoilerType_CallFill(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_BoilerDemo_Boiler1_Heat) == 0)
{
UaProvider_Demo_BoilerType_CallHeat(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_CTT_NodeClasses_Method) == 0)
{
UaProvider_Demo_NodeClasses_CallMethod(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_DynamicNodes_CreateDynamicNode) == 0)
{
UaProvider_Demo_DynamicNodes_CallCreateDynamicNode(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_DynamicNodes_DeleteDynamicNode) == 0)
{
UaProvider_Demo_DynamicNodes_CallDeleteDynamicNode(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_History_StartLogging) == 0)
{
UaProvider_Demo_History_CallStartLogging(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_History_StopLogging) == 0)
{
UaProvider_Demo_History_CallStopLogging(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_Method_Multiply) == 0)
{
UaProvider_Demo_Method_CallMultiply(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_Method_VectorAdd) == 0)
{
UaProvider_Demo_Method_CallVectorAdd(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_SetSimulationSpeed) == 0)
{
UaProvider_Demo_Demo_CallSetSimulationSpeed(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_StartSimulation) == 0)
{
UaProvider_Demo_Demo_CallStartSimulation(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
else if(OpcUa_StrCmpA(OpcUa_String_GetRawString(&pMethodId->Identifier.String), Demo_Objects_Demo_StopSimulation) == 0)
{
UaProvider_Demo_Demo_CallStopSimulation(a_pCallContext, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
}
}
#if UASERVER_SUPPORT_EVENTS
else if (pRequest->MethodsToCall[i].ObjectId.NamespaceIndex == g_UaProviderDemo_uNamespaceIndex1
&& pRequest->MethodsToCall[i].MethodId.NamespaceIndex == 0
&& pRequest->MethodsToCall[i].MethodId.IdentifierType == OpcUa_IdentifierType_Numeric)
{
switch (pRequest->MethodsToCall[i].MethodId.Identifier.Numeric)
{
case OpcUaId_AcknowledgeableConditionType_Acknowledge:
{
&pRequest->MethodsToCall[i].ObjectId);
if (pEvent != OpcUa_Null)
{
UaProvider_Demo_CallAcknowledge(pEvent, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
break;
}
case OpcUaId_AcknowledgeableConditionType_Confirm:
{
&pRequest->MethodsToCall[i].ObjectId);
if (pEvent != OpcUa_Null)
{
UaProvider_Demo_CallConfirm(pEvent, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
break;
}
case OpcUaId_ConditionType_AddComment:
{
&pRequest->MethodsToCall[i].ObjectId);
if (pEvent != OpcUa_Null)
{
UaProvider_Demo_CallAddComment(pEvent, &pRequest->MethodsToCall[i], &pResponse->Results[i]);
}
break;
}
default:
break;
}
}
#endif
}
return OpcUa_Good;
}
OPCUA_END_EXTERN_C