AndroidAPS/app/src/main/java/info/nightscout/androidaps/queue/QueueThread.java

70 lines
2 KiB
Java
Raw Normal View History

2017-11-10 00:27:18 +01:00
package info.nightscout.androidaps.queue;
import android.os.SystemClock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
/**
* Created by mike on 09.11.2017.
*/
public class QueueThread extends Thread {
private static Logger log = LoggerFactory.getLogger(QueueThread.class);
CommandQueue queue;
boolean keepRunning = false;
private long connectionStartTime = 0;
public QueueThread(CommandQueue queue) {
super(QueueThread.class.toString());
this.queue = queue;
keepRunning = true;
}
@Override
public final void run() {
PumpInterface pump = ConfigBuilderPlugin.getActivePump();
while (keepRunning) {
if (pump.isConnecting()) {
long secondsElapsed = (System.currentTimeMillis() - connectionStartTime) / 1000;
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTING, (int) secondsElapsed));
SystemClock.sleep(1000);
}
if (!pump.isConnected()) {
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTING));
pump.connect("Not connected");
connectionStartTime = System.currentTimeMillis();
SystemClock.sleep(1000);
}
if (queue.performing() == null) {
// Pickup 1st command and set performing variable
if (queue.size() > 0) {
queue.pickup();
queue.performing().execute();
queue.resetPerforming();
}
}
if (queue.size() == 0 && queue.performing() == null) {
pump.disconnect("Queue empty");
keepRunning = false;
}
}
}
}