Browse Source

Extended PubSub cmake exported header, PubSub test extended

include error adjustments
Andreas Ebner 6 years ago
parent
commit
014fe88c93

+ 6 - 6
CMakeLists.txt

@@ -389,6 +389,9 @@ set(internal_headers ${PROJECT_SOURCE_DIR}/deps/queue.h
                      ${PROJECT_SOURCE_DIR}/src/server/ua_subscription.h
                      ${PROJECT_SOURCE_DIR}/src/server/ua_session_manager.h
                      ${PROJECT_SOURCE_DIR}/src/server/ua_securechannel_manager.h
+                     ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub_networkmessage.h
+                     ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub.h
+                     ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub_manager.h
                      ${PROJECT_SOURCE_DIR}/src/server/ua_server_internal.h
                      ${PROJECT_SOURCE_DIR}/src/server/ua_services.h
                      ${PROJECT_BINARY_DIR}/src_generated/ua_namespace0.h
@@ -417,6 +420,9 @@ set(lib_sources ${PROJECT_SOURCE_DIR}/src/ua_types.c
                 ${PROJECT_SOURCE_DIR}/src/server/ua_session_manager.c
                 ${PROJECT_SOURCE_DIR}/src/server/ua_subscription.c
                 ${PROJECT_SOURCE_DIR}/src/server/ua_subscription_datachange.c
+                ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub_networkmessage.c
+                ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub.c
+                ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub_manager.c
                 # services
                 ${PROJECT_SOURCE_DIR}/src/server/ua_services_view.c
                 ${PROJECT_SOURCE_DIR}/src/server/ua_services_call.c
@@ -468,12 +474,6 @@ if(UA_ENABLE_ENCRYPTION)
 endif()
 
 if(UA_ENABLE_PUBSUB)
-    list(APPEND internal_headers ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub_networkmessage.h
-            ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub_manager.h)
-    list(APPEND lib_sources ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub_networkmessage.c
-            ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub.c
-            ${PROJECT_SOURCE_DIR}/src/pubsub/ua_pubsub_manager.c)
-
     list(APPEND default_plugin_headers ${PROJECT_SOURCE_DIR}/plugins/ua_network_pubsub_udp.h)
     list(APPEND default_plugin_sources ${PROJECT_SOURCE_DIR}/plugins/ua_network_pubsub_udp.c)
 endif()

+ 4 - 0
src/pubsub/ua_pubsub.c

@@ -12,6 +12,8 @@
 #include "ua_pubsub_manager.h"
 #include "ua_pubsub_networkmessage.h"
 
+#ifdef UA_ENABLE_PUBSUB /* conditional compilation */
+
 /**********************************************/
 /*               Connection                   */
 /**********************************************/
@@ -1038,3 +1040,5 @@ UA_WriterGroup_addPublishCallback(UA_Server *server, UA_WriterGroup *writerGroup
     UA_WriterGroup_publishCallback(server, writerGroup);
     return retval;
 }
+
+#endif /* UA_ENABLE_PUBSUB */

+ 1 - 1
src/pubsub/ua_pubsub.h

@@ -12,7 +12,7 @@
 extern "C" {
 #endif
 
-#include <queue.h>
+#include "../deps/queue.h"
 #include "ua_plugin_pubsub.h"
 #include "ua_pubsub_networkmessage.h"
 #include "ua_server.h"

+ 4 - 1
src/pubsub/ua_pubsub_manager.c

@@ -5,9 +5,10 @@
  * Copyright (c) 2017-2018 Fraunhofer IOSB (Author: Andreas Ebner)
  */
 
-#include "ua_pubsub_manager.h"
 #include "server/ua_server_internal.h"
 
+#ifdef UA_ENABLE_PUBSUB /* conditional compilation */
+
 #define UA_DATETIMESTAMP_2000 125911584000000000
 
 UA_StatusCode
@@ -294,3 +295,5 @@ UA_StatusCode
 UA_PubSubManager_removeRepeatedPubSubCallback(UA_Server *server, UA_UInt64 callbackId) {
     return UA_Timer_removeRepeatedCallback(&server->timer, callbackId);
 }
+
+#endif /* UA_ENABLE_PUBSUB */

+ 4 - 0
src/pubsub/ua_pubsub_networkmessage.c

@@ -13,6 +13,8 @@
 #include "ua_types_generated_handling.h"
 #include "ua_log_stdout.h"
 
+#ifdef UA_ENABLE_PUBSUB /* conditional compilation */
+
 const UA_Byte NM_VERSION_MASK = 15;
 const UA_Byte NM_PUBLISHER_ID_ENABLED_MASK = 16;
 const UA_Byte NM_GROUP_HEADER_ENABLED_MASK = 32;
@@ -1306,3 +1308,5 @@ void UA_DataSetMessage_free(const UA_DataSetMessage* p) {
         }
     }
 }
+
+#endif /* UA_ENABLE_PUBSUB */

+ 2 - 2
tests/pubsub/check_pubsub_connection_udp.c

@@ -5,8 +5,8 @@
  * Copyright (c) 2017 - 2018 Fraunhofer IOSB (Author: Andreas Ebner)
  */
 
-#include <ua_server_pubsub.h>
-#include <src_generated/ua_types_generated_encoding_binary.h>
+#include "ua_server_pubsub.h"
+#include "src_generated/ua_types_generated_encoding_binary.h"
 #include "ua_config_default.h"
 #include "ua_network_pubsub_udp.h"
 #include "ua_server_internal.h"

+ 25 - 2
tests/pubsub/check_pubsub_publish.c

@@ -5,8 +5,6 @@
  * Copyright (c) 2017 - 2018 Fraunhofer IOSB (Author: Andreas Ebner)
  */
 
-#include <ua_types.h>
-#include <ua_server_pubsub.h>
 #include "ua_server_pubsub.h"
 #include "src_generated/ua_types_generated_encoding_binary.h"
 #include "ua_types.h"
@@ -391,6 +389,30 @@ START_TEST(SinglePublishDataSetField){
         UA_WriterGroup_publishCallback(server, wg);
     } END_TEST
 
+START_TEST(PublishDataSetFieldAsDeltaFrame){
+            setupDataSetFieldTestEnvironment();
+            UA_DataSetFieldConfig dataSetFieldConfig;
+            memset(&dataSetFieldConfig, 0, sizeof(UA_DataSetFieldConfig));
+            dataSetFieldConfig.dataSetFieldType = UA_PUBSUB_DATASETFIELD_VARIABLE;
+            dataSetFieldConfig.field.variable.fieldNameAlias = UA_STRING("Server localtime");
+            dataSetFieldConfig.field.variable.promotedField = UA_FALSE;
+            dataSetFieldConfig.field.variable.publishParameters.publishedVariable = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_LOCALTIME);
+            dataSetFieldConfig.field.variable.publishParameters.attributeId = UA_ATTRIBUTEID_VALUE;
+            UA_Server_addDataSetField(server, publishedDataSet1, &dataSetFieldConfig, NULL);
+            UA_Server_addDataSetField(server, publishedDataSet1, &dataSetFieldConfig, NULL);
+
+            UA_WriterGroup *wg = UA_WriterGroup_findWGbyId(server, writerGroup1);
+            wg->config.maxEncapsulatedDataSetMessageCount = 3;
+            UA_DataSetWriter *dsw = UA_DataSetWriter_findDSWbyId(server, dataSetWriter1);
+            dsw->config.keyFrameCount = 3;
+
+            UA_WriterGroup_publishCallback(server, wg);
+            UA_WriterGroup_publishCallback(server, wg);
+            UA_WriterGroup_publishCallback(server, wg);
+            UA_WriterGroup_publishCallback(server, wg);
+            UA_WriterGroup_publishCallback(server, wg);
+        } END_TEST
+
 int main(void) {
     TCase *tc_add_pubsub_writergroup = tcase_create("PubSub WriterGroup items handling");
     tcase_add_checked_fixture(tc_add_pubsub_writergroup, setup, teardown);
@@ -419,6 +441,7 @@ int main(void) {
     TCase *tc_pubsub_publish = tcase_create("PubSub publish DataSetFields");
     tcase_add_checked_fixture(tc_pubsub_publish, setup, teardown);
     tcase_add_test(tc_pubsub_publish, SinglePublishDataSetField);
+    tcase_add_test(tc_pubsub_publish, PublishDataSetFieldAsDeltaFrame);
 
     Suite *s = suite_create("PubSub WriterGroups/Writer/Fields handling and publishing");
     suite_add_tcase(s, tc_add_pubsub_writergroup);