Просмотр исходного кода

Events: Fix registering of monitoreditem callbacks

Thanks to Tino Bischoff for finding the root-cause

Co-authored-by: Tino Bischoff <tino.bischoff@iosb.fraunhofer.de>
Julius Pfrommer лет назад: 6
Родитель
Сommit
c085465440
1 измененных файлов с 5 добавлено и 0 удалено
  1. 5 0
      src/server/ua_subscription_datachange.c

+ 5 - 0
src/server/ua_subscription_datachange.c

@@ -498,6 +498,11 @@ UA_StatusCode
 UA_MonitoredItem_registerSampleCallback(UA_Server *server, UA_MonitoredItem *mon) {
     if(mon->sampleCallbackIsRegistered)
         return UA_STATUSCODE_GOOD;
+
+    /* Only DataChange MonitoredItems have a callback with a sampling interval */
+    if(mon->monitoredItemType != UA_MONITOREDITEMTYPE_CHANGENOTIFY)
+        return UA_STATUSCODE_GOOD;
+
     UA_StatusCode retval =
         UA_Server_addRepeatedCallback(server, (UA_ServerCallback)UA_MonitoredItem_sampleCallback,
                                       mon, (UA_UInt32)mon->samplingInterval, &mon->sampleCallbackId);