#include "uaprovider_demo.h"
#include <opcua_proxystub.h>
#include <opcua_errorhandling.h>
#include <opcua_identifiers.h>
#include <opcua_string.h>
#include <opcua_pki.h>
#include <opcua_trace.h>
#include <uaserver_p_utilities.h>
#include "uaprovider_demo_helper.h"
#include "uaprovider_demo_nodes_1.h"
#include "uaprovider_demo_types_1.h"
#if UASERVER_SUPPORT_EVENTS
#include "uaprovider_demo_events_1.h"
#endif
#include "uaprovider_demo_simulation.h"
OpcUa_UInt16 g_UaProviderDemo_uNamespaceIndex1 = OpcUa_UInt16_Max;
#if HAVE_ENCODING_BINARY
#define UAPROVIDER_DEMO_NUMBEROFNODES1 421
#define UAPROVIDER_DEMO_NUMBEROFREFERENCES1 884
#else
#define UAPROVIDER_DEMO_NUMBEROFNODES1 417
#define UAPROVIDER_DEMO_NUMBEROFREFERENCES1 875
#endif
#define UAPROVIDER_DEMO_NUMBEROFMETHODS1 18
#define UAPROVIDER_DEMO_HASHTABLESIZE 1009
#if UASERVER_SERVICES_HISTORYREAD
#endif
#if UASERVER_SERVICES_CALL
#endif
OpcUa_StatusCode UaProvider_Demo_Subscription_Initialize();
OpcUa_StatusCode UaProvider_Demo_Subscription_Cleanup();
IFMETHODIMP(UaProvider_Demo_Cleanup)()
{
printf("Cleanup Demo Provider ...\n");
UaProvider_Demo_StopSimulation();
UaProvider_Demo_CleanupSimulation();
UaProvider_Demo_Subscription_Cleanup();
#if UASERVER_SUPPORT_EVENTS
UaProvider_Demo_UnregisterEventTypes1();
#endif
printf("Cleanup Demo Provider DONE!\n");
return OpcUa_Good;
}
static OpcUa_StatusCode UaProvider_Demo_CreateAddressSpace()
{
OpcUa_InitializeStatus(OpcUa_Module_Server, "UaProvider_Demo_CreateAddressSpace");
uStatus = UaProvider_Demo_CreateAddressSpace1();
OpcUa_GotoErrorIfBad(uStatus);
OpcUa_ReturnStatusCode;
OpcUa_BeginErrorHandling;
OpcUa_FinishErrorHandling;
}
#if UASERVER_SUPPORT_EVENTS
static OpcUa_StatusCode UaProvider_Demo_BuildEventHierarchy()
{
OpcUa_InitializeStatus(OpcUa_Module_Server, "UaProvider_Demo_BuildEventHierarchy");
uStatus = UaProvider_Demo_BuildEventHierarchy_1();
OpcUa_GotoErrorIfBad(uStatus);
OpcUa_ReturnStatusCode;
OpcUa_BeginErrorHandling;
OpcUa_FinishErrorHandling;
}
#endif
IFMETHODIMP(UaProvider_Demo_Initialize)(
{
OpcUa_StatusCode uStatus = OpcUa_Good;
printf("Initialize Demo Provider ...\n");
g_pDemoProvider = a_pProvider;
g_pDemoProviderInterface = a_pProviderInterface;
a_pProviderInterface->Cleanup = UaProvider_Demo_Cleanup;
a_pProviderInterface->ReadAsync = UaProvider_Demo_ReadAsync;
a_pProviderInterface->WriteAsync = UaProvider_Demo_WriteAsync;
#if UASERVER_SERVICES_HISTORYREAD
a_pProviderInterface->HistoryReadRawModifiedAsync = UaProvider_Demo_HistoryReadRawModifiedAsync;
#endif
a_pProviderInterface->BrowseAsync = UaProvider_Demo_BrowseAsync;
a_pProviderInterface->TranslateAsync = UaProvider_Demo_TranslateAsync;
a_pProviderInterface->RegisterNodesAsync = UaProvider_Demo_RegisterNodesAsync;
a_pProviderInterface->UnregisterNodesAsync = UaProvider_Demo_UnregisterNodesAsync;
#if UASERVER_SERVICES_CALL
a_pProviderInterface->CallAsync = UaProvider_Demo_CallAsync;
#endif
a_pProviderInterface->AddItem = UaProvider_Demo_AddItem;
a_pProviderInterface->RemoveItem = UaProvider_Demo_RemoveItem;
a_pProviderInterface->Subscribe = UaProvider_Demo_Subscribe;
&g_UaProviderDemo_uNamespaceIndex1,
"http://www.unifiedautomation.com/DemoServer/",
UAPROVIDER_DEMO_HASHTABLESIZE);
OpcUa_ReturnErrorIfBad(uStatus);
uStatus = OpcUa_ProxyStub_AddTypes(Demo_KnownEncodeableTypes);
OpcUa_ReturnErrorIfBad(uStatus);
uStatus = UaProvider_Demo_CreateAddressSpace();
OpcUa_ReturnErrorIfBad(uStatus);
uStatus = UaProvider_Demo_Subscription_Initialize();
OpcUa_ReturnErrorIfBad(uStatus);
#if UASERVER_SUPPORT_EVENTS
UaProvider_Demo_RegisterEventTypes1();
uStatus = UaProvider_Demo_BuildEventHierarchy();
OpcUa_ReturnErrorIfBad(uStatus);
#endif
uStatus = UaProvider_Demo_InitializeSimulation();
OpcUa_ReturnErrorIfBad(uStatus);
uStatus = UaProvider_Demo_StartSimulation();
OpcUa_ReturnErrorIfBad(uStatus);
printf("Demo Provider initialized!\n");
printf(
" %d Nodes created\n", a_pProvider->
AddressSpace.uNumNodes);
printf(" NS%d:\n", g_UaProviderDemo_uNamespaceIndex1);
printf(" %d static nodes created\n", UAPROVIDER_DEMO_NUMBEROFNODES1);
printf(" %d static references created\n", UAPROVIDER_DEMO_NUMBEROFREFERENCES1);
printf(" %d static methods created\n", UAPROVIDER_DEMO_NUMBEROFMETHODS1);
return uStatus;
}
#if BUILD_SHARED_LIBS
DEMOPROVIDER_API(OpcUa_StatusCode) InitializeProvider(
{
return UaProvider_Demo_Initialize(pProvider, pProviderInterface);
}
#endif