X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=dsl%2Fruntime%2Fsrc%2Fnl%2Fru%2Fdes%2FBasicBehaviour.java;h=8fd1fd38f551fbb3e6c73444e2baaf6d4b686334;hb=7d9c29a46bae0afbc961e57f3013190b31ae5234;hp=e55558d459010b83fd7f53cf77ef9e4ff312dd49;hpb=7e45053aae7bca99baa8ffeeba0d7946d1874f93;p=des2015.git diff --git a/dsl/runtime/src/nl/ru/des/BasicBehaviour.java b/dsl/runtime/src/nl/ru/des/BasicBehaviour.java index e55558d..8fd1fd3 100644 --- a/dsl/runtime/src/nl/ru/des/BasicBehaviour.java +++ b/dsl/runtime/src/nl/ru/des/BasicBehaviour.java @@ -8,7 +8,7 @@ public abstract class BasicBehaviour implements Behavior{ protected enum SuppressedState { IDLE, IN_ACTION, SUPPRESSED; } - protected SuppressedState suppressed; + private SuppressedState suppressed; protected RegulatedMotor leftMotor, rightMotor, measMotor; protected SensorCollector sensors; protected long time; @@ -28,16 +28,20 @@ public abstract class BasicBehaviour implements Behavior{ leftMotor.setAcceleration(Constants.acceleration); rightMotor.stop(true); leftMotor.stop(true); - suppressed = SuppressedState.IDLE; + setSuppressed(SuppressedState.IDLE); + long time = System.currentTimeMillis(); + while(System.currentTimeMillis()-time > 250){ + Thread.yield(); + } } protected void measure(){ measMotor.backward(); - while(suppressed == SuppressedState.IN_ACTION && !measMotor.isStalled()){ + while(getSuppressed() == SuppressedState.IN_ACTION && !measMotor.isStalled()){ Thread.yield(); } measMotor.forward(); - while(suppressed == SuppressedState.IN_ACTION && !measMotor.isStalled()){ + while(getSuppressed() == SuppressedState.IN_ACTION && !measMotor.isStalled()){ Thread.yield(); } measMotor.stop(true); @@ -50,7 +54,7 @@ public abstract class BasicBehaviour implements Behavior{ sensors.resetGyro(); rightMotor.backward(); leftMotor.forward(); - while(suppressed == SuppressedState.IN_ACTION && Math.abs(sensors.gyro()) < angle){ + while(getSuppressed() == SuppressedState.IN_ACTION && Math.abs(sensors.gyro()) < angle){ Thread.yield(); } LCDPrinter.print(Float.toString(sensors.gyro())); @@ -62,20 +66,28 @@ public abstract class BasicBehaviour implements Behavior{ sensors.resetGyro(); leftMotor.backward(); rightMotor.forward(); - while(suppressed == SuppressedState.IN_ACTION && Math.abs(sensors.gyro()) < angle){ + while(getSuppressed() == SuppressedState.IN_ACTION && Math.abs(sensors.gyro()) < angle){ Thread.yield(); } LCDPrinter.print(Float.toString(sensors.gyro())); } + protected synchronized void setSuppressed(SuppressedState sup){ + suppressed = sup; + } + + protected SuppressedState getSuppressed(){ + return suppressed; + } + @Override public void action() { - suppressed = SuppressedState.IN_ACTION; + setSuppressed(SuppressedState.IN_ACTION); } @Override public void suppress() { - suppressed = SuppressedState.SUPPRESSED; + setSuppressed(SuppressedState.SUPPRESSED); } @Override public boolean takeControl(){