UA ANSI C Server Professional  1.4.0.285
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
uaprovider_demo_methods_1.c
/******************************************************************************
**
** **************************** auto-generated ****************************
** This code was generated by a tool: UaModeler
** Runtime Version: 1.2.0, using ANSI C DemoProvider 1.4.0 template
**
** This is a template file that was generated for your convenience.
** This file will not be overwritten when generating code again.
** ADD YOUR IMPLEMTATION HERE!
** **************************** auto-generated ****************************
** Copyright (c) 2006-2014 Unified Automation GmbH All rights reserved.
** Web: http://www.unifiedautomation.com
**
** Software License Agreement ("SLA") Version 2.3
**
** Unless explicitly acquired and licensed from Licensor under another
** license, the contents of this file are subject to the Software License
** Agreement ("SLA") Version 2.3, or subsequent versions
** as allowed by the SLA, and You may not copy or use this file in either
** source code or executable form, except in compliance with the terms and
** conditions of the SLA.
**
** All software distributed under the SLA is provided strictly on an
** "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
** AND LICENSOR HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
** LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
** PURPOSE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. See the SLA for specific
** language governing rights and limitations under the SLA.
**
** Project: OPC Ansi C DemoProvider for namespace http://www.unifiedautomation.com/DemoServer/
**
** Description: OPC Unified Architecture Software Development Kit.
**
** The complete license agreement can be found here:
** http://unifiedautomation/License/SLA/2.3/
**
** Created: 30.01.2014
**
******************************************************************************/
#include "uaprovider_demo_methods_1.h"
#include <opcua_guid.h>
#include <opcua_statuscodes.h>
#include "uaprovider_demo_simulation.h"
#include "uaprovider_demo_identifiers_1.h"
/* dynamic node variables */
static int g_iDynNodeId = 8001;
static OpcUa_Boolean g_bDynNodeIdExists = OpcUa_False;
static OpcUa_UInt32 iNodeVersion = 0;
OpcUa_StatusCode UaProvider_Demo_Has3ForwardReferences2_Method1(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Has3ForwardReferences2_Method2(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Has3ForwardReferences2_Method3(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Has3ForwardReferences5_ReferencedNode3(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
return ret;
}
OpcUa_StatusCode UaProvider_Demo_NodeClasses_Method(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
return ret;
}
OpcUa_StatusCode UaProvider_Demo_DynamicNodes_CreateDynamicNode(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_Property *pNode = OpcUa_Null;
OpcUa_BaseNode *pParentNode = OpcUa_Null;
OpcUa_NodeId nodeId, *pNodeId = OpcUa_Null;
UaServer_AddressSpace *pAddressSpace = &g_pDemoProvider->AddressSpace;
OpcUa_Variant *pValue = OpcUa_Null;
char szVersion[11];
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
if (g_bDynNodeIdExists) return OpcUa_BadInvalidState;
UaServer_SetDefaultNamespace(g_UaProviderDemo_uNamespaceIndex1);
UaServer_CreateNumericNodeId(&nodeId, g_iDynNodeId);
UaServer_GetNode(pAddressSpace, &nodeId, (OpcUa_BaseNode**)&pNode);
UaServer_CreateStringNodeId(&nodeId, Demo_Objects_Demo_DynamicNodes);
UaServer_GetNode(pAddressSpace, &nodeId, (OpcUa_BaseNode**)&pParentNode);
UaServer_CreateProperty(pAddressSpace, &pNode, pParentNode, g_iDynNodeId, g_UaProviderDemo_uNamespaceIndex1, "DynamicNode");
pNodeId = OpcUa_Variable_GetDataType(pNode);
pNodeId->Identifier.Numeric = OpcUaId_UInt32;
pValue = OpcUa_Variable_GetValue(pNode);
pValue->Datatype = OpcUaType_UInt32;
pValue->Value.UInt32 = 100;
#if UASERVER_SUPPORT_EVENTS
/* send ModelChangeEvent */
UaProvider_Demo_SendModelChangeEvent(pParentNode, OpcUa_ModelChangeStructureVerbMask_ReferenceAdded);
#endif /* UASERVER_SUPPORT_EVENTS */
g_bDynNodeIdExists = OpcUa_True;
/* update NodeVersion property */
UaServer_CreateNumericNodeIdEx(&nodeId, Demo_Objects_Demo_DynamicNodes_NodeVersion, g_UaProviderDemo_uNamespaceIndex1);
UaServer_GetNode(pAddressSpace, &nodeId, (OpcUa_BaseNode**)&pNode);
if (pNode)
{
pValue = OpcUa_Variable_GetValue(pNode);
OpcUa_String_Clear(&pValue->Value.String);
OpcUa_SnPrintfA(szVersion, 11, "%u", iNodeVersion++);
szVersion[10] = 0;
OpcUa_String_AttachCopy(&pValue->Value.String, szVersion);
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_DynamicNodes_DeleteDynamicNode(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
UaServer_AddressSpace *pAddressSpace = &g_pDemoProvider->AddressSpace;
OpcUa_Property *pNode = OpcUa_Null;
OpcUa_BaseNode *pParentNode = OpcUa_Null;
OpcUa_NodeId nodeId;
OpcUa_Variant *pValue = OpcUa_Null;
char szVersion[11];
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
if (!g_bDynNodeIdExists) return OpcUa_BadInvalidState;
UaServer_SetDefaultNamespace(g_UaProviderDemo_uNamespaceIndex1);
UaServer_CreateNumericNodeId(&nodeId, g_iDynNodeId);
UaServer_GetNode(pAddressSpace, &nodeId, (OpcUa_BaseNode**)&pNode);
UaServer_CreateStringNodeId(&nodeId, Demo_Objects_Demo_DynamicNodes);
UaServer_GetNode(pAddressSpace, &nodeId, (OpcUa_BaseNode**)&pParentNode);
/* remove node */
UaServer_RemoveNode(pAddressSpace, (OpcUa_BaseNode*)pNode);
#if UASERVER_SUPPORT_EVENTS
/* send ModelChangeEvent */
UaProvider_Demo_SendModelChangeEvent(pParentNode, OpcUa_ModelChangeStructureVerbMask_ReferenceDeleted);
#endif /* UASERVER_SUPPORT_EVENTS */
g_bDynNodeIdExists = OpcUa_False;
/* update NodeVersion property */
UaServer_CreateNumericNodeIdEx(&nodeId, Demo_Objects_Demo_DynamicNodes_NodeVersion, g_UaProviderDemo_uNamespaceIndex1);
UaServer_GetNode(pAddressSpace, &nodeId, (OpcUa_BaseNode**)&pNode);
if (pNode)
{
pValue = OpcUa_Variable_GetValue(pNode);
OpcUa_String_Clear(&pValue->Value.String);
OpcUa_SnPrintfA(szVersion, 11, "%u", iNodeVersion++);
szVersion[10] = 0;
OpcUa_String_AttachCopy(&pValue->Value.String, szVersion);
}
return ret;
}
OpcUa_StatusCode UaProvider_Demo_History_StartLogging(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
#if HAVE_DATA_LOGGER
ret = UaProvider_Demo_StartLogging();
#endif /* HAVE_DATA_LOGGER */
return ret;
}
OpcUa_StatusCode UaProvider_Demo_History_StopLogging(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
#if HAVE_DATA_LOGGER
ret = UaProvider_Demo_StopLogging();
#endif /* HAVE_DATA_LOGGER */
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Method_Multiply(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId ,
/* in */ OpcUa_Double a ,
/* in */ OpcUa_Double b ,
/* out */ OpcUa_Double *result )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
*result = a * b;
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Method_VectorAdd(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId ,
/* in */ Demo_Vector *v1,
/* in */ Demo_Vector *v2,
/* out */ Demo_Vector *result)
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
result->x = v1->x + v2->x;
result->y = v1->y + v2->y;
result->z = v1->z + v2->z;
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Demo_SetSimulationSpeed(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId ,
/* in */ OpcUa_UInt32 speed )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
ret = UaProvider_Demo_SetSimulationSpeed(speed);
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Demo_StartSimulation(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
ret = UaProvider_Demo_StartSimulation();
return ret;
}
OpcUa_StatusCode UaProvider_Demo_Demo_StopSimulation(
/* in */ UaServer_ProviderCallContext *a_pCallContext ,
/* in */ OpcUa_NodeId *pObjectId )
{
OpcUa_StatusCode ret = OpcUa_Good;
OpcUa_ReferenceParameter(a_pCallContext);
OpcUa_ReferenceParameter(pObjectId);
ret = UaProvider_Demo_StopSimulation();
return ret;
}