diff --git a/train-controller/src/main/java/hu/bme/mit/train/controller/TrainControllerImpl.java b/train-controller/src/main/java/hu/bme/mit/train/controller/TrainControllerImpl.java index 7a2f165b5..9ad39a0c0 100644 --- a/train-controller/src/main/java/hu/bme/mit/train/controller/TrainControllerImpl.java +++ b/train-controller/src/main/java/hu/bme/mit/train/controller/TrainControllerImpl.java @@ -3,12 +3,21 @@ import hu.bme.mit.train.interfaces.TrainController; import java.util.Date; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; public class TrainControllerImpl implements TrainController { private int step = 0; private int referenceSpeed = 0; private int speedLimit = 0; + private ScheduledExecutorService scheduler; + + public TrainControllerImpl() { + scheduler = Executors.newSingleThreadScheduledExecutor(); + scheduler.scheduleAtFixedRate(new UpdateSpeedTask(), 0, 1, TimeUnit.SECONDS); + } @Override public void followSpeed() { @@ -50,5 +59,25 @@ public void setJoystickPosition(int joystickPosition) { @Override public void setEmergencyBrake(boolean EmergencyBrake){referenceSpeed=0;} + class UpdateSpeedTask implements Runnable { + @Override + public void run() { + updateReferenceSpeed(); + } + + private void updateReferenceSpeed() { + if (step > 0) { + referenceSpeed += step; + } + else if (step < 0) { + referenceSpeed-= Math.abs(step); + } + + if (referenceSpeed < 0) + { + referenceSpeed = 0; + } + } +} }