final
[des2015.git] / mart / ev3 / ex2 / nl / ru / des / behaviours / AvoidLowObjectBehaviour.java
index 1c47f4f..fd090bf 100644 (file)
@@ -4,18 +4,15 @@ import lejos.hardware.motor.EV3LargeRegulatedMotor;
 import lejos.robotics.SampleProvider;
 import lejos.robotics.subsumption.Behavior;
 
-public class AvoidLowObjectBehaviour implements Behavior {
+public class AvoidLowObjectBehaviour extends ReactiveBehaviour implements Behavior {
        private static final long BACKWARDSTIME = 250;
-       private static final long TURNTIME = 250;
-       private SampleProvider touch;
-       private float[] samples;
+       private static final long TURNTIME = 500;
        private boolean avoidDirection;
-       private boolean suppressed;
        private EV3LargeRegulatedMotor leftMotor, rightMotor;
 
        public AvoidLowObjectBehaviour(EV3LargeRegulatedMotor leftMotor, EV3LargeRegulatedMotor rightMotor,
                        SampleProvider touch) {
-               this.touch = touch;
+               super(touch);
                this.samples = new float[touch.sampleSize()];
                this.leftMotor = leftMotor;
                this.rightMotor = rightMotor;
@@ -23,7 +20,7 @@ public class AvoidLowObjectBehaviour implements Behavior {
 
        @Override
        public boolean takeControl() {
-               touch.fetchSample(samples, 0);
+               fetchSample();
                if(samples[0]>0){
                        avoidDirection = false;
                        return true;
@@ -37,7 +34,6 @@ public class AvoidLowObjectBehaviour implements Behavior {
        
        @Override
        public void action() {
-               suppressed = false;
                int leftacc = leftMotor.getAcceleration();
                int rightacc = rightMotor.getAcceleration();
                leftMotor.setAcceleration(10000);
@@ -45,7 +41,7 @@ public class AvoidLowObjectBehaviour implements Behavior {
                leftMotor.backward();
                rightMotor.backward();
                long time = System.currentTimeMillis();
-               while (!suppressed && System.currentTimeMillis() - time > BACKWARDSTIME) {
+               while (!suppressed && System.currentTimeMillis() - time < BACKWARDSTIME) {
                        Thread.yield();
                }
 
@@ -57,7 +53,7 @@ public class AvoidLowObjectBehaviour implements Behavior {
                        rightMotor.backward();
                }
                time = System.currentTimeMillis();
-               while (!suppressed && System.currentTimeMillis() - time > TURNTIME) {
+               while (!suppressed && System.currentTimeMillis() - time < TURNTIME) {
                        Thread.yield();
                }
                leftMotor.stop(true);
@@ -65,9 +61,4 @@ public class AvoidLowObjectBehaviour implements Behavior {
                leftMotor.setAcceleration(leftacc);
                leftMotor.setAcceleration(rightacc);
        }
-
-       @Override
-       public void suppress() {
-               suppressed = true;
-       }
 }
\ No newline at end of file