diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/aq/Acquisition.java b/ch.psi.fda/src/main/java/ch/psi/fda/aq/Acquisition.java index 03264ce..a15a3e5 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/aq/Acquisition.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/aq/Acquisition.java @@ -70,7 +70,7 @@ import ch.psi.fda.core.scripting.JythonParameterMappingChannel; import ch.psi.fda.core.scripting.JythonParameterMappingGlobalVariable; import ch.psi.fda.core.scripting.JythonParameterMappingID; import ch.psi.fda.core.sensors.ChannelAccessSensor; -import ch.psi.fda.core.sensors.MillisecondTimestampSensor; +import ch.psi.fda.core.sensors.TimestampSensor; import ch.psi.fda.model.ModelManager; import ch.psi.fda.model.v1.Action; import ch.psi.fda.model.v1.ArrayDetector; @@ -966,7 +966,7 @@ public class Acquisition { Timestamp dd = (Timestamp) detector; // Ad sensor - MillisecondTimestampSensor sensor = new MillisecondTimestampSensor(dd.getId()); + TimestampSensor sensor = new TimestampSensor(dd.getId()); aLoop.getSensors().add(sensor); } else{ @@ -1027,7 +1027,7 @@ public class Acquisition { Timestamp detector = dimension.getTimestamp(); if(detector != null){ - actionLoop.getSensors().add(new MillisecondTimestampSensor(detector.getId())); + actionLoop.getSensors().add(new TimestampSensor(detector.getId())); } actionLoop.getPostActions().addAll(mapActions(dimension.getPostAction())); diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/aq/Manipulator.java b/ch.psi.fda/src/main/java/ch/psi/fda/aq/Manipulator.java index 152815c..5085753 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/aq/Manipulator.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/aq/Manipulator.java @@ -58,7 +58,6 @@ public class Manipulator { manipulation.initialize(this.metadata); // Add manipulation id to metadata - System.out.println(""+manipulation.getId()); this.metadata.add(new Metadata(manipulation.getId(),0)); // Calculated component always belongs to lowes dimension } } diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/actors/JythonFunction.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/actors/JythonFunction.java index a476ddd..5f7a792 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/actors/JythonFunction.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/actors/JythonFunction.java @@ -42,6 +42,11 @@ public class JythonFunction implements Function { public JythonFunction(String script, Map map){ + + // Workaround for Jython memory leak + // http://blog.hillbrecht.de/2009/07/11/jython-memory-leakout-of-memory-problem/ + System.setProperty("python.options.internalTablesImpl","weak"); + this.engine = new ScriptEngineManager().getEngineByName("python"); // Determine script entry function and the function parameters diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/actors/PseudoActuatorSensor.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/actors/PseudoActuatorSensor.java index 34f6b1a..6366371 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/actors/PseudoActuatorSensor.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/actors/PseudoActuatorSensor.java @@ -56,7 +56,6 @@ public class PseudoActuatorSensor implements Actor, Sensor { @Override public void set() { - // Throw an IllegalStateException in the case that set is called although there is no next step. if(!hasNext()){ throw new IllegalStateException("The actuator does not have any next step."); } @@ -71,7 +70,7 @@ public class PseudoActuatorSensor implements Actor, Sensor { @Override public void init() { - count=0; // Set count back to 0 + count=0; } @Override diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/guard/ChannelAccessGuard.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/guard/ChannelAccessGuard.java index d459373..7b4520b 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/guard/ChannelAccessGuard.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/guard/ChannelAccessGuard.java @@ -70,7 +70,6 @@ public class ChannelAccessGuard implements Guard { try{ if(! (condition.getChannel().getValue(true)).equals(condition.getValue()) ){ check=false; - // Early exit break; } } diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/ActorSensorLoop.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/ActorSensorLoop.java index ace3f59..3b25ca8 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/ActorSensorLoop.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/ActorSensorLoop.java @@ -95,12 +95,6 @@ public class ActorSensorLoop implements ActionLoop { */ private List sensors; -// /** -// * Data queue sensor data is posted to. A message consists of a list of data objects -// * that are read out of the sensors of this loop. -// */ -// private BlockingQueue dataQueue; - /** * Guard used to check whether the environment was ok while reading out the sensors */ @@ -364,8 +358,6 @@ public class ActorSensorLoop implements ActionLoop { @Override public void prepare() { - // Put in prepare code here - // Create callable for all actors pactors.clear(); for(final Actor a: actors){ @@ -385,8 +377,6 @@ public class ActorSensorLoop implements ActionLoop { @Override public void cleanup() { - // Put in cleanup code here - // Recursively call cleanup() method of all registered action loops for(ActionLoop actionLoop: actionLoops){ actionLoop.cleanup(); diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFLoop.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFLoop.java index 24db595..957f252 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFLoop.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFLoop.java @@ -35,7 +35,7 @@ import ch.psi.fda.core.Sensor; import ch.psi.fda.core.messages.DataMessage; import ch.psi.fda.core.messages.EndOfStreamMessage; import ch.psi.fda.core.messages.Metadata; -import ch.psi.fda.core.sensors.MillisecondTimestampSensor; +import ch.psi.fda.core.sensors.TimestampSensor; /** * ActionLoop that is implementing the OTF Scan logic. @@ -237,7 +237,7 @@ public class OTFLoop implements ActionLoop { } dataIndexes.add(2+so.getIndex()); // scalers follow directly after the readback } - else if (s instanceof MillisecondTimestampSensor){ + else if (s instanceof TimestampSensor){ dataIndexes.add(2+numberOfScalerChannels+numberOfMonitoredChannels); } // else if (s instanceof OTFReadbackSensor){ diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/MillisecondTimestampSensor.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/TimestampSensor.java similarity index 87% rename from ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/MillisecondTimestampSensor.java rename to ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/TimestampSensor.java index 736bbf4..93d036e 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/MillisecondTimestampSensor.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/TimestampSensor.java @@ -22,13 +22,13 @@ package ch.psi.fda.core.sensors; import ch.psi.fda.core.Sensor; /** - * Reads the current time in milliseconds + * Sensor to read the current time in milliseconds */ -public class MillisecondTimestampSensor implements Sensor { +public class TimestampSensor implements Sensor { private final String id; // Global id of the sensor - public MillisecondTimestampSensor(String id){ + public TimestampSensor(String id){ this.id = id; } diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/deserializer/DataDeserializerTXT.java b/ch.psi.fda/src/main/java/ch/psi/fda/deserializer/DataDeserializerTXT.java index 505310f..4676b8e 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/deserializer/DataDeserializerTXT.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/deserializer/DataDeserializerTXT.java @@ -174,9 +174,6 @@ public class DataDeserializerTXT implements DataDeserializer { Integer i = iindex.get(t); if(dindex.get(t)>0){ Double d = (Double) message.getData().get(i); -// if(checklist.get(i)==null){ -// checklist.set(i, d); -// } if(checklist.get(i)!=null &&!checklist.get(i).equals(d)){ // If value changes issue a dimension delimiter message bus.post(new StreamDelimiterMessage(dindex.get(t)-1)); @@ -196,9 +193,7 @@ public class DataDeserializerTXT implements DataDeserializer { for(int i=dindex.size()-1;i>=0;i--){ bus.post(new StreamDelimiterMessage(dindex.get(i))); } -// queue.getQueue().put(new DimensionDelimiterMessage(dindex.get(0)-1)); -// queue.getQueue().put(new DimensionDelimiterMessage(dindex.get(0))); - + // Place end of stream message bus.post(new EndOfStreamMessage()); diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/visualizer/Visualizer.java b/ch.psi.fda/src/main/java/ch/psi/fda/visualizer/Visualizer.java index 91fa23c..9d84580 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/visualizer/Visualizer.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/visualizer/Visualizer.java @@ -259,44 +259,21 @@ public class Visualizer { return panels; } - /** - * @return the updateAtStreamElement - */ public boolean isUpdateAtStreamElement() { return updateAtStreamElement; } - - /** - * @param updateAtStreamElement the updateAtStreamElement to set - */ public void setUpdateAtStreamElement(boolean updateAtStreamElement) { this.updateAtStreamElement = updateAtStreamElement; } - - /** - * @return the updateAtStreamDelimiter - */ public boolean isUpdateAtStreamDelimiter() { return updateAtStreamDelimiter; } - - /** - * @param updateAtStreamDelimiter the updateAtStreamDelimiter to set - */ public void setUpdateAtStreamDelimiter(boolean updateAtStreamDelimiter) { this.updateAtStreamDelimiter = updateAtStreamDelimiter; } - - /** - * @return the updateAtEndOfStream - */ public boolean isUpdateAtEndOfStream() { return updateAtEndOfStream; } - - /** - * @param updateAtEndOfStream the updateAtEndOfStream to set - */ public void setUpdateAtEndOfStream(boolean updateAtEndOfStream) { this.updateAtEndOfStream = updateAtEndOfStream; } diff --git a/ch.psi.fda/src/test/java/ch/psi/fda/core/loops/OTFLoopTest.java b/ch.psi.fda/src/test/java/ch/psi/fda/core/loops/OTFLoopTest.java index ae9afe4..f954a50 100644 --- a/ch.psi.fda/src/test/java/ch/psi/fda/core/loops/OTFLoopTest.java +++ b/ch.psi.fda/src/test/java/ch/psi/fda/core/loops/OTFLoopTest.java @@ -42,7 +42,7 @@ import ch.psi.fda.core.loops.otf.TemplateOTF; import ch.psi.fda.core.messages.ControlMessage; import ch.psi.fda.core.messages.DataMessage; import ch.psi.fda.core.messages.Message; -import ch.psi.fda.core.sensors.MillisecondTimestampSensor; +import ch.psi.fda.core.sensors.TimestampSensor; import ch.psi.jcae.Channel; import ch.psi.jcae.ChannelDescriptor; import ch.psi.jcae.ChannelException; @@ -71,7 +71,7 @@ public class OTFLoopTest { OTFScalerChannelSensor s2 = new OTFScalerChannelSensor("id1", 0); OTFScalerChannelSensor s3 = new OTFScalerChannelSensor("id2", 1); - MillisecondTimestampSensor s4 = new MillisecondTimestampSensor("id3"); + TimestampSensor s4 = new TimestampSensor("id3"); OTFNamedChannelSensor s5 = new OTFNamedChannelSensor("id4", configuration.getAnalogIn1()); Map macros = new HashMap<>(); diff --git a/ch.psi.fda/src/test/java/ch/psi/fda/core/sensors/MillisecondTimestampSensorTest.java b/ch.psi.fda/src/test/java/ch/psi/fda/core/sensors/MillisecondTimestampSensorTest.java index b72f2f5..0ac8ce0 100644 --- a/ch.psi.fda/src/test/java/ch/psi/fda/core/sensors/MillisecondTimestampSensorTest.java +++ b/ch.psi.fda/src/test/java/ch/psi/fda/core/sensors/MillisecondTimestampSensorTest.java @@ -28,7 +28,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import ch.psi.fda.core.sensors.MillisecondTimestampSensor; +import ch.psi.fda.core.sensors.TimestampSensor; /** * Test class for MillisecondsTimestampSensor @@ -60,7 +60,7 @@ public class MillisecondTimestampSensorTest { */ @Test public void testRead() throws CAException { - MillisecondTimestampSensor sensor = new MillisecondTimestampSensor("id0"); + TimestampSensor sensor = new TimestampSensor("id0"); // Get sensor readout value Double value = (Double) sensor.read(); diff --git a/ch.psi.fda/src/test/java/ch/psi/fda/visualizer/DataVisualizerTest.java b/ch.psi.fda/src/test/java/ch/psi/fda/visualizer/DataVisualizerTest.java index e2989c3..a95892b 100644 --- a/ch.psi.fda/src/test/java/ch/psi/fda/visualizer/DataVisualizerTest.java +++ b/ch.psi.fda/src/test/java/ch/psi/fda/visualizer/DataVisualizerTest.java @@ -150,11 +150,11 @@ public class DataVisualizerTest { Thread.sleep(10000); } - @Ignore +// @Ignore @Test public void testRun2D() throws InterruptedException { - int nx = 100; + int nx = 1000; int ny = 1000; List metadata = new ArrayList<>();