afebb110d33b791c208e2edd3d7969bda4d6c842
[des2015.git] / dsl / runtime / src / nl / ru / des / RemoteSensors.java
1 package nl.ru.des;
2
3 import java.util.Queue;
4
5 import lejos.robotics.SampleProvider;
6
7 public class RemoteSensors{
8 public static final int DELAY = 250;
9 private SampleProvider left, right, ultra, color;
10 private float[] leftSamples, rightSamples, ultraSamples, colorSamples;
11 private float leftLatest, rightLatest, ultraLatest, colorLatest;
12
13 public enum RemoteSensorEnum{
14 LEFT, RIGHT, ULTRA, COLOR;
15 }
16
17 public RemoteSensors(SampleProvider left, SampleProvider right, SampleProvider ultra, SampleProvider color){
18 this.left = left;
19 this.right = right;
20 this.ultra = ultra;
21 this.color = color;
22 leftSamples = new float[left.sampleSize()];
23 rightSamples = new float[right.sampleSize()];
24 ultraSamples = new float[ultra.sampleSize()];
25 colorSamples = new float[color.sampleSize()];
26 }
27
28 public void start(Queue<String> q){
29 long last = System.currentTimeMillis();
30 LCDPrinter.print("Start sending values...");
31 while(true){
32 if(System.currentTimeMillis()-last > DELAY && q.size()<5){
33 last = System.currentTimeMillis();
34 left.fetchSample(leftSamples, 0);
35 if(leftSamples[0] != leftLatest){
36 leftLatest = leftSamples[0];
37 q.add(Integer.toString(RemoteSensorEnum.LEFT.ordinal())+Integer.toString((int)leftLatest)+"\n");
38 }
39 right.fetchSample(rightSamples, 0);
40 if(rightSamples[0] != rightLatest){
41 rightLatest = rightSamples[0];
42 q.add(Integer.toString(RemoteSensorEnum.RIGHT.ordinal())+Integer.toString((int)rightLatest)+"\n");
43 }
44
45 ultra.fetchSample(ultraSamples, 0);
46 if(ultraSamples[0] != ultraLatest){
47 ultraLatest = ultraSamples[0];
48 q.add(Integer.toString(RemoteSensorEnum.ULTRA.ordinal())+Float.toString(ultraLatest)+"\n");
49 }
50
51 color.fetchSample(colorSamples, 0);
52 if(colorSamples[0] != colorLatest){
53 colorLatest = colorSamples[0];
54 q.add(Integer.toString(RemoteSensorEnum.COLOR.ordinal())+Integer.toString((int)colorLatest)+"\n");
55 }
56 }
57 Thread.yield();
58 }
59 }
60 }