diff --git a/Desktop/src/org/droidplanner/desktop/logic/Clock.java b/Desktop/src/org/droidplanner/desktop/logic/Clock.java new file mode 100644 index 0000000000..ea61e0f24f --- /dev/null +++ b/Desktop/src/org/droidplanner/desktop/logic/Clock.java @@ -0,0 +1,8 @@ +package org.droidplanner.desktop.logic; + +public class Clock implements org.droidplanner.core.drone.DroneInterfaces.Clock { + @Override + public long elapsedRealtime() { + return System.currentTimeMillis(); + } +}; \ No newline at end of file diff --git a/Desktop/src/org/droidplanner/desktop/logic/FakeFactory.java b/Desktop/src/org/droidplanner/desktop/logic/FakeFactory.java index f2702668eb..d06a2cd44a 100644 --- a/Desktop/src/org/droidplanner/desktop/logic/FakeFactory.java +++ b/Desktop/src/org/droidplanner/desktop/logic/FakeFactory.java @@ -1,15 +1,5 @@ package org.droidplanner.desktop.logic; -import java.util.HashMap; -import java.util.Map; -import java.util.Stack; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -import org.droidplanner.core.drone.DroneInterfaces.Clock; -import org.droidplanner.core.drone.DroneInterfaces.Handler; import org.droidplanner.core.drone.Preferences; import org.droidplanner.core.drone.profiles.VehicleProfile; import org.droidplanner.core.firmware.FirmwareType; @@ -38,42 +28,4 @@ public Rates getRates() { }; } - static Handler fakeHandler() { - return new Handler() { - - private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); - private final Map> futureThreads = new HashMap>(); - - @Override - public void removeCallbacks(Runnable thread) { - if (futureThreads.containsKey(thread)) { - boolean mayInterruptIfRunning = false; - futureThreads.get(thread).cancel(mayInterruptIfRunning); - System.out.println("Canceled"); - } - } - - @Override - public void post(Runnable thread){ - scheduler.execute(thread); - } - - @Override - public void postDelayed(Runnable thread, long timeout) { - ScheduledFuture future = scheduler.schedule(thread, timeout, TimeUnit.MILLISECONDS); - futureThreads.put(thread, future); - System.out.println("PostDelayed"); - } - }; - } - - static Clock fakeClock() { - return new Clock() { - @Override - public long elapsedRealtime() { - return System.currentTimeMillis(); - } - }; - } - } diff --git a/Desktop/src/org/droidplanner/desktop/logic/Handler.java b/Desktop/src/org/droidplanner/desktop/logic/Handler.java new file mode 100644 index 0000000000..b0d72dadfd --- /dev/null +++ b/Desktop/src/org/droidplanner/desktop/logic/Handler.java @@ -0,0 +1,36 @@ +package org.droidplanner.desktop.logic; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +public class Handler implements + org.droidplanner.core.drone.DroneInterfaces.Handler { + + private final ScheduledExecutorService scheduler = Executors + .newSingleThreadScheduledExecutor(); + private final Map> futureThreads = new HashMap>(); + + @Override + public void removeCallbacks(Runnable thread) { + if (futureThreads.containsKey(thread)) { + boolean mayInterruptIfRunning = false; + futureThreads.get(thread).cancel(mayInterruptIfRunning); + } + } + + @Override + public void post(Runnable thread) { + scheduler.execute(thread); + } + + @Override + public void postDelayed(Runnable thread, long timeout) { + ScheduledFuture future = scheduler.schedule(thread, timeout, + TimeUnit.MILLISECONDS); + futureThreads.put(thread, future); + } +} diff --git a/Desktop/src/org/droidplanner/desktop/logic/Logic.java b/Desktop/src/org/droidplanner/desktop/logic/Logic.java index fd4fe186bc..2a4ad89377 100644 --- a/Desktop/src/org/droidplanner/desktop/logic/Logic.java +++ b/Desktop/src/org/droidplanner/desktop/logic/Logic.java @@ -5,7 +5,7 @@ import org.droidplanner.core.MAVLink.MavLinkMsgHandler; import org.droidplanner.core.drone.DroneImpl; -import org.droidplanner.core.drone.variables.helpers.MagnetometerCalibration; +import org.droidplanner.core.drone.DroneInterfaces.Handler; import org.droidplanner.core.gcs.follow.Follow; import org.droidplanner.core.model.Drone; import org.droidplanner.desktop.communication.Connection; @@ -22,10 +22,10 @@ public class Logic implements Runnable { public Logic() { - drone = new DroneImpl(link, FakeFactory.fakeClock(), FakeFactory.fakeHandler(), - FakeFactory.fakePreferences()); + Handler handler = new org.droidplanner.desktop.logic.Handler(); + drone = new DroneImpl(link, new Clock(), handler,FakeFactory.fakePreferences()); mavlinkHandler = new MavLinkMsgHandler(drone); - follow = new Follow(drone, FakeFactory.fakeHandler(), new FakeLocation()); + follow = new Follow(drone, handler, new FakeLocation()); } @Override