RileyLinkServiceData -> kt
This commit is contained in:
parent
23bdb57ed3
commit
9e29cbc2fe
9 changed files with 91 additions and 132 deletions
|
@ -188,7 +188,7 @@ class MedtronicFragment : DaggerFragment() {
|
|||
@Synchronized
|
||||
private fun setDeviceStatus() {
|
||||
val resourceId = rileyLinkServiceData.rileyLinkServiceState.resourceId
|
||||
val rileyLinkError = medtronicPumpPlugin.rileyLinkService?.error
|
||||
val rileyLinkError =rileyLinkServiceData.rileyLinkError
|
||||
binding.rlStatus.text =
|
||||
when {
|
||||
rileyLinkServiceData.rileyLinkServiceState == RileyLinkServiceState.NotStarted -> rh.gs(resourceId)
|
||||
|
|
|
@ -375,7 +375,7 @@ public class OmnipodErosPumpPlugin extends PumpPluginBase implements Pump, Riley
|
|||
}
|
||||
|
||||
public boolean isRileyLinkReady() {
|
||||
return rileyLinkServiceData.rileyLinkServiceState.isReady();
|
||||
return rileyLinkServiceData.getRileyLinkServiceState().isReady();
|
||||
}
|
||||
|
||||
private void handleCancelledTbr() {
|
||||
|
@ -1014,7 +1014,7 @@ public class OmnipodErosPumpPlugin extends PumpPluginBase implements Pump, Riley
|
|||
// - RileyLink has been connecting for over RILEY_LINK_CONNECT_TIMEOUT
|
||||
return (podStateManager.getLastFailedCommunication() != null && podStateManager.getLastSuccessfulCommunication().isBefore(podStateManager.getLastFailedCommunication())) ||
|
||||
podStateManager.isSuspended() ||
|
||||
rileyLinkServiceData.rileyLinkServiceState.isError() ||
|
||||
rileyLinkServiceData.getRileyLinkServiceState().isError() ||
|
||||
// The below clause is a hack for working around the RL service state forever staying in connecting state on startup if the RL is switched off / unreachable
|
||||
(rileyLinkServiceData.getRileyLinkServiceState().isConnecting() && rileyLinkServiceData.getLastServiceStateChange() + RILEY_LINK_CONNECT_TIMEOUT_MILLIS < currentTimeMillis);
|
||||
}
|
||||
|
|
|
@ -97,10 +97,8 @@ public class RileyLinkOmnipodService extends RileyLinkService {
|
|||
|
||||
/* private functions */
|
||||
|
||||
// PumpInterface - REMOVE
|
||||
|
||||
public boolean isInitialized() {
|
||||
return rileyLinkServiceData.rileyLinkServiceState.isReady();
|
||||
return rileyLinkServiceData.getRileyLinkServiceState().isReady();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -72,7 +72,7 @@ class RileyLinkStatusGeneralFragment : DaggerFragment() {
|
|||
}
|
||||
val rileyLinkPumpDevice = activePlugin.activePump as RileyLinkPumpDevice
|
||||
val rileyLinkPumpInfo = rileyLinkPumpDevice.pumpInfo
|
||||
binding.deviceType.setText(targetDevice.resourceId)
|
||||
targetDevice?.resourceId?.let { binding.deviceType.setText(it) }
|
||||
if (targetDevice == RileyLinkTargetDevice.MedtronicPump) {
|
||||
binding.connectedDeviceDetails.visibility = View.VISIBLE
|
||||
binding.configuredDeviceModel.text = activePlugin.activePump.pumpDescription.pumpType.description
|
||||
|
|
|
@ -153,7 +153,7 @@ class RileyLinkBroadcastReceiver : DaggerBroadcastReceiver() {
|
|||
|
||||
private fun processTuneUpBroadcasts(action: String): Boolean =
|
||||
if (broadcastIdentifiers["TuneUp"]?.contains(action) == true) {
|
||||
if (rileyLinkService?.rileyLinkTargetDevice?.isTuneUpEnabled == true) serviceTaskExecutor.startTask(WakeAndTuneTask(injector))
|
||||
if (rileyLinkServiceData.targetDevice?.isTuneUpEnabled == true) serviceTaskExecutor.startTask(WakeAndTuneTask(injector))
|
||||
true
|
||||
} else false
|
||||
}
|
|
@ -94,7 +94,7 @@ abstract class RileyLinkService : DaggerService() {
|
|||
|
||||
fun bluetoothInit(): Boolean {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "bluetoothInit: attempting to get an adapter")
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.BluetoothInitializing)
|
||||
rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.BluetoothInitializing
|
||||
if (bluetoothAdapter == null) {
|
||||
aapsLogger.error("Unable to obtain a BluetoothAdapter.")
|
||||
rileyLinkServiceData.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.NoBluetoothAdapter)
|
||||
|
@ -103,7 +103,7 @@ abstract class RileyLinkService : DaggerService() {
|
|||
aapsLogger.error("Bluetooth is not enabled.")
|
||||
rileyLinkServiceData.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.BluetoothDisabled)
|
||||
} else {
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.BluetoothReady)
|
||||
rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.BluetoothReady
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ abstract class RileyLinkService : DaggerService() {
|
|||
|
||||
// returns true if our Rileylink configuration changed
|
||||
fun reconfigureRileyLink(deviceAddress: String): Boolean {
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.RileyLinkInitializing)
|
||||
rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.RileyLinkInitializing
|
||||
return if (rileyLinkBLE.isConnected) {
|
||||
if (deviceAddress == rileyLinkServiceData.rileyLinkAddress) {
|
||||
aapsLogger.info(LTag.PUMPBTCOMM, "No change to RL address. Not reconnecting.")
|
||||
|
@ -128,9 +128,9 @@ abstract class RileyLinkService : DaggerService() {
|
|||
}
|
||||
} else {
|
||||
aapsLogger.debug(LTag.PUMPBTCOMM, "Using RL $deviceAddress")
|
||||
if (rileyLinkServiceData.getRileyLinkServiceState() == RileyLinkServiceState.NotStarted) {
|
||||
if (rileyLinkServiceData.rileyLinkServiceState == RileyLinkServiceState.NotStarted) {
|
||||
if (!bluetoothInit()) {
|
||||
aapsLogger.error("RileyLink can't get activated, Bluetooth is not functioning correctly. ${error?.name ?: "Unknown error (null)"}")
|
||||
aapsLogger.error("RileyLink can't get activated, Bluetooth is not functioning correctly. ${rileyLinkServiceData.rileyLinkError?.name ?: "Unknown error (null)"}")
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
@ -141,7 +141,7 @@ abstract class RileyLinkService : DaggerService() {
|
|||
|
||||
// FIXME: This needs to be run in a session so that is incorruptible, has a separate thread, etc.
|
||||
fun doTuneUpDevice() {
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.TuneUpDevice)
|
||||
rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.TuneUpDevice
|
||||
setPumpDeviceState(PumpDeviceState.Sleeping)
|
||||
val lastGoodFrequency = rileyLinkServiceData.lastGoodFrequency ?: sp.getDouble(RileyLinkConst.Prefs.LastGoodDeviceFrequency, 0.0)
|
||||
val newFrequency = deviceCommunicationManager.tuneForDevice()
|
||||
|
@ -157,7 +157,7 @@ abstract class RileyLinkService : DaggerService() {
|
|||
rileyLinkServiceData.setServiceState(RileyLinkServiceState.PumpConnectorError, RileyLinkError.TuneUpOfDeviceFailed)
|
||||
} else {
|
||||
deviceCommunicationManager.clearNotConnectedCount()
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.PumpConnectorReady)
|
||||
rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.PumpConnectorReady
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,22 +168,13 @@ abstract class RileyLinkService : DaggerService() {
|
|||
rileyLinkServiceData.rileyLinkAddress = null
|
||||
rileyLinkServiceData.rileyLinkName = null
|
||||
}
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.BluetoothReady)
|
||||
rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.BluetoothReady
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Target Device for Service
|
||||
*/
|
||||
val rileyLinkTargetDevice: RileyLinkTargetDevice
|
||||
get() = rileyLinkServiceData.targetDevice
|
||||
|
||||
fun changeRileyLinkEncoding(encodingType: RileyLinkEncodingType?) {
|
||||
rfSpy.setRileyLinkEncoding(encodingType)
|
||||
}
|
||||
|
||||
val error: RileyLinkError?
|
||||
get() = rileyLinkServiceData.rileyLinkError
|
||||
|
||||
fun verifyConfiguration(): Boolean {
|
||||
return verifyConfiguration(false)
|
||||
}
|
||||
|
|
|
@ -1,103 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkFirmwareVersion;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem;
|
||||
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.defs.RileyLinkTargetDevice;
|
||||
import info.nightscout.shared.logging.AAPSLogger;
|
||||
import info.nightscout.shared.logging.LTag;
|
||||
|
||||
/**
|
||||
* Created by andy on 16/05/2018.
|
||||
*/
|
||||
|
||||
// FIXME encapsulation
|
||||
@Singleton
|
||||
public class RileyLinkServiceData {
|
||||
|
||||
@Inject AAPSLogger aapsLogger;
|
||||
@Inject RileyLinkUtil rileyLinkUtil;
|
||||
@Inject RxBus rxBus;
|
||||
|
||||
boolean tuneUpDone = false;
|
||||
@Nullable public RileyLinkError rileyLinkError;
|
||||
public RileyLinkServiceState rileyLinkServiceState = RileyLinkServiceState.NotStarted;
|
||||
private long lastServiceStateChange = 0L;
|
||||
@Nullable public RileyLinkFirmwareVersion firmwareVersion; // here we have "compatibility level" version
|
||||
@Nullable public RileyLinkTargetFrequency rileyLinkTargetFrequency;
|
||||
@Nullable public String rileyLinkAddress;
|
||||
@Nullable public String rileyLinkName;
|
||||
@Nullable public Integer batteryLevel;
|
||||
public boolean showBatteryLevel = false;
|
||||
long lastTuneUpTime = 0L;
|
||||
@Nullable public Double lastGoodFrequency;
|
||||
|
||||
// bt version
|
||||
@Nullable public String versionBLE113;
|
||||
// radio version
|
||||
@Nullable public String versionCC110;
|
||||
|
||||
// orangeLink
|
||||
public boolean isOrange = false;
|
||||
@Nullable public String versionOrangeFirmware;
|
||||
@Nullable public String versionOrangeHardware;
|
||||
|
||||
public RileyLinkTargetDevice targetDevice;
|
||||
|
||||
// Medtronic Pump
|
||||
public String pumpID;
|
||||
public byte[] pumpIDBytes;
|
||||
|
||||
@Inject
|
||||
public RileyLinkServiceData() {
|
||||
}
|
||||
|
||||
public void setPumpID(String pumpId, byte[] pumpIdBytes) {
|
||||
this.pumpID = pumpId;
|
||||
this.pumpIDBytes = pumpIdBytes;
|
||||
}
|
||||
|
||||
public void setRileyLinkServiceState(RileyLinkServiceState newState) {
|
||||
setServiceState(newState, null);
|
||||
}
|
||||
|
||||
public RileyLinkServiceState getRileyLinkServiceState() {
|
||||
return workWithServiceState(null, null, false);
|
||||
}
|
||||
|
||||
public void setServiceState(RileyLinkServiceState newState, RileyLinkError errorCode) {
|
||||
workWithServiceState(newState, errorCode, true);
|
||||
}
|
||||
|
||||
public long getLastServiceStateChange() {
|
||||
return lastServiceStateChange;
|
||||
}
|
||||
|
||||
private synchronized RileyLinkServiceState workWithServiceState(RileyLinkServiceState newState, RileyLinkError errorCode, boolean set) {
|
||||
if (set) {
|
||||
rileyLinkServiceState = newState;
|
||||
lastServiceStateChange = System.currentTimeMillis();
|
||||
this.rileyLinkError = errorCode;
|
||||
|
||||
aapsLogger.info(LTag.PUMP, String.format(Locale.ENGLISH, "RileyLink State Changed: %s %s", newState, errorCode == null ? "" : " - Error State: " + errorCode.name()));
|
||||
|
||||
rileyLinkUtil.getRileyLinkHistory().add(new RLHistoryItem(rileyLinkServiceState, errorCode, targetDevice));
|
||||
rxBus.send(new EventRileyLinkDeviceStatusChange(targetDevice, newState, errorCode));
|
||||
return null;
|
||||
} else {
|
||||
return rileyLinkServiceState;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service
|
||||
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkFirmwareVersion
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem
|
||||
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.defs.RileyLinkTargetDevice
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
/**
|
||||
* Created by andy on 16/05/2018.
|
||||
*/
|
||||
@Singleton
|
||||
class RileyLinkServiceData @Inject constructor() {
|
||||
|
||||
@Inject lateinit var aapsLogger: AAPSLogger
|
||||
@Inject lateinit var rileyLinkUtil: RileyLinkUtil
|
||||
@Inject lateinit var rxBus: RxBus
|
||||
var tuneUpDone = false
|
||||
var rileyLinkError: RileyLinkError? = null
|
||||
var rileyLinkServiceState: RileyLinkServiceState = RileyLinkServiceState.NotStarted
|
||||
var lastServiceStateChange = 0L
|
||||
private set
|
||||
|
||||
// here we have "compatibility level" version
|
||||
@JvmField var firmwareVersion: RileyLinkFirmwareVersion? = null
|
||||
@JvmField var rileyLinkTargetFrequency: RileyLinkTargetFrequency? = null
|
||||
@JvmField var rileyLinkAddress: String? = null
|
||||
@JvmField var rileyLinkName: String? = null
|
||||
@JvmField var batteryLevel: Int? = null
|
||||
var showBatteryLevel = false
|
||||
var lastTuneUpTime = 0L
|
||||
var lastGoodFrequency: Double? = null
|
||||
|
||||
// bt version
|
||||
var versionBLE113: String? = null
|
||||
|
||||
// radio version
|
||||
@JvmField var versionCC110: String? = null
|
||||
|
||||
// orangeLink
|
||||
var isOrange = false
|
||||
var versionOrangeFirmware: String? = null
|
||||
var versionOrangeHardware: String? = null
|
||||
@JvmField var targetDevice: RileyLinkTargetDevice? = null
|
||||
|
||||
// Medtronic Pump
|
||||
var pumpID: String? = null
|
||||
var pumpIDBytes: ByteArray = byteArrayOf(0, 0, 0)
|
||||
|
||||
fun setPumpID(pumpId: String?, pumpIdBytes: ByteArray) {
|
||||
pumpID = pumpId
|
||||
pumpIDBytes = pumpIdBytes
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun setServiceState(newState: RileyLinkServiceState, errorCode: RileyLinkError) {
|
||||
rileyLinkServiceState = newState
|
||||
lastServiceStateChange = System.currentTimeMillis()
|
||||
rileyLinkError = errorCode
|
||||
aapsLogger.info(LTag.PUMP, String.format(Locale.ENGLISH, "RileyLink State Changed: $newState - Error State: ${errorCode.name}"))
|
||||
rileyLinkUtil.rileyLinkHistory.add(RLHistoryItem(rileyLinkServiceState, errorCode, targetDevice))
|
||||
rxBus.send(EventRileyLinkDeviceStatusChange(targetDevice!!, newState, errorCode))
|
||||
}
|
||||
}
|
|
@ -39,10 +39,10 @@ class InitializePumpManagerTask(injector: HasAndroidInjector, private val contex
|
|||
val rileyLinkCommunicationManager = pumpDevice?.rileyLinkService?.deviceCommunicationManager
|
||||
if (activePlugin.activePump.manufacturer() === ManufacturerType.Medtronic) {
|
||||
if (lastGoodFrequency > 0.0 && rileyLinkCommunicationManager?.isValidFrequency(lastGoodFrequency) == true) {
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.RileyLinkReady)
|
||||
rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.RileyLinkReady
|
||||
aapsLogger.info(LTag.PUMPBTCOMM, "Setting radio frequency to $lastGoodFrequency MHz")
|
||||
rileyLinkCommunicationManager.setRadioFrequencyForPump(lastGoodFrequency)
|
||||
if (rileyLinkCommunicationManager.tryToConnectToDevice()) rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.PumpConnectorReady)
|
||||
if (rileyLinkCommunicationManager.tryToConnectToDevice()) rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.PumpConnectorReady
|
||||
else {
|
||||
rileyLinkServiceData.setServiceState(RileyLinkServiceState.PumpConnectorError, RileyLinkError.NoContactWithDevice)
|
||||
rileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump, context)
|
||||
|
@ -54,11 +54,11 @@ class InitializePumpManagerTask(injector: HasAndroidInjector, private val contex
|
|||
lastGoodFrequency = (lastGoodFrequency * 1000.0).roundToLong() / 1000.0
|
||||
rileyLinkServiceData.lastGoodFrequency = lastGoodFrequency
|
||||
}
|
||||
rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.RileyLinkReady)
|
||||
rileyLinkServiceData.rileyLinkServiceState = 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)
|
||||
rileyLinkServiceData.rileyLinkServiceState = RileyLinkServiceState.PumpConnectorReady
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue