--- /dev/null
+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();
+ }
+ }
+}