package de.otto.roborace.controller;
import de.otto.roborace.controller.EventLoop.EventLoopListener;
import de.otto.roborace.model.DataModel;
import lejos.hardware.motor.Motor;
/**
* Created by luca on 06.03.15.
*/
public class SpeedController implements EventLoopListener{
private DataModel dataModel;
private RacerController controller;
private int lastSpeed;
public SpeedController(DataModel dataModel, RacerController controller) {
this.dataModel = dataModel;
this.controller = controller;
System.out.println("started speedController.");
Motor.D.stop();//heat up motor code
Motor.A.stop();//heat up motor code
}
@Override
public void process() {
if(dataModel.getTargetSpeed() > 0 ) {
Motor.D.backward();
Motor.A.backward();
Motor.D.setSpeed(dataModel.getTargetSpeed());
Motor.A.setSpeed(dataModel.getTargetSpeed());
} else {
Motor.D.forward();
Motor.A.forward();
Motor.D.setSpeed(-dataModel.getTargetSpeed());
Motor.A.setSpeed(-dataModel.getTargetSpeed());
}
if(lastSpeed != Motor.A.getSpeed()) {
controller.speedChangeDetected();
}
lastSpeed = Motor.A.getSpeed();
}
}