|
@@ -77,10 +77,12 @@ detectValueChange(UA_MonitoredItem *mon, UA_DataValue *value,
|
|
UA_Boolean hasValue = value->hasValue;
|
|
UA_Boolean hasValue = value->hasValue;
|
|
if(mon->trigger == UA_DATACHANGETRIGGER_STATUS)
|
|
if(mon->trigger == UA_DATACHANGETRIGGER_STATUS)
|
|
value->hasValue = false;
|
|
value->hasValue = false;
|
|
|
|
+
|
|
UA_Boolean hasServerTimestamp = value->hasServerTimestamp;
|
|
UA_Boolean hasServerTimestamp = value->hasServerTimestamp;
|
|
UA_Boolean hasServerPicoseconds = value->hasServerPicoseconds;
|
|
UA_Boolean hasServerPicoseconds = value->hasServerPicoseconds;
|
|
value->hasServerTimestamp = false;
|
|
value->hasServerTimestamp = false;
|
|
value->hasServerPicoseconds = false;
|
|
value->hasServerPicoseconds = false;
|
|
|
|
+
|
|
UA_Boolean hasSourceTimestamp = value->hasSourceTimestamp;
|
|
UA_Boolean hasSourceTimestamp = value->hasSourceTimestamp;
|
|
UA_Boolean hasSourcePicoseconds = value->hasSourcePicoseconds;
|
|
UA_Boolean hasSourcePicoseconds = value->hasSourcePicoseconds;
|
|
if(mon->trigger < UA_DATACHANGETRIGGER_STATUSVALUETIMESTAMP) {
|
|
if(mon->trigger < UA_DATACHANGETRIGGER_STATUSVALUETIMESTAMP) {
|
|
@@ -135,13 +137,6 @@ void UA_MoniteredItem_SampleCallback(UA_Server *server, UA_MonitoredItem *monito
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- /* Adjust timestampstoreturn to get source timestamp for triggering */
|
|
|
|
- UA_TimestampsToReturn ts = monitoredItem->timestampsToReturn;
|
|
|
|
- if(ts == UA_TIMESTAMPSTORETURN_SERVER)
|
|
|
|
- ts = UA_TIMESTAMPSTORETURN_BOTH;
|
|
|
|
- else if(ts == UA_TIMESTAMPSTORETURN_NEITHER)
|
|
|
|
- ts = UA_TIMESTAMPSTORETURN_SOURCE;
|
|
|
|
-
|
|
|
|
/* Read the value */
|
|
/* Read the value */
|
|
UA_ReadValueId rvid;
|
|
UA_ReadValueId rvid;
|
|
UA_ReadValueId_init(&rvid);
|
|
UA_ReadValueId_init(&rvid);
|
|
@@ -150,7 +145,8 @@ void UA_MoniteredItem_SampleCallback(UA_Server *server, UA_MonitoredItem *monito
|
|
rvid.indexRange = monitoredItem->indexRange;
|
|
rvid.indexRange = monitoredItem->indexRange;
|
|
UA_DataValue value;
|
|
UA_DataValue value;
|
|
UA_DataValue_init(&value);
|
|
UA_DataValue_init(&value);
|
|
- Service_Read_single(server, sub->session, ts, &rvid, &value);
|
|
|
|
|
|
+ Service_Read_single(server, sub->session, monitoredItem->timestampsToReturn,
|
|
|
|
+ &rvid, &value);
|
|
|
|
|
|
/* Stack-allocate some memory for the value encoding */
|
|
/* Stack-allocate some memory for the value encoding */
|
|
UA_Byte *stackValueEncoding = UA_alloca(UA_VALUENCODING_MAXSTACK);
|
|
UA_Byte *stackValueEncoding = UA_alloca(UA_VALUENCODING_MAXSTACK);
|