7695ee07b007977ff3463bac37d6b1c52b243e5b
[des2015.git] / dsl / runtime / src / nl / ru / des / SensorCollector.java
1 package nl.ru.des;
2
3 import lejos.robotics.SampleProvider;
4
5 public class SensorCollector{
6 public static final int DELAY = 50;
7
8 private SampleProvider ultrasone, color, leftTouch, rightTouch;
9 private float[] ultrasoneSamples, colorSamples, leftTouchSamples, rightTouchSamples;
10 private long ultrasoneTime, colorTime, leftTouchTime, rightTouchTime;
11
12 public SensorCollector(SampleProvider ultrasone,
13 SampleProvider color,
14 SampleProvider leftTouch,
15 SampleProvider rightTouch){
16 this.ultrasone = ultrasone;
17 this.color = color;
18 this.leftTouch = leftTouch;
19 this.rightTouch = rightTouch;
20 ultrasoneSamples = new float[ultrasone.sampleSize()];
21 colorSamples = new float[color.sampleSize()];
22 leftTouchSamples = new float[leftTouch.sampleSize()];
23 rightTouchSamples = new float[rightTouch.sampleSize()];
24 ultrasoneTime = System.currentTimeMillis();
25 colorTime = System.currentTimeMillis();
26 leftTouchTime = System.currentTimeMillis();
27 rightTouchTime = System.currentTimeMillis();
28 }
29
30 public float distance(){
31 if(System.currentTimeMillis()-ultrasoneTime>DELAY){
32 ultrasone.fetchSample(ultrasoneSamples, 0);
33 ultrasoneTime = System.currentTimeMillis();
34 }
35 return ultrasoneSamples[0];
36 }
37
38 public int color(){
39 if(System.currentTimeMillis()-colorTime>DELAY){
40 color.fetchSample(colorSamples, 0);
41 colorTime = System.currentTimeMillis();
42 }
43 return (int)colorSamples[0];
44 }
45
46 public boolean leftTouch(){
47 if(System.currentTimeMillis()-leftTouchTime>DELAY){
48 leftTouch.fetchSample(leftTouchSamples, 0);
49 leftTouchTime = System.currentTimeMillis();
50 }
51 return leftTouchSamples[0]==1;
52 }
53
54 public boolean rightTouch(){
55 if(System.currentTimeMillis()-rightTouchTime>DELAY){
56 rightTouch.fetchSample(rightTouchSamples, 0);
57 rightTouchTime = System.currentTimeMillis();
58 }
59 return rightTouchSamples[0]==1;
60 }
61 }