this is a first prototype of a server that which namespace is created from a nodeset XML file automatically

@ichrispa @FlorianPalm @jpfr relates to #303
This commit is contained in:
Stasik0
2015-08-07 19:20:37 +02:00
parent f04f170e82
commit d8e71ee608
4 changed files with 1622 additions and 1 deletions
+18 -1
View File
@@ -1,4 +1,5 @@
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_BINARY_DIR}/src_generated)
set(LIBS open62541)
if(NOT WIN32)
@@ -16,7 +17,23 @@ target_link_libraries(server_variable ${LIBS})
add_executable(server_repeated_job server_repeated_job.c)
target_link_libraries(server_repeated_job ${LIBS})
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/nodeset.h ${PROJECT_BINARY_DIR}/src_generated/nodeset.c
PRE_BUILD
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/generate_open62541CCode.py -i ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/NodeID_Blacklist_FullNS0.txt ${PROJECT_SOURCE_DIR}/tools/schema/namespace0/Opc.Ua.NodeSet2.xml ${PROJECT_SOURCE_DIR}/examples/server_nodeset.xml ${PROJECT_BINARY_DIR}/src_generated/nodeset
DEPENDS ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/generate_open62541CCode.py
${PROJECT_SOURCE_DIR}/tools/pyUANamespace/logger.py
${PROJECT_SOURCE_DIR}/tools/pyUANamespace/open62541_MacroHelper.py
${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_builtin_types.py
${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_constants.py
${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_namespace.py
${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_node_types.py
${PROJECT_SOURCE_DIR}/tools/pyUANamespace/NodeID_Blacklist_FullNS0.txt
${PROJECT_SOURCE_DIR}/examples/server_nodeset.xml)
add_executable(server_nodeset server_nodeset.c ${PROJECT_BINARY_DIR}/src_generated/nodeset.c)
target_link_libraries(server_nodeset ${LIBS})
if(ENABLE_METHODCALLS)
add_executable(server_method server_method.c)
target_link_libraries(server_method ${LIBS})
endif()
endif()
+47
View File
@@ -0,0 +1,47 @@
/*
* This work is licensed under a Creative Commons CCZero 1.0 Universal License.
* See http://creativecommons.org/publicdomain/zero/1.0/ for more information.
*/
#include <signal.h>
#include <stdlib.h>
#ifdef UA_NO_AMALGAMATION
# include "ua_types.h"
# include "ua_server.h"
# include "logger_stdout.h"
# include "networklayer_tcp.h"
#else
# include "open62541.h"
#endif
/* files nodeset.h and nodeset.c are created from server_nodeset.xml in the /src_generated directory by CMake */
#include "nodeset.h"
UA_Boolean running = UA_TRUE;
UA_Logger logger;
static void stopHandler(int sign) {
UA_LOG_INFO(logger, UA_LOGCATEGORY_SERVER, "received ctrl-c");
running = 0;
}
int main(int argc, char** argv) {
signal(SIGINT, stopHandler); /* catches ctrl-c */
/* initialize the server */
UA_Server *server = UA_Server_new(UA_ServerConfig_standard);
logger = Logger_Stdout_new();
UA_Server_setLogger(server, logger);
UA_Server_addNetworkLayer(server, ServerNetworkLayerTCP_new(UA_ConnectionConfig_standard, 16664));
/* create nodes from nodeset */
nodeset(server);
/* start server */
UA_StatusCode retval = UA_Server_run(server, 1, &running); //blocks until running=false
/* ctrl-c received -> clean up */
UA_Server_delete(server);
return retval;
}
+43
View File
@@ -0,0 +1,43 @@
<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:s1="http://yourorganisation.org/test/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<NamespaceUris>
<Uri>http://yourorganisation.org/test/</Uri>
</NamespaceUris>
<Aliases>
<Alias Alias="Double">i=11</Alias>
<Alias Alias="Organizes">i=35</Alias>
<Alias Alias="HasModellingRule">i=37</Alias>
<Alias Alias="HasTypeDefinition">i=40</Alias>
<Alias Alias="HasSubtype">i=45</Alias>
<Alias Alias="HasComponent">i=47</Alias>
</Aliases>
<UAObjectType NodeId="ns=1;i=1001" BrowseName="1:testType">
<DisplayName>testType</DisplayName>
<References>
<Reference ReferenceType="HasSubtype" IsForward="false">i=58</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6001</Reference>
</References>
</UAObjectType>
<UAVariable DataType="Double" ParentNodeId="ns=1;i=1001" NodeId="ns=1;i=6001" BrowseName="1:Var1" UserAccessLevel="3" AccessLevel="3">
<DisplayName>Var1</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasModellingRule">i=78</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=1001</Reference>
</References>
</UAVariable>
<UAObject NodeId="ns=1;i=5001" BrowseName="1:testInstance">
<DisplayName>testInstance</DisplayName>
<References>
<Reference ReferenceType="Organizes" IsForward="false">i=85</Reference>
<Reference ReferenceType="HasTypeDefinition">ns=1;i=1001</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6002</Reference>
</References>
</UAObject>
<UAVariable DataType="Double" ParentNodeId="ns=1;i=5001" NodeId="ns=1;i=6002" BrowseName="1:Var1" UserAccessLevel="3" AccessLevel="3">
<DisplayName>Var1</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5001</Reference>
</References>
</UAVariable>
</UANodeSet>
File diff suppressed because it is too large Load Diff