From 7cdd9e0931c9905bde72e01038d16589a3040ee6 Mon Sep 17 00:00:00 2001 From: Miro Richard Eklund Date: Fri, 20 Jul 2018 17:46:29 +0300 Subject: [PATCH] Default values for FMI values is NaN in FMIL.java Previously the default values were 0.0. Now, we can clearly see if the values are fetched internally correctly by starting out with NaN. If an actual value is found, it replaces it. If it fails, then NaN is still present. Change-Id: I019950cdf1559598d216cddbac28b8f2c1da95d5 --- .../src/org/simantics/fmil/core/FMIL.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/org.simantics.fmil.core/src/org/simantics/fmil/core/FMIL.java b/org.simantics.fmil.core/src/org/simantics/fmil/core/FMIL.java index fa09a71..7301caf 100644 --- a/org.simantics.fmil.core/src/org/simantics/fmil/core/FMIL.java +++ b/org.simantics.fmil.core/src/org/simantics/fmil/core/FMIL.java @@ -8,6 +8,7 @@ import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -129,15 +130,16 @@ public class FMIL { } public boolean subscribe(String name) throws FMILException { - // Safety check - int vr = variableMap.get(name); - if(vr == 0) return false; - if(!subscriptionSet.add(name)) return false; - subscribedNames.add(name); - System.err.println("subscribed : " + name + " => " + subscribedNames.size()); - subscription.add(vr); - subscribe(new int[] { vr }); - return true; + synchronized(syncObject) { + // Safety check + int vr = variableMap.get(name); + if(vr == 0) return false; + if(!subscriptionSet.add(name)) return false; + subscribedNames.add(name); + subscription.add(vr); + subscribe(new int[] { vr }); + return true; + } } public FMIL() { @@ -495,10 +497,11 @@ public class FMIL { synchronized(syncObject) { try { - + double[] results = new double[subscription.size()]; - return getSubscribedResults_(getModelIDNew(), results); - + Arrays.fill(results, Double.NaN); + + return getSubscribedResults_(getModelIDNew(), results); } catch (UnsatisfiedLinkError err) { throw new FMILException(UNSATISFIED_LINK); } catch (Exception e) { -- 2.45.2