RL: tasks -> kt, prevent NPE
This commit is contained in:
parent
80c325fb0f
commit
cec6595d0b
14 changed files with 208 additions and 395 deletions
|
@ -1,46 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.android.HasAndroidInjector;
|
||||
import info.nightscout.shared.logging.AAPSLogger;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
|
||||
|
||||
/**
|
||||
* Created by geoff on 7/9/16.
|
||||
*/
|
||||
public class DiscoverGattServicesTask extends ServiceTask {
|
||||
|
||||
|
||||
@Inject AAPSLogger aapsLogger;
|
||||
|
||||
public boolean needToConnect = false;
|
||||
|
||||
|
||||
public DiscoverGattServicesTask(HasAndroidInjector injector) {
|
||||
super(injector);
|
||||
}
|
||||
|
||||
|
||||
public DiscoverGattServicesTask(HasAndroidInjector injector, boolean needToConnect) {
|
||||
super(injector);
|
||||
this.needToConnect = needToConnect;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (!isRileyLinkDevice()) {
|
||||
return;
|
||||
}
|
||||
|
||||
RileyLinkPumpDevice pumpDevice = (RileyLinkPumpDevice) activePlugin.getActivePump();
|
||||
|
||||
if (needToConnect) {
|
||||
pumpDevice.getRileyLinkService().getRileyLinkBLE().connectGatt();
|
||||
}
|
||||
|
||||
pumpDevice.getRileyLinkService().getRileyLinkBLE().discoverServices();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import javax.inject.Inject
|
||||
|
||||
class DiscoverGattServicesTask(injector: HasAndroidInjector, private val needToConnect: Boolean = false) : ServiceTask(injector) {
|
||||
|
||||
@Inject lateinit var aapsLogger: AAPSLogger
|
||||
|
||||
override fun run() {
|
||||
if (needToConnect) pumpDevice?.rileyLinkService?.rileyLinkBLE?.connectGatt()
|
||||
pumpDevice?.rileyLinkService?.rileyLinkBLE?.discoverServices()
|
||||
}
|
||||
}
|
|
@ -1,126 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.android.HasAndroidInjector;
|
||||
import info.nightscout.shared.logging.AAPSLogger;
|
||||
import info.nightscout.shared.logging.LTag;
|
||||
import info.nightscout.androidaps.plugins.common.ManufacturerType;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkServiceState;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport;
|
||||
import info.nightscout.androidaps.utils.Round;
|
||||
import info.nightscout.shared.sharedPreferences.SP;
|
||||
|
||||
/**
|
||||
* Created by geoff on 7/9/16.
|
||||
* <p>
|
||||
* This class is intended to be run by the Service, for the Service. Not intended for clients to run.
|
||||
*/
|
||||
public class InitializePumpManagerTask extends ServiceTask {
|
||||
|
||||
@Inject AAPSLogger aapsLogger;
|
||||
//@Inject ActivePluginProvider activePlugin;
|
||||
@Inject SP sp;
|
||||
@Inject RileyLinkServiceData rileyLinkServiceData;
|
||||
@Inject RileyLinkUtil rileyLinkUtil;
|
||||
|
||||
private final Context context;
|
||||
|
||||
public InitializePumpManagerTask(HasAndroidInjector injector, Context context) {
|
||||
super(injector);
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public InitializePumpManagerTask(HasAndroidInjector injector, Context context, ServiceTransport transport) {
|
||||
super(injector, transport);
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (!isRileyLinkDevice()) {
|
||||
return;
|
||||
}
|
||||
|
||||
double lastGoodFrequency;
|
||||
|
||||
if (rileyLinkServiceData.lastGoodFrequency == null) {
|
||||
|
||||
lastGoodFrequency = sp.getDouble(RileyLinkConst.Prefs.LastGoodDeviceFrequency, 0.0d);
|
||||
lastGoodFrequency = Math.round(lastGoodFrequency * 1000d) / 1000d;
|
||||
|
||||
rileyLinkServiceData.lastGoodFrequency = lastGoodFrequency;
|
||||
|
||||
// if (RileyLinkUtil.getRileyLinkTargetFrequency() == null) {
|
||||
// String pumpFrequency = SP.getString(MedtronicConst.Prefs.PumpFrequency, null);
|
||||
// }
|
||||
} else {
|
||||
lastGoodFrequency = rileyLinkServiceData.lastGoodFrequency;
|
||||
}
|
||||
|
||||
/* FIXME this can apparently crash:
|
||||
Fatal Exception: java.lang.ClassCastException
|
||||
info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
|
||||
cannot be cast to info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice
|
||||
*/
|
||||
RileyLinkCommunicationManager<?> rileyLinkCommunicationManager = ((RileyLinkPumpDevice) activePlugin.getActivePump()).getRileyLinkService().getDeviceCommunicationManager();
|
||||
|
||||
if (activePlugin.getActivePump().manufacturer() == ManufacturerType.Medtronic) {
|
||||
|
||||
if ((lastGoodFrequency > 0.0d)
|
||||
&& rileyLinkCommunicationManager.isValidFrequency(lastGoodFrequency)) {
|
||||
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.RileyLinkReady);
|
||||
|
||||
aapsLogger.info(LTag.PUMPBTCOMM, String.format(Locale.ENGLISH, "Setting radio frequency to %.3f MHz", lastGoodFrequency));
|
||||
|
||||
rileyLinkCommunicationManager.setRadioFrequencyForPump(lastGoodFrequency);
|
||||
|
||||
boolean foundThePump = rileyLinkCommunicationManager.tryToConnectToDevice();
|
||||
|
||||
if (foundThePump) {
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.PumpConnectorReady);
|
||||
} else {
|
||||
rileyLinkServiceData.setServiceState(RileyLinkServiceState.PumpConnectorError,
|
||||
RileyLinkError.NoContactWithDevice);
|
||||
rileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump, context);
|
||||
}
|
||||
|
||||
} else {
|
||||
rileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump, context);
|
||||
}
|
||||
} else {
|
||||
|
||||
if (!Round.INSTANCE.isSame(lastGoodFrequency,
|
||||
RileyLinkTargetFrequency.Omnipod.getScanFrequencies()[0])) {
|
||||
lastGoodFrequency = RileyLinkTargetFrequency.Omnipod.getScanFrequencies()[0];
|
||||
lastGoodFrequency = Math.round(lastGoodFrequency * 1000d) / 1000d;
|
||||
|
||||
rileyLinkServiceData.lastGoodFrequency = lastGoodFrequency;
|
||||
}
|
||||
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.RileyLinkReady);
|
||||
rileyLinkServiceData.rileyLinkTargetFrequency = RileyLinkTargetFrequency.Omnipod; // TODO shouldn't be needed
|
||||
|
||||
aapsLogger.info(LTag.PUMPBTCOMM, String.format(Locale.ENGLISH, "Setting radio frequency to %.3f MHz", lastGoodFrequency));
|
||||
|
||||
rileyLinkCommunicationManager.setRadioFrequencyForPump(lastGoodFrequency);
|
||||
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.PumpConnectorReady);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
||||
|
||||
import android.content.Context
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.plugins.common.ManufacturerType
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkServiceState
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData
|
||||
import info.nightscout.androidaps.utils.Round.isSame
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import javax.inject.Inject
|
||||
import kotlin.math.roundToLong
|
||||
|
||||
/**
|
||||
* This class is intended to be run by the Service, for the Service. Not intended for clients to run.
|
||||
*/
|
||||
class InitializePumpManagerTask(injector: HasAndroidInjector, private val context: Context) : ServiceTask(injector) {
|
||||
|
||||
@Inject lateinit var aapsLogger: AAPSLogger
|
||||
@Inject lateinit var sp: SP
|
||||
@Inject lateinit var rileyLinkServiceData: RileyLinkServiceData
|
||||
@Inject lateinit var rileyLinkUtil: RileyLinkUtil
|
||||
|
||||
override fun run() {
|
||||
if (!isRileyLinkDevice) return
|
||||
|
||||
var lastGoodFrequency: Double
|
||||
if (rileyLinkServiceData.lastGoodFrequency == null) {
|
||||
lastGoodFrequency = sp.getDouble(RileyLinkConst.Prefs.LastGoodDeviceFrequency, 0.0)
|
||||
lastGoodFrequency = (lastGoodFrequency * 1000.0).roundToLong() / 1000.0
|
||||
rileyLinkServiceData.lastGoodFrequency = lastGoodFrequency
|
||||
|
||||
} else lastGoodFrequency = rileyLinkServiceData.lastGoodFrequency
|
||||
|
||||
val rileyLinkCommunicationManager = pumpDevice?.rileyLinkService?.deviceCommunicationManager
|
||||
if (activePlugin.activePump.manufacturer() === ManufacturerType.Medtronic) {
|
||||
if (lastGoodFrequency > 0.0 && rileyLinkCommunicationManager?.isValidFrequency(lastGoodFrequency) == true) {
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.RileyLinkReady)
|
||||
aapsLogger.info(LTag.PUMPBTCOMM, "Setting radio frequency to $lastGoodFrequency MHz")
|
||||
rileyLinkCommunicationManager.setRadioFrequencyForPump(lastGoodFrequency)
|
||||
if (rileyLinkCommunicationManager.tryToConnectToDevice()) rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.PumpConnectorReady)
|
||||
else {
|
||||
rileyLinkServiceData.setServiceState(RileyLinkServiceState.PumpConnectorError, RileyLinkError.NoContactWithDevice)
|
||||
rileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump, context)
|
||||
}
|
||||
} else rileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump, context)
|
||||
} else {
|
||||
if (!isSame(lastGoodFrequency, RileyLinkTargetFrequency.Omnipod.scanFrequencies[0])) {
|
||||
lastGoodFrequency = RileyLinkTargetFrequency.Omnipod.scanFrequencies[0]
|
||||
lastGoodFrequency = (lastGoodFrequency * 1000.0).roundToLong() / 1000.0
|
||||
rileyLinkServiceData.lastGoodFrequency = lastGoodFrequency
|
||||
}
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.RileyLinkReady)
|
||||
rileyLinkServiceData.rileyLinkTargetFrequency = RileyLinkTargetFrequency.Omnipod // TODO shouldn't be needed
|
||||
aapsLogger.info(LTag.PUMPBTCOMM, "Setting radio frequency to $lastGoodFrequency MHz")
|
||||
rileyLinkCommunicationManager?.setRadioFrequencyForPump(lastGoodFrequency)
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.PumpConnectorReady)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks;
|
||||
|
||||
import dagger.android.HasAndroidInjector;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport;
|
||||
|
||||
/**
|
||||
* Created by geoff on 7/10/16.
|
||||
*/
|
||||
public class PumpTask extends ServiceTask {
|
||||
|
||||
public PumpTask(HasAndroidInjector injector) {
|
||||
super(injector);
|
||||
}
|
||||
|
||||
|
||||
public PumpTask(HasAndroidInjector injector, ServiceTransport transport) {
|
||||
super(injector, transport);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport
|
||||
|
||||
open class PumpTask(injector: HasAndroidInjector) : ServiceTask(injector)
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.android.HasAndroidInjector;
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.pump.common.events.EventRefreshButtonState;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
|
||||
|
||||
/**
|
||||
* Created by andy on 9/16/18.
|
||||
*/
|
||||
public class ResetRileyLinkConfigurationTask extends PumpTask {
|
||||
|
||||
@Inject ActivePlugin activePlugin;
|
||||
@Inject RxBus rxBus;
|
||||
@Inject RFSpy rfSpy;
|
||||
|
||||
public ResetRileyLinkConfigurationTask(HasAndroidInjector injector) {
|
||||
super(injector);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (!isRileyLinkDevice()) {
|
||||
return;
|
||||
}
|
||||
|
||||
RileyLinkPumpDevice rileyLinkPumpDevice = (RileyLinkPumpDevice) activePlugin.getActivePump();
|
||||
|
||||
rxBus.send(new EventRefreshButtonState(false));
|
||||
|
||||
rileyLinkPumpDevice.setBusy(true);
|
||||
rfSpy.resetRileyLinkConfiguration();
|
||||
rileyLinkPumpDevice.setBusy(false);
|
||||
|
||||
rxBus.send(new EventRefreshButtonState(true));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.pump.common.events.EventRefreshButtonState
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy
|
||||
import javax.inject.Inject
|
||||
|
||||
class ResetRileyLinkConfigurationTask(injector: HasAndroidInjector) : PumpTask(injector) {
|
||||
|
||||
@Inject lateinit var rxBus: RxBus
|
||||
@Inject lateinit var rfSpy: RFSpy
|
||||
|
||||
override fun run() {
|
||||
if (!isRileyLinkDevice) return
|
||||
rxBus.send(EventRefreshButtonState(false))
|
||||
pumpDevice?.setBusy(true)
|
||||
rfSpy.resetRileyLinkConfiguration()
|
||||
pumpDevice?.setBusy(false)
|
||||
rxBus.send(EventRefreshButtonState(true))
|
||||
}
|
||||
}
|
|
@ -1,71 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.android.HasAndroidInjector;
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport;
|
||||
|
||||
/**
|
||||
* Created by geoff on 7/9/16.
|
||||
*/
|
||||
public class ServiceTask implements Runnable {
|
||||
|
||||
@Inject protected ActivePlugin activePlugin;
|
||||
|
||||
public boolean completed = false;
|
||||
protected ServiceTransport mTransport;
|
||||
protected HasAndroidInjector injector;
|
||||
|
||||
|
||||
public ServiceTask(HasAndroidInjector injector) {
|
||||
this.injector = injector;
|
||||
injector.androidInjector().inject(this);
|
||||
init(new ServiceTransport());
|
||||
}
|
||||
|
||||
|
||||
public ServiceTask(HasAndroidInjector injector, ServiceTransport transport) {
|
||||
this.injector = injector;
|
||||
injector.androidInjector().inject(this);
|
||||
init(transport);
|
||||
}
|
||||
|
||||
|
||||
public void init(ServiceTransport transport) {
|
||||
mTransport = transport;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
}
|
||||
|
||||
|
||||
public void preOp() {
|
||||
// This function is called by UI thread before running asynch thread.
|
||||
}
|
||||
|
||||
|
||||
public void postOp() {
|
||||
// This function is called by UI thread after running asynch thread.
|
||||
}
|
||||
|
||||
|
||||
public ServiceTransport getServiceTransport() {
|
||||
return mTransport;
|
||||
}
|
||||
|
||||
/*
|
||||
* protected void sendResponse(ServiceResult result) {
|
||||
* RoundtripService.getInstance().sendServiceTransportResponse(mTransport,result);
|
||||
* }
|
||||
*/
|
||||
|
||||
public boolean isRileyLinkDevice() {
|
||||
return (activePlugin.getActivePump() instanceof RileyLinkPumpDevice);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport
|
||||
import javax.inject.Inject
|
||||
|
||||
@Suppress("LeakingThis")
|
||||
open class ServiceTask constructor(val injector: HasAndroidInjector, val serviceTransport: ServiceTransport = ServiceTransport()) : Runnable {
|
||||
|
||||
@Inject lateinit var activePlugin: ActivePlugin
|
||||
|
||||
var completed = false
|
||||
|
||||
init {
|
||||
injector.androidInjector().inject(this)
|
||||
}
|
||||
|
||||
override fun run() {}
|
||||
|
||||
// This function is called by UI thread before running async thread.
|
||||
fun preOp() {}
|
||||
|
||||
// This function is called by UI thread after running async thread.
|
||||
fun postOp() {}
|
||||
|
||||
val isRileyLinkDevice: Boolean
|
||||
get() = activePlugin.activePump is RileyLinkPumpDevice
|
||||
|
||||
val pumpDevice: RileyLinkPumpDevice?
|
||||
get() = if (isRileyLinkDevice) activePlugin.activePump as RileyLinkPumpDevice else null
|
||||
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks;
|
||||
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import info.nightscout.shared.logging.AAPSLogger;
|
||||
import info.nightscout.shared.logging.LTag;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
|
||||
|
||||
/**
|
||||
* Created by geoff on 7/9/16.
|
||||
*/
|
||||
@Singleton
|
||||
public class ServiceTaskExecutor extends ThreadPoolExecutor {
|
||||
|
||||
@Inject RileyLinkUtil rileyLinkUtil;
|
||||
@Inject AAPSLogger aapsLogger;
|
||||
|
||||
private static final LinkedBlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<>();
|
||||
|
||||
@Inject
|
||||
public ServiceTaskExecutor() {
|
||||
super(1, 1, 10000, TimeUnit.MILLISECONDS, taskQueue);
|
||||
}
|
||||
|
||||
public ServiceTask startTask(ServiceTask task) {
|
||||
execute(task); // task will be run on async thread from pool.
|
||||
return task;
|
||||
}
|
||||
|
||||
// FIXME
|
||||
@Override protected void beforeExecute(Thread t, Runnable r) {
|
||||
// This is run on either caller UI thread or Service UI thread.
|
||||
ServiceTask task = (ServiceTask) r;
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "About to run task " + task.getClass().getSimpleName());
|
||||
rileyLinkUtil.setCurrentTask(task);
|
||||
task.preOp();
|
||||
}
|
||||
|
||||
|
||||
// FIXME
|
||||
@Override protected void afterExecute(Runnable r, Throwable t) {
|
||||
// This is run on either caller UI thread or Service UI thread.
|
||||
ServiceTask task = (ServiceTask) r;
|
||||
task.postOp();
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "Finishing task " + task.getClass().getSimpleName());
|
||||
rileyLinkUtil.finishCurrentTask(task);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import java.util.concurrent.LinkedBlockingQueue
|
||||
import java.util.concurrent.ThreadPoolExecutor
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class ServiceTaskExecutor @Inject constructor() : ThreadPoolExecutor(1, 1, 10000, TimeUnit.MILLISECONDS, taskQueue) {
|
||||
|
||||
@Inject lateinit var rileyLinkUtil: RileyLinkUtil
|
||||
@Inject lateinit var aapsLogger: AAPSLogger
|
||||
|
||||
companion object {
|
||||
|
||||
private val taskQueue = LinkedBlockingQueue<Runnable>()
|
||||
}
|
||||
|
||||
fun startTask(task: ServiceTask): ServiceTask {
|
||||
execute(task) // task will be run on async thread from pool.
|
||||
return task
|
||||
}
|
||||
|
||||
// FIXME
|
||||
override fun beforeExecute(t: Thread, r: Runnable) {
|
||||
// This is run on either caller UI thread or Service UI thread.
|
||||
val task = r as ServiceTask
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "About to run task ${task.javaClass.simpleName}")
|
||||
rileyLinkUtil.setCurrentTask(task)
|
||||
task.preOp()
|
||||
}
|
||||
|
||||
// FIXME
|
||||
override fun afterExecute(r: Runnable, t: Throwable) {
|
||||
// This is run on either caller UI thread or Service UI thread.
|
||||
val task = r as ServiceTask
|
||||
task.postOp()
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "Finishing task ${task.javaClass.simpleName}")
|
||||
rileyLinkUtil.finishCurrentTask(task)
|
||||
}
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.android.HasAndroidInjector;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.pump.common.events.EventRefreshButtonState;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
|
||||
|
||||
/**
|
||||
* Created by geoff on 7/16/16.
|
||||
*/
|
||||
public class WakeAndTuneTask extends PumpTask {
|
||||
|
||||
//@Inject ActivePluginProvider activePlugin;
|
||||
@Inject RxBus rxBus;
|
||||
|
||||
private static final String TAG = "WakeAndTuneTask";
|
||||
|
||||
public WakeAndTuneTask(HasAndroidInjector injector) {
|
||||
super(injector);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (!isRileyLinkDevice()) {
|
||||
return;
|
||||
}
|
||||
|
||||
RileyLinkPumpDevice pumpDevice = (RileyLinkPumpDevice) activePlugin.getActivePump();
|
||||
rxBus.send(new EventRefreshButtonState(false));
|
||||
pumpDevice.setBusy(true);
|
||||
pumpDevice.getRileyLinkService().doTuneUpDevice();
|
||||
pumpDevice.setBusy(false);
|
||||
rxBus.send(new EventRefreshButtonState(true));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.pump.common.events.EventRefreshButtonState
|
||||
import javax.inject.Inject
|
||||
|
||||
class WakeAndTuneTask(injector: HasAndroidInjector) : PumpTask(injector) {
|
||||
|
||||
@Inject lateinit var rxBus: RxBus
|
||||
|
||||
override fun run() {
|
||||
rxBus.send(EventRefreshButtonState(false))
|
||||
pumpDevice?.setBusy(true)
|
||||
pumpDevice?.rileyLinkService?.doTuneUpDevice()
|
||||
pumpDevice?.setBusy(false)
|
||||
rxBus.send(EventRefreshButtonState(true))
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue