started with new rover, bt still not worknig:(
[des2015.git] / dsl / runtime / src / nl / ru / des / RemoteSensors.java
diff --git a/dsl/runtime/src/nl/ru/des/RemoteSensors.java b/dsl/runtime/src/nl/ru/des/RemoteSensors.java
new file mode 100644 (file)
index 0000000..afebb11
--- /dev/null
@@ -0,0 +1,60 @@
+package nl.ru.des;
+
+import java.util.Queue;
+
+import lejos.robotics.SampleProvider;
+
+public class RemoteSensors{
+       public static final int DELAY = 250;
+       private SampleProvider left, right, ultra, color;
+       private float[] leftSamples, rightSamples, ultraSamples, colorSamples;
+       private float leftLatest, rightLatest, ultraLatest, colorLatest;
+       
+       public enum RemoteSensorEnum{
+               LEFT, RIGHT, ULTRA, COLOR;
+       }
+       
+       public RemoteSensors(SampleProvider left, SampleProvider right, SampleProvider ultra, SampleProvider color){
+               this.left = left;
+               this.right = right;
+               this.ultra = ultra;
+               this.color = color;
+               leftSamples = new float[left.sampleSize()];
+               rightSamples = new float[right.sampleSize()];
+               ultraSamples = new float[ultra.sampleSize()];
+               colorSamples = new float[color.sampleSize()];
+       }
+       
+       public void start(Queue<String> q){
+               long last = System.currentTimeMillis();
+               LCDPrinter.print("Start sending values...");
+               while(true){
+                       if(System.currentTimeMillis()-last > DELAY && q.size()<5){
+                               last = System.currentTimeMillis();
+                               left.fetchSample(leftSamples, 0);
+                               if(leftSamples[0] != leftLatest){
+                                       leftLatest = leftSamples[0];
+                                       q.add(Integer.toString(RemoteSensorEnum.LEFT.ordinal())+Integer.toString((int)leftLatest)+"\n");
+                               }
+                               right.fetchSample(rightSamples, 0);
+                               if(rightSamples[0] != rightLatest){
+                                       rightLatest = rightSamples[0];
+                                       q.add(Integer.toString(RemoteSensorEnum.RIGHT.ordinal())+Integer.toString((int)rightLatest)+"\n");
+                               }
+                               
+                               ultra.fetchSample(ultraSamples, 0);
+                               if(ultraSamples[0] != ultraLatest){
+                                       ultraLatest = ultraSamples[0];
+                                       q.add(Integer.toString(RemoteSensorEnum.ULTRA.ordinal())+Float.toString(ultraLatest)+"\n");
+                               }
+                               
+                               color.fetchSample(colorSamples, 0);
+                               if(colorSamples[0] != colorLatest){
+                                       colorLatest = colorSamples[0];
+                                       q.add(Integer.toString(RemoteSensorEnum.COLOR.ordinal())+Integer.toString((int)colorLatest)+"\n");
+                               }
+                       }
+                       Thread.yield();
+               }
+       }
+}