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