瀏覽代碼

modified spec #117 to run closer to the predefined ns0

Leon Urbas 9 年之前
父節點
當前提交
2ef12231cc
共有 2 個文件被更改,包括 36 次插入11 次删除
  1. 10 0
      CMakeLists.txt
  2. 26 11
      examples/api-design/server.c

+ 10 - 0
CMakeLists.txt

@@ -168,6 +168,16 @@ if(MULTITHREADING)
     target_link_libraries(exampleServer urcu-cds urcu)
 endif(MULTITHREADING)
 
+# build api server specificaion
+add_executable(api-design examples/api-design/server.c)
+target_link_libraries(api-design open62541)
+if(WIN32)
+    target_link_libraries(api-design ws2_32)
+endif(WIN32)
+if(MULTITHREADING)
+    target_link_libraries(api-design urcu-cds urcu)
+endif(MULTITHREADING)
+
 # generate documentation
 option(GENERATE_DOCUMENTATION "Generate doxygen documentation" OFF)
 if(GENERATE_DOCUMENTATION)

+ 26 - 11
examples/api-design/server.c

@@ -4,27 +4,42 @@
 
 #include "open62541-ns0-pico.h" // UA_NamespaceZero_Static
 
-int main(int argc, char ** argv) {
-	UA_Server *server;
-	UA_Server_new(&server);
-
-	#define PORT 1234
-	#define MAX_CONNECTIONS 1024
-	UA_TcpNetworkLayer_new(&server.configuration.networklayer, PORT, MAX_CONNECTIONS);
+#define PORT 1234
+#define MAX_CONNECTIONS 1024
 
+int main(int argc, char ** argv) {
+	// Set up UA_Application
 	UA_Application *application;
-	UA_Application_new(&application, UA_STRING_STATIC("MyApplication"));
+	UA_Application_new(&application);
+
+	// Set up namespace Zero and typical application parameters
 	UA_Application_addNamespace(application, 0, &UA_NamespaceZero_Static);
+
+	UA_ApplicationDescription *applicationDescription;
+	UA_Application_new(&applicationDescription);
+	UA_ApplicationDescription_setApplicationName("Application");
+	UA_ApplicationDescription_setApplicationUri("http://open62541.org/api-design/");
+	UA_Application_setVariableNodeNS0(application, UA_APPLICATIONDESCRIPTION_NS0, applicationDescription);
+
+	// Set up application specific namespace
 	UA_Application_addNamespace(application, 1, UA_NULL);
-	UA_Server_addApplication(server, application);
 
 	UA_Int32 myInteger = 0;
 	UA_NodeId myIntegerNode = {1, UA_NODEIDTYPE_NUMERIC, 50};
 	UA_Application_addVariableNode(application, &myIntegerNode, UA_INT32, &myInteger);
 
-	UA_Server_start(server); // runs a loop until shutdown is triggered
-	UA_Application_delete(application);
+	// Set up server with network layer and add application
+	UA_Server *server;
+	UA_Server_new(&server);
+	UA_TcpNetworkLayer_new(&server.configuration.networklayer, PORT, MAX_CONNECTIONS);
+	UA_Server_addApplication(server, application);
+
+	// Run server
+	UA_Server_start(server);
+
+	// Clean up (? first server then application ?)
 	UA_Server_delete(server);
+	UA_Application_delete(application);
 
 	return 0;
 }