FHMasterSim.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package at.acdp.urweb.fhpp;
  2. import at.acdp.urweb.Params;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import java.util.concurrent.CompletableFuture;
  6. import java.util.concurrent.Executors;
  7. import java.util.concurrent.ScheduledExecutorService;
  8. public class FHMasterSim implements IFHMaster {
  9. private final static Logger logger = LoggerFactory.getLogger(FHMasterSim.class);
  10. private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
  11. private volatile boolean started = false;
  12. private int targetPos=-1;
  13. private float curPos=-1;
  14. private float simSpeed=0.1f;
  15. public FHMasterSim() {
  16. }
  17. @Override
  18. public void start(Params app) throws InterruptedException {
  19. started = true;
  20. while(true) {
  21. Thread.sleep(30);
  22. curPos = curPos + ((targetPos - curPos) * simSpeed);
  23. }
  24. }
  25. @Override
  26. public void direktAuftrag(int pos, int speed, int start, boolean relative, boolean stop) {
  27. logger.info("direktAuftrag {},{},{},{}", pos, speed, start, relative);
  28. targetPos=pos;
  29. }
  30. @Override
  31. public CompletableFuture<Status> readStatus() {
  32. Status s=new Status();
  33. s.istPosition = (int) curPos;
  34. s.enabled = true;
  35. return CompletableFuture.completedFuture(s);
  36. }
  37. @Override
  38. public void bereitschaft() {
  39. logger.info("bereitschaft");
  40. }
  41. @Override
  42. public void stop() {
  43. started = false;
  44. }
  45. }