push
[des2015.git] / dsl / runtime / src / nl / ru / des / BasicBehaviour.java
1 package nl.ru.des;
2
3 import lejos.robotics.RegulatedMotor;
4 import lejos.robotics.subsumption.Behavior;
5 import nl.ru.des.sensors.SensorCollector;
6
7 public abstract class BasicBehaviour implements Behavior{
8 protected int suppressed;
9 protected RegulatedMotor leftMotor, rightMotor, measMotor;
10 protected SensorCollector sensors;
11 protected long time;
12
13 public BasicBehaviour(SensorCollector sensors, RegulatedMotor leftMotor,
14 RegulatedMotor rightMotor, RegulatedMotor measMotor){
15 this.leftMotor = leftMotor;
16 this.rightMotor = rightMotor;
17 this.measMotor = measMotor;
18 this.sensors = sensors;
19 }
20
21 protected void reset(){
22 rightMotor.setSpeed(Constants.speed);
23 rightMotor.setAcceleration(Constants.acceleration);
24 leftMotor.setSpeed(Constants.speed);
25 leftMotor.setAcceleration(Constants.acceleration);
26 rightMotor.stop(true);
27 leftMotor.stop(true);
28 suppressed = 0;
29 }
30
31 protected void rockMeasure(){
32
33 }
34
35 protected void lakeMeasure(){
36
37 }
38
39 protected void rightTurn(int angle){
40 float init = sensors.gyro();
41 rightMotor.backward();
42 leftMotor.forward();
43
44 while(suppressed != 2 && sensors.gyro()-90>init){
45 Thread.yield();
46 }
47 }
48
49 protected void leftTurn(int angle){
50 float init = sensors.gyro();
51 leftMotor.backward();
52 rightMotor.forward();
53 while(suppressed != 2 && sensors.gyro()+90<init){
54 Thread.yield();
55 }
56 }
57
58 @Override
59 public void action() {
60 suppressed = 1;
61 }
62
63 @Override
64 public void suppress() {
65 suppressed = 2;
66 }
67
68 @Override public boolean takeControl(){
69 return true;
70 }
71 }