From 768ea9f254c2c46eb1e18aae0b3b61f6a0769f8d Mon Sep 17 00:00:00 2001 From: Simon Ebner Date: Mon, 14 Oct 2013 16:42:00 +0200 Subject: [PATCH] Cleanup Crlogic code --- .../main/java/ch/psi/fda/aq/Acquisition.java | 11 ++++--- .../ch/psi/fda/core/loops/cr/CrlogicLoop.java | 33 ++++--------------- .../fda/core/loops/cr/ParallelCrlogic.java | 7 +--- .../ch/psi/fda/core/loops/otf/OTFLoop.java | 2 -- .../otf}/OTFNamedChannelSensor.java | 2 +- .../otf}/OTFScalerChannelSensor.java | 2 +- .../ch/psi/fda/core/loops/OTFLoopTest.java | 4 +-- .../core/loops/cr/ParallelCrlogicTest.java | 11 +++---- 8 files changed, 22 insertions(+), 50 deletions(-) rename ch.psi.fda/src/main/java/ch/psi/fda/core/{sensors => loops/otf}/OTFNamedChannelSensor.java (97%) rename ch.psi.fda/src/main/java/ch/psi/fda/core/{sensors => loops/otf}/OTFScalerChannelSensor.java (97%) 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 5b338ec..f88b109 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 @@ -57,9 +57,12 @@ import ch.psi.fda.core.guard.ChannelAccessGuard; import ch.psi.fda.core.guard.ChannelAccessGuardCondition; import ch.psi.fda.core.loops.ActorSensorLoop; import ch.psi.fda.core.loops.cr.CrlogicLoop; +import ch.psi.fda.core.loops.cr.CrlogicResource; import ch.psi.fda.core.loops.cr.ParallelCrlogic; import ch.psi.fda.core.loops.cr.ScrlogicLoop; import ch.psi.fda.core.loops.otf.OTFLoop; +import ch.psi.fda.core.loops.otf.OTFNamedChannelSensor; +import ch.psi.fda.core.loops.otf.OTFScalerChannelSensor; import ch.psi.fda.core.loops.otf.TemplateOTF; import ch.psi.fda.core.manipulator.JythonManipulation; import ch.psi.fda.core.messages.DataMessageMetadata; @@ -71,8 +74,6 @@ 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.OTFNamedChannelSensor; -import ch.psi.fda.core.sensors.OTFScalerChannelSensor; import ch.psi.fda.model.ModelManager; import ch.psi.fda.model.v1.Action; import ch.psi.fda.model.v1.ArrayDetector; @@ -1092,17 +1093,17 @@ public class Acquisition { // ATTENTION: the sequence of the mapping depends on the sequence in the schema file ! for(SimpleScalarDetector detector: dimension.getDetector()){ if(!detector.isScr()){ - actionLoop.getSensors().add(new OTFNamedChannelSensor(detector.getId(), detector.getName())); + actionLoop.getSensors().add(new CrlogicResource(detector.getId(), detector.getName())); } } for(ScalerChannel detector: dimension.getScaler()){ - actionLoop.getSensors().add(new OTFScalerChannelSensor(detector.getId(), detector.getChannel())); + actionLoop.getSensors().add(new CrlogicResource(detector.getId(), "SCALER"+detector.getChannel(), true)); } Timestamp tdetector = dimension.getTimestamp(); if(tdetector != null){ - actionLoop.getSensors().add(new MillisecondTimestampSensor(tdetector.getId())); + actionLoop.getSensors().add(new CrlogicResource(tdetector.getId(), "TIMESTAMP")); } actionLoop.getPostActions().addAll(mapActions(dimension.getPostAction())); diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/cr/CrlogicLoop.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/cr/CrlogicLoop.java index a7a1462..c75b718 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/cr/CrlogicLoop.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/cr/CrlogicLoop.java @@ -37,16 +37,12 @@ import java.util.logging.Logger; import jcifs.smb.SmbFile; import ch.psi.fda.core.Action; import ch.psi.fda.core.ActionLoop; -import ch.psi.fda.core.Sensor; import ch.psi.fda.core.messages.ComponentMetadata; import ch.psi.fda.core.messages.DataMessage; import ch.psi.fda.core.messages.DataMessageMetadata; import ch.psi.fda.core.messages.DataQueue; import ch.psi.fda.core.messages.EndOfStreamMessage; import ch.psi.fda.core.messages.Message; -import ch.psi.fda.core.sensors.MillisecondTimestampSensor; -import ch.psi.fda.core.sensors.OTFNamedChannelSensor; -import ch.psi.fda.core.sensors.OTFScalerChannelSensor; import ch.psi.jcae.ChannelException; import ch.psi.jcae.ChannelService; @@ -60,7 +56,6 @@ import ch.psi.jcae.ChannelService; */ public class CrlogicLoop implements ActionLoop { - // Get Logger private static final Logger logger = Logger.getLogger(CrlogicLoop.class.getName()); /** @@ -75,8 +70,6 @@ public class CrlogicLoop implements ActionLoop { private volatile boolean stopReadoutThread = false; private Thread readoutThread; - // Constants - /** * Default timeout (in milliseconds) for wait operations */ @@ -128,7 +121,7 @@ public class CrlogicLoop implements ActionLoop { /** * List of sensors of this loop */ - private List sensors; + private List sensors; private List readoutResources; private Map scalerIndices; @@ -170,7 +163,7 @@ public class CrlogicLoop implements ActionLoop { // Initialize lists used by the loop this.preActions = new ArrayList(); this.postActions = new ArrayList(); - this.sensors = new ArrayList(); + this.sensors = new ArrayList<>(); this.readoutResources = new ArrayList(); this.scalerIndices = new HashMap(); @@ -740,23 +733,11 @@ public class CrlogicLoop implements ActionLoop { scalerIndices.clear(); int c = 1; // We start at 1 because the actuator right now is an implicit sensor - for(Sensor s: sensors){ - if(s instanceof OTFNamedChannelSensor){ - // Monitored channel (MUST be configured MODULE ID'S) - OTFNamedChannelSensor so = (OTFNamedChannelSensor) s; - readoutResources.add(so.getName()); - } - else if (s instanceof OTFScalerChannelSensor){ - OTFScalerChannelSensor so = (OTFScalerChannelSensor) s; - readoutResources.add("SCALER"+so.getIndex()); + for(CrlogicResource s: sensors){ + readoutResources.add(s.getKey()); + if(s.isDelta()){ scalerIndices.put(c, new CrlogicDeltaDataFilter()); } - else if (s instanceof MillisecondTimestampSensor){ - readoutResources.add("TIMESTAMP"); - } - else{ - throw new IllegalArgumentException("Sensor type "+s.getClass()+" is not supported by this loop"); - } c++; } @@ -806,7 +787,7 @@ public class CrlogicLoop implements ActionLoop { this.dataGroup = dataGroup; } - public List getSensors() { + public List getSensors() { return sensors; } @@ -820,7 +801,7 @@ public class CrlogicLoop implements ActionLoop { // Build up data message metadata based on the sensors currently registered. m.getComponents().add(new ComponentMetadata(this.id)); - for(Sensor s: sensors){ + for(CrlogicResource s: sensors){ m.getComponents().add(new ComponentMetadata(s.getId())); } return new DataQueue(dataQueue, m); diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/cr/ParallelCrlogic.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/cr/ParallelCrlogic.java index cb9d259..6c31bc2 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/cr/ParallelCrlogic.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/cr/ParallelCrlogic.java @@ -34,12 +34,7 @@ import java.util.logging.Logger; import ch.psi.fda.core.Action; import ch.psi.fda.core.ActionLoop; import ch.psi.fda.core.messages.DataQueue; -import ch.psi.fda.core.sensors.MillisecondTimestampSensor; -/** - * @author ebner - * - */ public class ParallelCrlogic implements ActionLoop { private static final Logger logger = Logger.getLogger(ParallelCrlogic.class.getName()); @@ -77,7 +72,7 @@ public class ParallelCrlogic implements ActionLoop { this.crlogic = crlogic; // Add timestamp to sensor at the beginning of the sensor list as this is required for merging the data // Timestamp will be at the second position of a message in the queue! - this.crlogic.getSensors().add(0, new MillisecondTimestampSensor("tmp_timestamp")); + this.crlogic.getSensors().add(0, new CrlogicResource("tmp_timestamp","TIMESTAMP")); this.scrlogic = scrlogic; // Initialize lists used by the loop 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 3459e4f..f8819b1 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 @@ -39,8 +39,6 @@ import ch.psi.fda.core.messages.DataQueue; import ch.psi.fda.core.messages.EndOfStreamMessage; import ch.psi.fda.core.messages.Message; import ch.psi.fda.core.sensors.MillisecondTimestampSensor; -import ch.psi.fda.core.sensors.OTFNamedChannelSensor; -import ch.psi.fda.core.sensors.OTFScalerChannelSensor; /** * ActionLoop that is implementing the OTF Scan logic. diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/OTFNamedChannelSensor.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFNamedChannelSensor.java similarity index 97% rename from ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/OTFNamedChannelSensor.java rename to ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFNamedChannelSensor.java index 4cb5211..1123202 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/OTFNamedChannelSensor.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFNamedChannelSensor.java @@ -17,7 +17,7 @@ * */ -package ch.psi.fda.core.sensors; +package ch.psi.fda.core.loops.otf; import ch.psi.fda.core.Sensor; diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/OTFScalerChannelSensor.java b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFScalerChannelSensor.java similarity index 97% rename from ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/OTFScalerChannelSensor.java rename to ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFScalerChannelSensor.java index 119aea2..6b62831 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/core/sensors/OTFScalerChannelSensor.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/core/loops/otf/OTFScalerChannelSensor.java @@ -17,7 +17,7 @@ * */ -package ch.psi.fda.core.sensors; +package ch.psi.fda.core.loops.otf; import ch.psi.fda.core.Sensor; 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 cd6cc53..2b36026 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 @@ -35,14 +35,14 @@ import org.junit.Test; import ch.psi.fda.TestConfiguration; import ch.psi.fda.core.loops.otf.OTFLoop; +import ch.psi.fda.core.loops.otf.OTFNamedChannelSensor; +import ch.psi.fda.core.loops.otf.OTFScalerChannelSensor; 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.DataMessageMetadata; import ch.psi.fda.core.messages.Message; import ch.psi.fda.core.sensors.MillisecondTimestampSensor; -import ch.psi.fda.core.sensors.OTFNamedChannelSensor; -import ch.psi.fda.core.sensors.OTFScalerChannelSensor; import ch.psi.jcae.Channel; import ch.psi.jcae.ChannelDescriptor; import ch.psi.jcae.ChannelException; diff --git a/ch.psi.fda/src/test/java/ch/psi/fda/core/loops/cr/ParallelCrlogicTest.java b/ch.psi.fda/src/test/java/ch/psi/fda/core/loops/cr/ParallelCrlogicTest.java index 4f6575f..823b54c 100644 --- a/ch.psi.fda/src/test/java/ch/psi/fda/core/loops/cr/ParallelCrlogicTest.java +++ b/ch.psi.fda/src/test/java/ch/psi/fda/core/loops/cr/ParallelCrlogicTest.java @@ -35,9 +35,6 @@ import org.junit.Test; import ch.psi.fda.TestConfiguration; import ch.psi.fda.core.messages.EndOfStreamMessage; import ch.psi.fda.core.messages.Message; -import ch.psi.fda.core.sensors.MillisecondTimestampSensor; -import ch.psi.fda.core.sensors.OTFNamedChannelSensor; -import ch.psi.fda.core.sensors.OTFScalerChannelSensor; import ch.psi.jcae.Channel; import ch.psi.jcae.ChannelDescriptor; import ch.psi.jcae.ChannelException; @@ -92,10 +89,10 @@ public class ParallelCrlogicTest { CrlogicLoop crlogic = new CrlogicLoop(cservice, c.getCrlogicPrefix(), c.getServer(), c.getShare(), c.getSmbShare(), zigZag); crlogic.setActuator("cmot", c.getMotor1(), readback, start, end, stepSize, integrationTime, additionalBacklash); - crlogic.getSensors().add(new OTFNamedChannelSensor("trigger", "TRIGGER0")); - crlogic.getSensors().add(new OTFScalerChannelSensor("scaler0", 0)); - crlogic.getSensors().add(new OTFScalerChannelSensor("scaler1", 1)); - crlogic.getSensors().add(new MillisecondTimestampSensor("timestamp")); + crlogic.getSensors().add(new CrlogicResource("trigger", "TRIGGER0")); + crlogic.getSensors().add(new CrlogicResource("scaler0", "SCALER0", true)); + crlogic.getSensors().add(new CrlogicResource("scaler1", "SCALER1", true)); + crlogic.getSensors().add(new CrlogicResource("timestamp", "TIMESTAMP")); // Initialize scaler template