diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt index 164dd0def0..4e6161473d 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/FragmentsModule.kt @@ -32,6 +32,8 @@ import info.nightscout.androidaps.plugins.insulin.InsulinFragment import info.nightscout.androidaps.plugins.profile.local.LocalProfileFragment import info.nightscout.androidaps.plugins.profile.ns.NSProfileFragment import info.nightscout.androidaps.plugins.pump.combo.ComboFragment +import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusGeneralFragment +import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusHistoryFragment import info.nightscout.androidaps.plugins.pump.danaR.DanaRFragment import info.nightscout.androidaps.plugins.pump.insight.LocalInsightFragment import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicFragment @@ -113,4 +115,7 @@ abstract class FragmentsModule { @ContributesAndroidInjector abstract fun contributesWizardInfoDialog(): WizardInfoDialog @ContributesAndroidInjector abstract fun contributesPasswordCheck(): PasswordCheck + + @ContributesAndroidInjector abstract fun contributesRileyLinkStatusGeneral(): RileyLinkStatusGeneralFragment + @ContributesAndroidInjector abstract fun contributesRileyLinkStatusHistoryFragment(): RileyLinkStatusHistoryFragment } \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ReceiversModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ReceiversModule.kt index 6aa97bee69..0921ed7cd0 100644 --- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ReceiversModule.kt +++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ReceiversModule.kt @@ -3,6 +3,7 @@ package info.nightscout.androidaps.dependencyInjection import dagger.Module import dagger.android.ContributesAndroidInjector import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkBluetoothStateReceiver +import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkBroadcastReceiver import info.nightscout.androidaps.receivers.* @Module @@ -17,4 +18,6 @@ abstract class ReceiversModule { @ContributesAndroidInjector abstract fun contributesRileyLinkBluetoothStateReceiver(): RileyLinkBluetoothStateReceiver @ContributesAndroidInjector abstract fun contributesSmsReceiver(): SmsReceiver @ContributesAndroidInjector abstract fun contributesTimeDateOrTZChangeReceiver(): TimeDateOrTZChangeReceiver + + @ContributesAndroidInjector abstract fun contributesRileyLinkBroadcastReceiver(): RileyLinkBroadcastReceiver } \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java index ebea05f906..008d2daac7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java @@ -70,6 +70,7 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI .enacted(false).comment(MainApp.gs(R.string.pump_operation_not_yet_supported_by_pump)); */ protected PumpDescription pumpDescription = new PumpDescription(); + @Deprecated // TODO remove this reference protected PumpStatus pumpStatus; protected ServiceConnection serviceConnection = null; protected boolean serviceRunning = false; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java index e292808ded..a0cba01cc9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java @@ -60,6 +60,8 @@ public class RileyLinkBLEScanActivity extends NoSplashAppCompatActivity { @Inject SP sp; @Inject RxBusWrapper rxBus; @Inject ResourceHelper resourceHelper; + @Inject RileyLinkUtil rileyLinkUtil; + @Inject MedtronicUtil medtronicUtil; private static final int PERMISSION_REQUEST_COARSE_LOCATION = 30241; // arbitrary. private static final int REQUEST_ENABLE_BT = 30242; // arbitrary @@ -108,9 +110,9 @@ public class RileyLinkBLEScanActivity extends NoSplashAppCompatActivity { sp.putString(RileyLinkConst.Prefs.RileyLinkAddress, bleAddress); - RileyLinkUtil.getRileyLinkSelectPreference().setSummary(bleAddress); + rileyLinkUtil.getRileyLinkSelectPreference().setSummary(bleAddress); - MedtronicPumpStatus pumpStatus = MedtronicUtil.getPumpStatus(); + MedtronicPumpStatus pumpStatus = medtronicUtil.getPumpStatus(); pumpStatus.verifyConfiguration(); // force reloading of address rxBus.send(new EventMedtronicPumpConfigurationChanged()); @@ -189,7 +191,7 @@ public class RileyLinkBLEScanActivity extends NoSplashAppCompatActivity { } // disable currently selected RL, so that we can discover it - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkDisconnect); + rileyLinkUtil.sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkDisconnect); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java index 47d2181252..e16f686db4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java @@ -51,8 +51,8 @@ public abstract class RileyLinkCommunicationManager { public RileyLinkCommunicationManager(RFSpy rfspy) { this.rfspy = rfspy; - this.rileyLinkServiceData = RileyLinkUtil.getRileyLinkServiceData(); - RileyLinkUtil.setRileyLinkCommunicationManager(this); + this.rileyLinkServiceData = RileyLinkUtil.getInstance().getRileyLinkServiceData(); + RileyLinkUtil.getInstance().setRileyLinkCommunicationManager(this); configurePumpSpecificSettings(); } @@ -151,7 +151,7 @@ public abstract class RileyLinkCommunicationManager { // **** FIXME: this wakeup doesn't seem to work well... must revisit // receiverDeviceAwakeForMinutes = duration_minutes; - MedtronicUtil.setPumpDeviceState(PumpDeviceState.WakingUp); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.WakingUp); if (force) nextWakeUpRequired = 0L; @@ -195,7 +195,7 @@ public abstract class RileyLinkCommunicationManager { public double tuneForDevice() { - return scanForDevice(RileyLinkUtil.getRileyLinkTargetFrequency().getScanFrequencies()); + return scanForDevice(RileyLinkUtil.getInstance().getRileyLinkTargetFrequency().getScanFrequencies()); } @@ -209,7 +209,7 @@ public abstract class RileyLinkCommunicationManager { */ public boolean isValidFrequency(double frequency) { - double[] scanFrequencies = RileyLinkUtil.getRileyLinkTargetFrequency().getScanFrequencies(); + double[] scanFrequencies = RileyLinkUtil.getInstance().getRileyLinkTargetFrequency().getScanFrequencies(); if (scanFrequencies.length == 1) { return RileyLinkUtil.isSame(scanFrequencies[0], frequency); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java index 71006e2c34..22edb8ce1a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java @@ -5,8 +5,7 @@ import android.content.Intent; import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.jetbrains.annotations.NotNull; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -15,9 +14,12 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -import info.nightscout.androidaps.logging.L; -import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; -import info.nightscout.androidaps.plugins.bus.RxBus; +import javax.inject.Inject; +import javax.inject.Singleton; + +import info.nightscout.androidaps.logging.AAPSLogger; +import info.nightscout.androidaps.logging.LTag; +import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkBLE; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding.Encoding4b6b; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding.Encoding4b6bGeoff; @@ -42,143 +44,160 @@ import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicDe * Created by andy on 17/05/2018. */ +@Singleton public class RileyLinkUtil { - private static final Logger LOG = StacktraceLoggerWrapper.getLogger(L.PUMP); - protected static List historyRileyLink = new ArrayList<>(); - protected static RileyLinkCommunicationManager rileyLinkCommunicationManager; + public List historyRileyLink = new ArrayList<>(); + public RileyLinkCommunicationManager rileyLinkCommunicationManager; static ServiceTask currentTask; - private static Context context; - private static RileyLinkBLE rileyLinkBLE; - private static RileyLinkServiceData rileyLinkServiceData; - private static RileyLinkService rileyLinkService; - private static RileyLinkTargetFrequency rileyLinkTargetFrequency; + private RileyLinkBLE rileyLinkBLE; + private RileyLinkServiceData rileyLinkServiceData; + private RileyLinkService rileyLinkService; + private RileyLinkTargetFrequency rileyLinkTargetFrequency; - private static RileyLinkTargetDevice targetDevice; - private static RileyLinkEncodingType encoding; - private static RileyLinkSelectPreference rileyLinkSelectPreference; - private static Encoding4b6b encoding4b6b; - private static RileyLinkFirmwareVersion firmwareVersion; + private RileyLinkTargetDevice targetDevice; + private RileyLinkEncodingType encoding; + private RileyLinkSelectPreference rileyLinkSelectPreference; + private Encoding4b6b encoding4b6b; + private RileyLinkFirmwareVersion firmwareVersion; - public static void setContext(Context contextIn) { - RileyLinkUtil.context = contextIn; + @NotNull private final Context context; + @NotNull private final AAPSLogger aapsLogger; + @NotNull private final RxBusWrapper rxBus; + + @Inject + public RileyLinkUtil( + Context context, + AAPSLogger aapsLogger, + RxBusWrapper rxBus + + ) { + this.context = context; + this.aapsLogger = aapsLogger; + this.rxBus = rxBus; + instance = this; } + private static RileyLinkUtil instance; - public static RileyLinkEncodingType getEncoding() { + // TODO: replace by injection + @Deprecated + public static RileyLinkUtil getInstance() { + if (instance == null) throw new IllegalStateException("RileyLinkUtil not initialized"); + return instance; + } + + public RileyLinkEncodingType getEncoding() { return encoding; } - public static void setEncoding(RileyLinkEncodingType encoding) { - RileyLinkUtil.encoding = encoding; + public void setEncoding(RileyLinkEncodingType encoding) { + this.encoding = encoding; if (encoding == RileyLinkEncodingType.FourByteSixByteLocal) { - RileyLinkUtil.encoding4b6b = new Encoding4b6bGeoff(); + this.encoding4b6b = new Encoding4b6bGeoff(); } } - public static void sendBroadcastMessage(String message) { - if (context != null) { - Intent intent = new Intent(message); - LocalBroadcastManager.getInstance(RileyLinkUtil.context).sendBroadcast(intent); - } + public void sendBroadcastMessage(String message) { + Intent intent = new Intent(message); + LocalBroadcastManager.getInstance(context).sendBroadcast(intent); } - public static void setServiceState(RileyLinkServiceState newState) { + public void setServiceState(RileyLinkServiceState newState) { setServiceState(newState, null); } - public static RileyLinkError getError() { - if (RileyLinkUtil.rileyLinkServiceData != null) - return RileyLinkUtil.rileyLinkServiceData.errorCode; + public RileyLinkError getError() { + if (rileyLinkServiceData != null) + return rileyLinkServiceData.errorCode; else return null; } - public static RileyLinkServiceState getServiceState() { + public RileyLinkServiceState getServiceState() { return workWithServiceState(null, null, false); } - public static void setServiceState(RileyLinkServiceState newState, RileyLinkError errorCode) { + public void setServiceState(RileyLinkServiceState newState, RileyLinkError errorCode) { workWithServiceState(newState, errorCode, true); } - private static synchronized RileyLinkServiceState workWithServiceState(RileyLinkServiceState newState, - RileyLinkError errorCode, boolean set) { + private synchronized RileyLinkServiceState workWithServiceState(RileyLinkServiceState newState, + RileyLinkError errorCode, boolean set) { if (set) { - RileyLinkUtil.rileyLinkServiceData.serviceState = newState; - RileyLinkUtil.rileyLinkServiceData.errorCode = errorCode; + rileyLinkServiceData.serviceState = newState; + rileyLinkServiceData.errorCode = errorCode; - if (L.isEnabled(L.PUMP)) - LOG.info("RileyLink State Changed: {} {}", newState, errorCode == null ? "" : " - Error State: " - + errorCode.name()); + aapsLogger.info(LTag.PUMP, "RileyLink State Changed: {} {}", newState, errorCode == null ? "" : " - Error State: " + + errorCode.name()); - RileyLinkUtil.historyRileyLink.add(new RLHistoryItem(RileyLinkUtil.rileyLinkServiceData.serviceState, - RileyLinkUtil.rileyLinkServiceData.errorCode, targetDevice)); - RxBus.Companion.getINSTANCE().send(new EventMedtronicDeviceStatusChange(newState, errorCode)); + historyRileyLink.add(new RLHistoryItem(rileyLinkServiceData.serviceState, + rileyLinkServiceData.errorCode, targetDevice)); + rxBus.send(new EventMedtronicDeviceStatusChange(newState, errorCode)); return null; } else { - return (RileyLinkUtil.rileyLinkServiceData == null || RileyLinkUtil.rileyLinkServiceData.serviceState == null) ? // + return (rileyLinkServiceData == null || rileyLinkServiceData.serviceState == null) ? // RileyLinkServiceState.NotStarted - : RileyLinkUtil.rileyLinkServiceData.serviceState; + : rileyLinkServiceData.serviceState; } } - public static RileyLinkBLE getRileyLinkBLE() { - return RileyLinkUtil.rileyLinkBLE; + public RileyLinkBLE getRileyLinkBLE() { + return rileyLinkBLE; } - public static void setRileyLinkBLE(RileyLinkBLE rileyLinkBLEIn) { - RileyLinkUtil.rileyLinkBLE = rileyLinkBLEIn; + public void setRileyLinkBLE(RileyLinkBLE rileyLinkBLEIn) { + rileyLinkBLE = rileyLinkBLEIn; } - public static RileyLinkServiceData getRileyLinkServiceData() { - return RileyLinkUtil.rileyLinkServiceData; + public RileyLinkServiceData getRileyLinkServiceData() { + return rileyLinkServiceData; } - public static void setRileyLinkServiceData(RileyLinkServiceData rileyLinkServiceData) { - RileyLinkUtil.rileyLinkServiceData = rileyLinkServiceData; + public void setRileyLinkServiceData(RileyLinkServiceData rileyLinkServiceData) { + this.rileyLinkServiceData = rileyLinkServiceData; } - public static boolean hasPumpBeenTunned() { - return RileyLinkUtil.rileyLinkServiceData.tuneUpDone; + public boolean hasPumpBeenTunned() { + return rileyLinkServiceData.tuneUpDone; } - public static RileyLinkService getRileyLinkService() { - return RileyLinkUtil.rileyLinkService; + public RileyLinkService getRileyLinkService() { + return rileyLinkService; } - public static void setRileyLinkService(RileyLinkService rileyLinkService) { - RileyLinkUtil.rileyLinkService = rileyLinkService; + public void setRileyLinkService(RileyLinkService rileyLinkService) { + this.rileyLinkService = rileyLinkService; } - public static RileyLinkCommunicationManager getRileyLinkCommunicationManager() { - return RileyLinkUtil.rileyLinkCommunicationManager; + public RileyLinkCommunicationManager getRileyLinkCommunicationManager() { + return rileyLinkCommunicationManager; } - public static void setRileyLinkCommunicationManager(RileyLinkCommunicationManager rileyLinkCommunicationManager) { - RileyLinkUtil.rileyLinkCommunicationManager = rileyLinkCommunicationManager; + void setRileyLinkCommunicationManager(RileyLinkCommunicationManager rileyLinkCommunicationManager) { + this.rileyLinkCommunicationManager = rileyLinkCommunicationManager; } @@ -222,13 +241,13 @@ public class RileyLinkUtil { } - public static RileyLinkTargetFrequency getRileyLinkTargetFrequency() { - return RileyLinkUtil.rileyLinkTargetFrequency; + public RileyLinkTargetFrequency getRileyLinkTargetFrequency() { + return rileyLinkTargetFrequency; } - public static void setRileyLinkTargetFrequency(RileyLinkTargetFrequency rileyLinkTargetFrequency) { - RileyLinkUtil.rileyLinkTargetFrequency = rileyLinkTargetFrequency; + public void setRileyLinkTargetFrequency(RileyLinkTargetFrequency rileyLinkTargetFrequency) { + this.rileyLinkTargetFrequency = rileyLinkTargetFrequency; } @@ -286,44 +305,42 @@ public class RileyLinkUtil { } - public static List getRileyLinkHistory() { + public List getRileyLinkHistory() { return historyRileyLink; } - public static RileyLinkTargetDevice getTargetDevice() { + public RileyLinkTargetDevice getTargetDevice() { return targetDevice; } - public static void setTargetDevice(RileyLinkTargetDevice targetDevice) { - RileyLinkUtil.targetDevice = targetDevice; + public void setTargetDevice(RileyLinkTargetDevice targetDevice) { + this.targetDevice = targetDevice; } - public static void setRileyLinkSelectPreference(RileyLinkSelectPreference rileyLinkSelectPreference) { - - RileyLinkUtil.rileyLinkSelectPreference = rileyLinkSelectPreference; + public void setRileyLinkSelectPreference(RileyLinkSelectPreference rileyLinkSelectPreference) { + this.rileyLinkSelectPreference = rileyLinkSelectPreference; } - public static RileyLinkSelectPreference getRileyLinkSelectPreference() { - + public RileyLinkSelectPreference getRileyLinkSelectPreference() { return rileyLinkSelectPreference; } - public static Encoding4b6b getEncoding4b6b() { - return RileyLinkUtil.encoding4b6b; + public Encoding4b6b getEncoding4b6b() { + return encoding4b6b; } - public static void setFirmwareVersion(RileyLinkFirmwareVersion firmwareVersion) { - RileyLinkUtil.firmwareVersion = firmwareVersion; + public void setFirmwareVersion(RileyLinkFirmwareVersion firmwareVersion) { + this.firmwareVersion = firmwareVersion; } - public static RileyLinkFirmwareVersion getFirmwareVersion() { + public RileyLinkFirmwareVersion getFirmwareVersion() { return firmwareVersion; } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java index bb5f435f5f..e982311b5f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java @@ -91,7 +91,7 @@ public class RFSpy { public void initializeRileyLink() { bleVersion = getVersion(); firmwareVersion = getFirmwareVersion(); - RileyLinkUtil.setFirmwareVersion(firmwareVersion); + RileyLinkUtil.getInstance().setFirmwareVersion(firmwareVersion); } @@ -296,7 +296,7 @@ public class RFSpy { this.currentFrequencyMHz = freqMHz; - configureRadioForRegion(RileyLinkUtil.getRileyLinkTargetFrequency()); + configureRadioForRegion(RileyLinkUtil.getInstance().getRileyLinkTargetFrequency()); } @@ -403,7 +403,7 @@ public class RFSpy { if (resp.isOK()) { reader.setRileyLinkEncodingType(encoding); - RileyLinkUtil.setEncoding(encoding); + RileyLinkUtil.getInstance().setEncoding(encoding); } return resp; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java index 42b7f8ce6e..49f1b426e3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java @@ -142,7 +142,7 @@ public class RileyLinkBLE { if (newState == BluetoothProfile.STATE_CONNECTED) { if (status == BluetoothGatt.GATT_SUCCESS) { - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.Intents.BluetoothConnected); + RileyLinkUtil.getInstance().sendBroadcastMessage(RileyLinkConst.Intents.BluetoothConnected); } else { if (isLogEnabled()) LOG.debug("BT State connected, GATT status {} ({})", status, getGattStatusMessage(status)); @@ -153,7 +153,7 @@ public class RileyLinkBLE { // LOG.debug("We are in {} state.", status == BluetoothProfile.STATE_CONNECTING ? "Connecting" : // "Disconnecting"); } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkDisconnected); + RileyLinkUtil.getInstance().sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkDisconnected); if (manualDisconnect) close(); LOG.warn("RileyLink Disconnected."); @@ -240,19 +240,19 @@ public class RileyLinkBLE { if (rileyLinkFound) { mIsConnected = true; - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkReady); + RileyLinkUtil.getInstance().sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkReady); // RileyLinkUtil.sendNotification(new // ServiceNotification(RileyLinkConst.Intents.RileyLinkReady), null); } else { mIsConnected = false; - RileyLinkUtil.setServiceState(RileyLinkServiceState.RileyLinkError, + RileyLinkUtil.getInstance().setServiceState(RileyLinkServiceState.RileyLinkError, RileyLinkError.DeviceIsNotRileyLink); } } else { if (isLogEnabled()) LOG.debug("onServicesDiscovered " + getGattStatusMessage(status)); - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkGattFailed); + RileyLinkUtil.getInstance().sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkGattFailed); } } }; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java index 900275a05f..cdefa2af29 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java @@ -57,7 +57,7 @@ public class SendAndListen extends RileyLinkCommand { // If firmware version is not set (error reading version from device, shouldn't happen), // we will default to version 2 - boolean isPacketV2 = RileyLinkUtil.getFirmwareVersion() != null ? RileyLinkUtil.getFirmwareVersion() + boolean isPacketV2 = RileyLinkUtil.getInstance().getFirmwareVersion() != null ? RileyLinkUtil.getInstance().getFirmwareVersion() .isSameVersion(RileyLinkFirmwareVersion.Version2AndHigher) : true; ArrayList bytes = new ArrayList(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java index 7333459f2b..16ed2efc3b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java @@ -17,7 +17,7 @@ public class SetPreamble extends RileyLinkCommand { super(); // this command was not supported before 2.0 - if (!RileyLinkUtil.getFirmwareVersion().isSameVersion(RileyLinkFirmwareVersion.Version2AndHigher)) { + if (!RileyLinkUtil.getInstance().getFirmwareVersion().isSameVersion(RileyLinkFirmwareVersion.Version2AndHigher)) { throw new NotImplementedException("Old firmware does not support SetPreamble command"); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioPacket.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioPacket.java index a48e3de208..35fc0d54ff 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioPacket.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioPacket.java @@ -33,7 +33,7 @@ public class RadioPacket { public byte[] getEncoded() { - switch (RileyLinkUtil.getEncoding()) { + switch (RileyLinkUtil.getInstance().getEncoding()) { case Manchester: { // We have this encoding in RL firmware return pkt; } @@ -41,7 +41,7 @@ public class RadioPacket { case FourByteSixByteLocal: { byte[] withCRC = getWithCRC(); - byte[] encoded = RileyLinkUtil.getEncoding4b6b().encode4b6b(withCRC); + byte[] encoded = RileyLinkUtil.getInstance().getEncoding4b6b().encode4b6b(withCRC); return ByteUtil.concat(encoded, (byte)0); } @@ -50,7 +50,7 @@ public class RadioPacket { } default: - throw new NotImplementedException(("Encoding not supported: " + RileyLinkUtil.getEncoding().toString())); + throw new NotImplementedException(("Encoding not supported: " + RileyLinkUtil.getInstance().getEncoding().toString())); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioResponse.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioResponse.java index 2b170cd0fb..3caf7872c0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioResponse.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioResponse.java @@ -2,7 +2,6 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data; import org.apache.commons.lang3.NotImplementedException; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; @@ -75,8 +74,8 @@ public class RadioResponse { } byte[] encodedPayload; - if (RileyLinkFirmwareVersion.isSameVersion(RileyLinkUtil.getRileyLinkServiceData().versionCC110, - RileyLinkFirmwareVersion.Version2)) { + if (RileyLinkFirmwareVersion.isSameVersion(RileyLinkUtil.getInstance().getRileyLinkServiceData().versionCC110, + RileyLinkFirmwareVersion.Version2)) { encodedPayload = ByteUtil.substring(rxData, 3, rxData.length - 3); rssi = rxData[1]; responseNumber = rxData[2]; @@ -92,23 +91,23 @@ public class RadioResponse { // well, for non-radio commands we shouldn't even reach this point // but getVersion is kind of exception if (command != null && // - command.getCommandType() != RileyLinkCommandType.SendAndListen) { + command.getCommandType() != RileyLinkCommandType.SendAndListen) { decodedOK = true; decodedPayload = encodedPayload; return; } - switch (RileyLinkUtil.getEncoding()) { + switch (RileyLinkUtil.getInstance().getEncoding()) { case Manchester: case FourByteSixByteRileyLink: { decodedOK = true; decodedPayload = encodedPayload; } - break; + break; case FourByteSixByteLocal: { - byte[] decodeThis = RileyLinkUtil.getEncoding4b6b().decode4b6b(encodedPayload); + byte[] decodeThis = RileyLinkUtil.getInstance().getEncoding4b6b().decode4b6b(encodedPayload); if (decodeThis != null && decodeThis.length > 2) { decodedOK = true; @@ -118,17 +117,17 @@ public class RadioResponse { byte calculatedCRC = CRC.crc8(decodedPayload); if (receivedCRC != calculatedCRC) { LOG.error(String.format("RadioResponse: CRC mismatch, calculated 0x%02x, received 0x%02x", - calculatedCRC, receivedCRC)); + calculatedCRC, receivedCRC)); } } else { throw new RileyLinkCommunicationException(RileyLinkBLEError.TooShortOrNullResponse); } } - break; + break; default: - throw new NotImplementedException("this {" + RileyLinkUtil.getEncoding().toString() - + "} encoding is not supported"); + throw new NotImplementedException("this {" + RileyLinkUtil.getInstance().getEncoding().toString() + + "} encoding is not supported"); } } catch (NumberFormatException e) { decodedOK = false; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java index 5d6b2a655b..09af88b437 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java @@ -26,6 +26,7 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper; public class RileyLinkStatusActivity extends NoSplashAppCompatActivity { @Inject ResourceHelper resourceHelper; + @Inject RileyLinkUtil rileyLinkUtil; TextView connectionStatus; TextView configuredAddress; @@ -76,7 +77,7 @@ public class RileyLinkStatusActivity extends NoSplashAppCompatActivity { this.connectedDevice = findViewById(R.id.rls_t1_connected_device); this.connectionError = findViewById(R.id.rls_t1_connection_error); - rileyLinkServiceData = RileyLinkUtil.getRileyLinkServiceData(); + rileyLinkServiceData = rileyLinkUtil.getRileyLinkServiceData(); // // 7-12 // int[] ids = {R.id.rls_t1_tv02, R.id.rls_t1_tv03, R.id.rls_t1_tv04, R.id.rls_t1_tv05, R.id.rls_t1_tv07, // @@ -114,8 +115,8 @@ public class RileyLinkStatusActivity extends NoSplashAppCompatActivity { mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); - mSectionsPagerAdapter.addFragment(new RileyLinkStatusGeneral(), resourceHelper.gs(R.string.rileylink_settings_tab1)); - mSectionsPagerAdapter.addFragment(new RileyLinkStatusHistory(), resourceHelper.gs(R.string.rileylink_settings_tab2)); + mSectionsPagerAdapter.addFragment(new RileyLinkStatusGeneralFragment(), resourceHelper.gs(R.string.rileylink_settings_tab1)); + mSectionsPagerAdapter.addFragment(new RileyLinkStatusHistoryFragment(), resourceHelper.gs(R.string.rileylink_settings_tab2)); //mSectionsPagerAdapter.addFragment(new RileyLinkStatusDevice(), "Medtronic"); mViewPager.setAdapter(mSectionsPagerAdapter); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneral.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java similarity index 88% rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneral.java rename to app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java index 021d1ee068..338966191d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneral.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java @@ -1,7 +1,6 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog; import android.os.Bundle; -import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -11,6 +10,9 @@ import org.joda.time.LocalDateTime; import java.util.Locale; +import javax.inject.Inject; + +import dagger.android.support.DaggerFragment; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface; @@ -27,7 +29,10 @@ import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; * Created by andy on 5/19/18. */ -public class RileyLinkStatusGeneral extends Fragment implements RefreshableInterface { +public class RileyLinkStatusGeneralFragment extends DaggerFragment implements RefreshableInterface { + + @Inject RileyLinkUtil rileyLinkUtil; + @Inject MedtronicUtil medtronicUtil; TextView connectionStatus; TextView configuredAddress; @@ -43,7 +48,6 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter RileyLinkServiceData rileyLinkServiceData; - MedtronicPumpStatus medtronicPumpStatus; boolean first = false; @@ -58,7 +62,7 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter @Override public void onStart() { super.onStart(); - rileyLinkServiceData = RileyLinkUtil.getRileyLinkServiceData(); + rileyLinkServiceData = rileyLinkUtil.getRileyLinkServiceData(); this.connectionStatus = getActivity().findViewById(R.id.rls_t1_connection_status); this.configuredAddress = getActivity().findViewById(R.id.rls_t1_configured_address); @@ -93,12 +97,12 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter public void refreshData() { - RileyLinkTargetDevice targetDevice = RileyLinkUtil.getTargetDevice(); + RileyLinkTargetDevice targetDevice = rileyLinkUtil.getTargetDevice(); - if (RileyLinkUtil.getServiceState()==null) + if (rileyLinkUtil.getServiceState() == null) this.connectionStatus.setText(MainApp.gs(RileyLinkServiceState.NotStarted.getResourceId(targetDevice))); else - this.connectionStatus.setText(MainApp.gs(RileyLinkUtil.getServiceState().getResourceId(targetDevice))); + this.connectionStatus.setText(MainApp.gs(rileyLinkUtil.getServiceState().getResourceId(targetDevice))); if (rileyLinkServiceData != null) { this.configuredAddress.setText(rileyLinkServiceData.rileylinkAddress); @@ -109,7 +113,7 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter RileyLinkFirmwareVersion firmwareVersion = rileyLinkServiceData.versionCC110; - if (firmwareVersion==null) { + if (firmwareVersion == null) { this.firmwareVersion.setText("BLE113: -\nCC110: -"); } else { this.firmwareVersion.setText("BLE113: " + rileyLinkServiceData.versionBLE113 + // @@ -119,7 +123,7 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter } // TODO add handling for Omnipod pump status - this.medtronicPumpStatus = MedtronicUtil.getPumpStatus(); + MedtronicPumpStatus medtronicPumpStatus = medtronicUtil.getPumpStatus(); if (medtronicPumpStatus != null) { this.deviceType.setText(MainApp.gs(RileyLinkTargetDevice.MedtronicPump.getResourceId())); @@ -129,8 +133,8 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter // TODO extend when Omnipod used - if (MedtronicUtil.getMedtronicPumpModel() != null) - this.connectedDevice.setText("Medtronic " + MedtronicUtil.getMedtronicPumpModel().getPumpModel()); + if (medtronicUtil.getMedtronicPumpModel() != null) + this.connectedDevice.setText("Medtronic " + medtronicUtil.getMedtronicPumpModel().getPumpModel()); else this.connectedDevice.setText("???"); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistory.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java similarity index 81% rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistory.java rename to app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java index ae32018111..e91ad59a30 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistory.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java @@ -5,9 +5,11 @@ import java.util.Collections; import java.util.List; import android.os.Bundle; + import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; + import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -15,6 +17,9 @@ import android.widget.TextView; import org.jetbrains.annotations.NotNull; +import javax.inject.Inject; + +import dagger.android.support.DaggerFragment; import info.nightscout.androidaps.R; import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil; @@ -27,7 +32,9 @@ import info.nightscout.androidaps.utils.DateUtil; * Created by andy on 5/19/18. */ -public class RileyLinkStatusHistory extends Fragment implements RefreshableInterface { +public class RileyLinkStatusHistoryFragment extends DaggerFragment implements RefreshableInterface { + + @Inject RileyLinkUtil rileyLinkUtil; RecyclerView recyclerView; RecyclerViewAdapter recyclerViewAdapter; @@ -40,7 +47,7 @@ public class RileyLinkStatusHistory extends Fragment implements RefreshableInter public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.rileylink_status_history, container, false); - recyclerView = (RecyclerView)rootView.findViewById(R.id.rileylink_history_list); + recyclerView = (RecyclerView) rootView.findViewById(R.id.rileylink_history_list); recyclerView.setHasFixedSize(true); llm = new LinearLayoutManager(getActivity().getApplicationContext()); @@ -63,8 +70,8 @@ public class RileyLinkStatusHistory extends Fragment implements RefreshableInter @Override public void refreshData() { - if (RileyLinkUtil.getRileyLinkHistory()!=null) { - recyclerViewAdapter.addItemsAndClean(RileyLinkUtil.getRileyLinkHistory()); + if (rileyLinkUtil.getRileyLinkHistory() != null) { + recyclerViewAdapter.addItemsAndClean(rileyLinkUtil.getRileyLinkHistory()); } } @@ -105,10 +112,10 @@ public class RileyLinkStatusHistory extends Fragment implements RefreshableInter PumpDeviceState pumpState = item.getPumpDeviceState(); if ((pumpState != null) && // - (pumpState == PumpDeviceState.Sleeping || // - pumpState == PumpDeviceState.Active || // - pumpState == PumpDeviceState.WakingUp // - )) + (pumpState == PumpDeviceState.Sleeping || // + pumpState == PumpDeviceState.Active || // + pumpState == PumpDeviceState.WakingUp // + )) return false; return true; @@ -120,7 +127,7 @@ public class RileyLinkStatusHistory extends Fragment implements RefreshableInter @Override public RecyclerViewAdapter.HistoryViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.rileylink_status_history_item, // - viewGroup, false); + viewGroup, false); return new RecyclerViewAdapter.HistoryViewHolder(v); } @@ -158,9 +165,9 @@ public class RileyLinkStatusHistory extends Fragment implements RefreshableInter HistoryViewHolder(View itemView) { super(itemView); - timeView = (TextView)itemView.findViewById(R.id.rileylink_history_time); - typeView = (TextView)itemView.findViewById(R.id.rileylink_history_source); - valueView = (TextView)itemView.findViewById(R.id.rileylink_history_description); + timeView = (TextView) itemView.findViewById(R.id.rileylink_history_time); + typeView = (TextView) itemView.findViewById(R.id.rileylink_history_source); + valueView = (TextView) itemView.findViewById(R.id.rileylink_history_description); } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBluetoothStateReceiver.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBluetoothStateReceiver.kt index c677ae0c1e..bca161e139 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBluetoothStateReceiver.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBluetoothStateReceiver.kt @@ -15,6 +15,7 @@ import javax.inject.Inject class RileyLinkBluetoothStateReceiver : DaggerBroadcastReceiver() { @Inject lateinit var aapsLogger: AAPSLogger @Inject lateinit var activePlugin: ActivePluginProvider + @Inject lateinit var rileyLinkUtil: RileyLinkUtil override fun onReceive(context: Context, intent: Intent) { super.onReceive(context, intent) @@ -27,7 +28,7 @@ class RileyLinkBluetoothStateReceiver : DaggerBroadcastReceiver() { BluetoothAdapter.STATE_ON -> { aapsLogger.debug("RileyLinkBluetoothStateReceiver: Bluetooth back on. Sending broadcast to RileyLink Framework") - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.Intents.BluetoothReconnected) + rileyLinkUtil.sendBroadcastMessage(RileyLinkConst.Intents.BluetoothReconnected) } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java index 9dfb05fc63..f250d1480a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java @@ -5,20 +5,22 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service; */ import android.bluetooth.BluetoothAdapter; -import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; + import androidx.localbroadcastmanager.content.LocalBroadcastManager; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.inject.Inject; + +import dagger.android.DaggerBroadcastReceiver; import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst; @@ -31,14 +33,17 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTask; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.WakeAndTuneTask; -import info.nightscout.androidaps.utils.SP; +import info.nightscout.androidaps.utils.sharedPreferences.SP; /** * I added this class outside of RileyLinkService, because for now it's very important part of RL framework and * where we get a lot of problems. Especially merging between AAPS and RileyLinkAAPS. I might put it back at * later time */ -public class RileyLinkBroadcastReceiver extends BroadcastReceiver { +public class RileyLinkBroadcastReceiver extends DaggerBroadcastReceiver { + + @Inject RileyLinkUtil rileyLinkUtil; + @Inject SP sp; private static final Logger LOG = StacktraceLoggerWrapper.getLogger(L.PUMPCOMM); @@ -88,6 +93,7 @@ public class RileyLinkBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); if (intent == null) { LOG.error("onReceive: received null intent"); @@ -135,10 +141,9 @@ public class RileyLinkBroadcastReceiver extends BroadcastReceiver { if (action.equals(RileyLinkConst.Intents.RileyLinkDisconnected)) { if (BluetoothAdapter.getDefaultAdapter().isEnabled()) { - RileyLinkUtil - .setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.RileyLinkUnreachable); + rileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.RileyLinkUnreachable); } else { - RileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.BluetoothDisabled); + rileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.BluetoothDisabled); } return true; @@ -166,14 +171,14 @@ public class RileyLinkBroadcastReceiver extends BroadcastReceiver { LOG.debug("RfSpy Radio version (CC110): " + rlVersion.name()); this.serviceInstance.rileyLinkServiceData.versionCC110 = rlVersion; - ServiceTask task = new InitializePumpManagerTask(RileyLinkUtil.getTargetDevice()); + ServiceTask task = new InitializePumpManagerTask(rileyLinkUtil.getTargetDevice()); ServiceTaskExecutor.startTask(task); if (isLoggingEnabled()) LOG.info("Announcing RileyLink open For business"); return true; } else if (action.equals(RileyLinkConst.Intents.RileyLinkNewAddressSet)) { - String RileylinkBLEAddress = SP.getString(RileyLinkConst.Prefs.RileyLinkAddress, ""); + String RileylinkBLEAddress = sp.getString(RileyLinkConst.Prefs.RileyLinkAddress, ""); if (RileylinkBLEAddress.equals("")) { LOG.error("No Rileylink BLE Address saved in app"); } else { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java index 41c4028f96..5779dd63f1 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java @@ -25,8 +25,6 @@ import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState; import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; import info.nightscout.androidaps.utils.sharedPreferences.SP; -import static info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil.getRileyLinkCommunicationManager; - /** * Created by andy on 5/6/18. * Split from original file and renamed. @@ -36,6 +34,8 @@ public abstract class RileyLinkService extends DaggerService { @Inject protected AAPSLogger aapsLogger; @Inject protected SP sp; @Inject protected Context context; + @Inject protected RileyLinkUtil rileyLinkUtil; + @Inject protected MedtronicUtil medtronicUtil; public RileyLinkBLE rileyLinkBLE; // android-bluetooth management @@ -49,9 +49,8 @@ public abstract class RileyLinkService extends DaggerService { public void onCreate() { super.onCreate(); - RileyLinkUtil.setContext(this.context); - RileyLinkUtil.setRileyLinkService(this); - RileyLinkUtil.setEncoding(getEncoding()); + rileyLinkUtil.setRileyLinkService(this); + rileyLinkUtil.setEncoding(getEncoding()); initRileyLinkServiceData(); mBroadcastReceiver = new RileyLinkBroadcastReceiver(this, this.context); @@ -131,27 +130,26 @@ public abstract class RileyLinkService extends DaggerService { // We've received a service startCommand, we grab the lock. @Override public int onStartCommand(Intent intent, int flags, int startId) { - RileyLinkUtil.setContext(getApplicationContext()); return (START_STICKY); } public boolean bluetoothInit() { aapsLogger.debug(LTag.PUMPCOMM, "bluetoothInit: attempting to get an adapter"); - RileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothInitializing); + rileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothInitializing); bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter == null) { aapsLogger.error("Unable to obtain a BluetoothAdapter."); - RileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.NoBluetoothAdapter); + rileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.NoBluetoothAdapter); } else { if (!bluetoothAdapter.isEnabled()) { aapsLogger.error("Bluetooth is not enabled."); - RileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.BluetoothDisabled); + rileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothError, RileyLinkError.BluetoothDisabled); } else { - RileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothReady); + rileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothReady); return true; } } @@ -164,11 +162,11 @@ public abstract class RileyLinkService extends DaggerService { public boolean reconfigureRileyLink(String deviceAddress) { if (rileyLinkBLE == null) { - RileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothInitializing); + rileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothInitializing); return false; } - RileyLinkUtil.setServiceState(RileyLinkServiceState.RileyLinkInitializing); + rileyLinkUtil.setServiceState(RileyLinkServiceState.RileyLinkInitializing); if (rileyLinkBLE.isConnected()) { if (deviceAddress.equals(rileyLinkServiceData.rileylinkAddress)) { @@ -189,10 +187,10 @@ public abstract class RileyLinkService extends DaggerService { } else { aapsLogger.debug(LTag.PUMPCOMM, "Using RL " + deviceAddress); - if (RileyLinkUtil.getServiceState() == RileyLinkServiceState.NotStarted) { + if (rileyLinkUtil.getServiceState() == RileyLinkServiceState.NotStarted) { if (!bluetoothInit()) { aapsLogger.error("RileyLink can't get activated, Bluetooth is not functioning correctly. {}", - RileyLinkUtil.getError() != null ? RileyLinkUtil.getError().name() : "Unknown error (null)"); + rileyLinkUtil.getError() != null ? rileyLinkUtil.getError().name() : "Unknown error (null)"); return false; } } @@ -211,8 +209,8 @@ public abstract class RileyLinkService extends DaggerService { // FIXME: This needs to be run in a session so that is interruptable, has a separate thread, etc. public void doTuneUpDevice() { - RileyLinkUtil.setServiceState(RileyLinkServiceState.TuneUpDevice); - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + rileyLinkUtil.setServiceState(RileyLinkServiceState.TuneUpDevice); + medtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); double lastGoodFrequency = 0.0d; @@ -236,11 +234,10 @@ public abstract class RileyLinkService extends DaggerService { if (newFrequency == 0.0d) { // error tuning pump, pump not present ?? - RileyLinkUtil - .setServiceState(RileyLinkServiceState.PumpConnectorError, RileyLinkError.TuneUpOfDeviceFailed); + rileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorError, RileyLinkError.TuneUpOfDeviceFailed); } else { - getRileyLinkCommunicationManager().clearNotConnectedCount(); - RileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorReady); + rileyLinkUtil.getRileyLinkCommunicationManager().clearNotConnectedCount(); + rileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorReady); } } @@ -252,7 +249,7 @@ public abstract class RileyLinkService extends DaggerService { rileyLinkServiceData.rileylinkAddress = null; } - RileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothReady); + rileyLinkUtil.setServiceState(RileyLinkServiceState.BluetoothReady); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java index 5f807c3e89..a588d300fc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java @@ -23,8 +23,8 @@ public class DiscoverGattServicesTask extends ServiceTask { public void run() { if (needToConnect) - RileyLinkUtil.getRileyLinkBLE().connectGatt(); + RileyLinkUtil.getInstance().getRileyLinkBLE().connectGatt(); - RileyLinkUtil.getRileyLinkBLE().discoverServices(); + RileyLinkUtil.getInstance().getRileyLinkBLE().discoverServices(); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java index 1697e0640d..314e4323ef 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java @@ -1,9 +1,6 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks; -import android.util.Log; - import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; @@ -13,7 +10,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin 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.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport; -import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst; import info.nightscout.androidaps.utils.SP; /** @@ -43,42 +39,42 @@ public class InitializePumpManagerTask extends ServiceTask { double lastGoodFrequency = 0.0d; - if (RileyLinkUtil.getRileyLinkServiceData().lastGoodFrequency==null) { + if (RileyLinkUtil.getInstance().getRileyLinkServiceData().lastGoodFrequency == null) { lastGoodFrequency = SP.getDouble(RileyLinkConst.Prefs.LastGoodDeviceFrequency, 0.0d); lastGoodFrequency = Math.round(lastGoodFrequency * 1000d) / 1000d; - RileyLinkUtil.getRileyLinkServiceData().lastGoodFrequency = lastGoodFrequency; + RileyLinkUtil.getInstance().getRileyLinkServiceData().lastGoodFrequency = lastGoodFrequency; // if (RileyLinkUtil.getRileyLinkTargetFrequency() == null) { // String pumpFrequency = SP.getString(MedtronicConst.Prefs.PumpFrequency, null); // } } else { - lastGoodFrequency = RileyLinkUtil.getRileyLinkServiceData().lastGoodFrequency; + lastGoodFrequency = RileyLinkUtil.getInstance().getRileyLinkServiceData().lastGoodFrequency; } if ((lastGoodFrequency > 0.0d) - && RileyLinkUtil.getRileyLinkCommunicationManager().isValidFrequency(lastGoodFrequency)) { + && RileyLinkUtil.getInstance().getRileyLinkCommunicationManager().isValidFrequency(lastGoodFrequency)) { - RileyLinkUtil.setServiceState(RileyLinkServiceState.RileyLinkReady); + RileyLinkUtil.getInstance().setServiceState(RileyLinkServiceState.RileyLinkReady); if (L.isEnabled(L.PUMPCOMM)) LOG.info("Setting radio frequency to {} MHz", lastGoodFrequency); - RileyLinkUtil.getRileyLinkCommunicationManager().setRadioFrequencyForPump(lastGoodFrequency); + RileyLinkUtil.getInstance().getRileyLinkCommunicationManager().setRadioFrequencyForPump(lastGoodFrequency); - boolean foundThePump = RileyLinkUtil.getRileyLinkCommunicationManager().tryToConnectToDevice(); + boolean foundThePump = RileyLinkUtil.getInstance().getRileyLinkCommunicationManager().tryToConnectToDevice(); if (foundThePump) { - RileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorReady); + RileyLinkUtil.getInstance().setServiceState(RileyLinkServiceState.PumpConnectorReady); } else { - RileyLinkUtil.setServiceState(RileyLinkServiceState.PumpConnectorError, - RileyLinkError.NoContactWithDevice); - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); + RileyLinkUtil.getInstance().setServiceState(RileyLinkServiceState.PumpConnectorError, + RileyLinkError.NoContactWithDevice); + RileyLinkUtil.getInstance().sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); } } else { - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); + RileyLinkUtil.getInstance().sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/ui/RileyLinkSelectPreference.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/ui/RileyLinkSelectPreference.java index 360f6e4798..1bdb6a0a24 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/ui/RileyLinkSelectPreference.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/ui/RileyLinkSelectPreference.java @@ -1,12 +1,13 @@ package info.nightscout.androidaps.plugins.pump.common.ui; import android.content.Context; -import androidx.preference.Preference; import android.util.AttributeSet; +import androidx.preference.Preference; + import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; +import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil; import info.nightscout.androidaps.utils.SP; /** @@ -19,7 +20,7 @@ public class RileyLinkSelectPreference extends Preference { super(context); setInitialSummaryValue(); - MedtronicUtil.setRileyLinkSelectPreference(this); + RileyLinkUtil.getInstance().setRileyLinkSelectPreference(this); } @@ -27,7 +28,7 @@ public class RileyLinkSelectPreference extends Preference { super(context, attrs); setInitialSummaryValue(); - MedtronicUtil.setRileyLinkSelectPreference(this); + RileyLinkUtil.getInstance().setRileyLinkSelectPreference(this); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt index 7237dab948..fe600dfdd4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt @@ -57,6 +57,8 @@ class MedtronicFragment : DaggerFragment() { @Inject lateinit var activePlugin: ActivePluginProvider @Inject lateinit var medtronicPumpPlugin: MedtronicPumpPlugin @Inject lateinit var warnColors: WarnColors + @Inject lateinit var rileyLinkUtil: RileyLinkUtil + @Inject lateinit var medtronicUtil: MedtronicUtil private var disposable: CompositeDisposable = CompositeDisposable() @@ -85,7 +87,7 @@ class MedtronicFragment : DaggerFragment() { medtronic_pump_status.text = "{fa-bed}" medtronic_history.setOnClickListener { - if (MedtronicUtil.getPumpStatus().verifyConfiguration()) { + if (medtronicUtil.getPumpStatus().verifyConfiguration()) { startActivity(Intent(context, MedtronicHistoryActivity::class.java)) } else { displayNotConfiguredDialog() @@ -93,7 +95,7 @@ class MedtronicFragment : DaggerFragment() { } medtronic_refresh.setOnClickListener { - if (!MedtronicUtil.getPumpStatus().verifyConfiguration()) { + if (!medtronicUtil.getPumpStatus().verifyConfiguration()) { displayNotConfiguredDialog() } else { medtronic_refresh.isEnabled = false @@ -107,7 +109,7 @@ class MedtronicFragment : DaggerFragment() { } medtronic_stats.setOnClickListener { - if (MedtronicUtil.getPumpStatus().verifyConfiguration()) { + if (medtronicUtil.getPumpStatus().verifyConfiguration()) { startActivity(Intent(context, RileyLinkStatusActivity::class.java)) } else { displayNotConfiguredDialog() @@ -147,7 +149,7 @@ class MedtronicFragment : DaggerFragment() { .observeOn(AndroidSchedulers.mainThread()) .subscribe({ aapsLogger.debug(LTag.PUMP, "EventMedtronicPumpConfigurationChanged triggered") - MedtronicUtil.getPumpStatus().verifyConfiguration() + medtronicUtil.getPumpStatus().verifyConfiguration() updateGUI() }, { fabricPrivacy.logException(it) }) disposable += rxBus @@ -171,12 +173,12 @@ class MedtronicFragment : DaggerFragment() { @Synchronized private fun setDeviceStatus() { - val pumpStatus: MedtronicPumpStatus = MedtronicUtil.getPumpStatus() + val pumpStatus: MedtronicPumpStatus = medtronicUtil.getPumpStatus() pumpStatus.rileyLinkServiceState = checkStatusSet(pumpStatus.rileyLinkServiceState, - RileyLinkUtil.getServiceState()) as RileyLinkServiceState? + rileyLinkUtil.getServiceState()) as RileyLinkServiceState? val resourceId = pumpStatus.rileyLinkServiceState.getResourceId(RileyLinkTargetDevice.MedtronicPump) - val rileyLinkError = RileyLinkUtil.getError() + val rileyLinkError = rileyLinkUtil.getError() medtronic_rl_status.text = when { pumpStatus.rileyLinkServiceState == RileyLinkServiceState.NotStarted -> resourceHelper.gs(resourceId) @@ -187,7 +189,7 @@ class MedtronicFragment : DaggerFragment() { } medtronic_rl_status.setTextColor(if (rileyLinkError != null) Color.RED else Color.WHITE) - pumpStatus.rileyLinkError = checkStatusSet(pumpStatus.rileyLinkError, RileyLinkUtil.getError()) as RileyLinkError? + pumpStatus.rileyLinkError = checkStatusSet(pumpStatus.rileyLinkError, rileyLinkUtil.getError()) as RileyLinkError? medtronic_errors.text = pumpStatus.rileyLinkError?.let { @@ -195,7 +197,7 @@ class MedtronicFragment : DaggerFragment() { } ?: "-" pumpStatus.pumpDeviceState = checkStatusSet(pumpStatus.pumpDeviceState, - MedtronicUtil.getPumpDeviceState()) as PumpDeviceState? + medtronicUtil.getPumpDeviceState()) as PumpDeviceState? when (pumpStatus.pumpDeviceState) { null, @@ -208,17 +210,17 @@ class MedtronicFragment : DaggerFragment() { PumpDeviceState.InvalidConfiguration -> medtronic_pump_status.text = " " + resourceHelper.gs(pumpStatus.pumpDeviceState.resourceId) PumpDeviceState.Active -> { - val cmd = MedtronicUtil.getCurrentCommand() + val cmd = medtronicUtil.getCurrentCommand() if (cmd == null) medtronic_pump_status.text = " " + resourceHelper.gs(pumpStatus.pumpDeviceState.resourceId) else { aapsLogger.debug(LTag.PUMP, "Command: " + cmd) val cmdResourceId = cmd.resourceId if (cmd == MedtronicCommandType.GetHistoryData) { - medtronic_pump_status.text = MedtronicUtil.frameNumber?.let { - resourceHelper.gs(cmdResourceId, MedtronicUtil.pageNumber, MedtronicUtil.frameNumber) + medtronic_pump_status.text = medtronicUtil.frameNumber?.let { + resourceHelper.gs(cmdResourceId, medtronicUtil.pageNumber, medtronicUtil.frameNumber) } - ?: resourceHelper.gs(R.string.medtronic_cmd_desc_get_history_request, MedtronicUtil.pageNumber) + ?: resourceHelper.gs(R.string.medtronic_cmd_desc_get_history_request, medtronicUtil.pageNumber) } else { medtronic_pump_status.text = " " + (cmdResourceId?.let { resourceHelper.gs(it) } ?: cmd.getCommandDescription()) @@ -260,7 +262,7 @@ class MedtronicFragment : DaggerFragment() { @Synchronized fun updateGUI() { if (medtronic_rl_status == null) return - val pumpStatus = MedtronicUtil.getPumpStatus() + val pumpStatus = medtronicUtil.getPumpStatus() setDeviceStatus() @@ -321,7 +323,7 @@ class MedtronicFragment : DaggerFragment() { ?: "" // battery - if (MedtronicUtil.getBatteryType() == BatteryType.None || pumpStatus.batteryVoltage == null) { + if (medtronicUtil.getBatteryType() == BatteryType.None || pumpStatus.batteryVoltage == null) { medtronic_pumpstate_battery.text = "{fa-battery-" + pumpStatus.batteryRemaining / 25 + "} " } else { medtronic_pumpstate_battery.text = "{fa-battery-" + pumpStatus.batteryRemaining / 25 + "} " + pumpStatus.batteryRemaining + "%" + String.format(" (%.2f V)", pumpStatus.batteryVoltage) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java index 523a9c5f53..aa1589f7d9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java @@ -34,7 +34,6 @@ import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.Source; import info.nightscout.androidaps.db.TemporaryBasal; -import info.nightscout.androidaps.events.EventCustomActionsChanged; import info.nightscout.androidaps.events.EventRefreshOverview; import info.nightscout.androidaps.interfaces.ActivePluginProvider; import info.nightscout.androidaps.interfaces.CommandQueueProvider; @@ -53,6 +52,7 @@ import info.nightscout.androidaps.plugins.pump.common.PumpPluginAbstract; import info.nightscout.androidaps.plugins.pump.common.defs.PumpDriverState; import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; 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.defs.RileyLinkServiceState; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ResetRileyLinkConfigurationTask; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor; @@ -85,7 +85,6 @@ import info.nightscout.androidaps.utils.TimeChangeType; import info.nightscout.androidaps.utils.resources.ResourceHelper; import info.nightscout.androidaps.utils.sharedPreferences.SP; -import static info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil.sendNotification; /** * Created by andy on 23.04.18. @@ -95,9 +94,13 @@ import static info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUt @Singleton public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInterface { + private final SP sp; + private final RileyLinkUtil rileyLinkUtil; + private final MedtronicUtil medtronicUtil; + private final MedtronicPumpStatus medtronicPumpStatus; + protected static MedtronicPumpPlugin plugin = null; private RileyLinkMedtronicService medtronicService; - private MedtronicPumpStatus pumpStatusLocal = null; private MedtronicUIComm medtronicUIComm; // variables for handling statuses and history @@ -124,7 +127,10 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter ActivePluginProvider activePlugin, SP sp, CommandQueueProvider commandQueue, - FabricPrivacy fabricPrivacy + FabricPrivacy fabricPrivacy, + RileyLinkUtil rileyLinkUtil, + MedtronicUtil medtronicUtil, + MedtronicPumpStatus medtronicPumpStatus ) { super(new PluginDescription() // @@ -138,8 +144,10 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter ); this.plugin = this; - this.rxBus = rxBus; + this.rileyLinkUtil = rileyLinkUtil; + this.medtronicUtil = medtronicUtil; this.sp = sp; + this.medtronicPumpStatus = medtronicPumpStatus; displayConnectionMessages = false; @@ -160,9 +168,9 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter for (int i = 0; i < 20; i++) { SystemClock.sleep(5000); - if (MedtronicUtil.getPumpStatus() != null) { + if (medtronicUtil.getPumpStatus() != null) { aapsLogger.debug(LTag.PUMP, "Starting Medtronic-RileyLink service"); - if (MedtronicUtil.getPumpStatus().setNotInPreInit()) { + if (medtronicUtil.getPumpStatus().setNotInPreInit()) { break; } } @@ -176,7 +184,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @Override protected void onStart() { super.onStart(); - medtronicUIComm = new MedtronicUIComm(aapsLogger, rxBus, getResourceHelper()); + medtronicUIComm = new MedtronicUIComm(aapsLogger, rxBus, getResourceHelper(), rileyLinkUtil, medtronicUtil); medtronicHistoryData = new MedtronicHistoryData(aapsLogger, sp, activePlugin); } @@ -201,21 +209,20 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @Override public void initPumpStatusData() { - this.pumpStatusLocal = new MedtronicPumpStatus(pumpDescription); - MedtronicUtil.setPumpStatus(pumpStatusLocal); + medtronicUtil.setPumpStatus(medtronicPumpStatus); - pumpStatusLocal.lastConnection = sp.getLong(RileyLinkConst.Prefs.LastGoodDeviceCommunicationTime, 0L); - pumpStatusLocal.lastDataTime = new LocalDateTime(pumpStatusLocal.lastConnection); - pumpStatusLocal.previousConnection = pumpStatusLocal.lastConnection; + medtronicPumpStatus.lastConnection = sp.getLong(RileyLinkConst.Prefs.LastGoodDeviceCommunicationTime, 0L); + medtronicPumpStatus.lastDataTime = new LocalDateTime(medtronicPumpStatus.lastConnection); + medtronicPumpStatus.previousConnection = medtronicPumpStatus.lastConnection; - pumpStatusLocal.refreshConfiguration(); + medtronicPumpStatus.refreshConfiguration(); - aapsLogger.debug(LTag.PUMP, "initPumpStatusData: " + this.pumpStatusLocal); + aapsLogger.debug(LTag.PUMP, "initPumpStatusData: " + this.medtronicPumpStatus); - this.pumpStatus = pumpStatusLocal; + this.pumpStatus = medtronicPumpStatus; // this is only thing that can change, by being configured - pumpDescription.maxTempAbsolute = (pumpStatusLocal.maxBasal != null) ? pumpStatusLocal.maxBasal : 35.0d; + pumpDescription.maxTempAbsolute = (medtronicPumpStatus.maxBasal != null) ? medtronicPumpStatus.maxBasal : 35.0d; // set first Medtronic Pump Start if (!sp.contains(MedtronicConst.Statistics.FirstPumpStart)) { @@ -380,8 +387,6 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @Override public void getPumpStatus() { - getMDTPumpStatus(); - if (firstRun) { initializePump(!isRefresh); } else { @@ -400,7 +405,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter private boolean isPumpNotReachable() { - RileyLinkServiceState rileyLinkServiceState = MedtronicUtil.getServiceState(); + RileyLinkServiceState rileyLinkServiceState = rileyLinkUtil.getServiceState(); if (rileyLinkServiceState == null) { aapsLogger.debug(LTag.PUMP, "RileyLink unreachable. RileyLinkServiceState is null."); @@ -431,12 +436,12 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter if (isPumpNotReachable()) { aapsLogger.error("Pump unreachable."); - MedtronicUtil.sendNotification(MedtronicNotificationType.PumpUnreachable, getResourceHelper(), rxBus); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpUnreachable, getResourceHelper(), rxBus); return; } - MedtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); + medtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); if (hasTimeDateOrTimeZoneChanged) { @@ -492,7 +497,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter } if (resetTime) - pumpStatusLocal.setLastCommunicationToNow(); + medtronicPumpStatus.setLastCommunicationToNow(); } @@ -526,28 +531,26 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter setRefreshButtonEnabled(false); - getMDTPumpStatus(); - if (isRefresh) { if (isPumpNotReachable()) { aapsLogger.error(getLogPrefix() + "initializePump::Pump unreachable."); - MedtronicUtil.sendNotification(MedtronicNotificationType.PumpUnreachable, getResourceHelper(), rxBus); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpUnreachable, getResourceHelper(), rxBus); setRefreshButtonEnabled(true); return; } - MedtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); + medtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); } // model (once) - if (MedtronicUtil.getMedtronicPumpModel() == null) { + if (medtronicUtil.getMedtronicPumpModel() == null) { medtronicUIComm.executeCommand(MedtronicCommandType.PumpModel); } else { - if (pumpStatusLocal.medtronicDeviceType != MedtronicUtil.getMedtronicPumpModel()) { + if (medtronicPumpStatus.medtronicDeviceType != medtronicUtil.getMedtronicPumpModel()) { aapsLogger.warn(LTag.PUMP, getLogPrefix() + "Configured pump is not the same as one detected."); - MedtronicUtil.sendNotification(MedtronicNotificationType.PumpTypeNotSame, getResourceHelper(), rxBus); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpTypeNotSame, getResourceHelper(), rxBus); } } @@ -567,7 +570,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter scheduleNextRefresh(MedtronicStatusRefreshType.BatteryStatus, 20); // configuration (once and then if history shows config changes) - medtronicUIComm.executeCommand(MedtronicCommandType.getSettings(MedtronicUtil.getMedtronicPumpModel())); + medtronicUIComm.executeCommand(MedtronicCommandType.getSettings(medtronicUtil.getMedtronicPumpModel())); // read profile (once, later its controlled by isThisProfileSet method) getBasalProfiles(); @@ -581,7 +584,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter return; } - pumpStatusLocal.setLastCommunicationToNow(); + medtronicPumpStatus.setLastCommunicationToNow(); setRefreshButtonEnabled(true); if (!isRefresh) { @@ -606,7 +609,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @Override public boolean isThisProfileSet(Profile profile) { - MedtronicPumpStatus mdtPumpStatus = getMDTPumpStatus(); + MedtronicPumpStatus mdtPumpStatus = medtronicPumpStatus; aapsLogger.debug(LTag.PUMP, "isThisProfileSet: basalInitalized=" + mdtPumpStatus.basalProfileStatus); if (!isInitialized) @@ -623,15 +626,15 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter } - return (getMDTPumpStatus().basalProfileStatus != BasalProfileStatus.ProfileOK) || isProfileSame(profile); + return (medtronicPumpStatus.basalProfileStatus != BasalProfileStatus.ProfileOK) || isProfileSame(profile); } private boolean isProfileSame(Profile profile) { boolean invalid = false; - Double[] basalsByHour = getMDTPumpStatus().basalsByHour; - PumpType pumpType = getMDTPumpStatus().getPumpType(); + Double[] basalsByHour = medtronicPumpStatus.basalsByHour; + PumpType pumpType = medtronicPumpStatus.getPumpType(); aapsLogger.debug(LTag.PUMP, "Current Basals (h): " + (basalsByHour == null ? "null" : BasalProfile.getProfilesByHourToString(basalsByHour))); @@ -649,7 +652,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter int hour = basalValue.timeAsSeconds / (60 * 60); - if (!MedtronicUtil.isSame(basalsByHour[hour], basalValueValue)) { + if (!medtronicUtil.isSame(basalsByHour[hour], basalValueValue)) { invalid = true; } @@ -671,10 +674,10 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @Override public long lastDataTime() { - getMDTPumpStatus(); + medtronicPumpStatus; - if (pumpStatusLocal.lastConnection != 0) { - return pumpStatusLocal.lastConnection; + if (medtronicPumpStatus.lastConnection != 0) { + return medtronicPumpStatus.lastConnection; } return System.currentTimeMillis(); @@ -683,33 +686,21 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @Override public double getBaseBasalRate() { - return getMDTPumpStatus().getBasalProfileForHour(); + return medtronicPumpStatus.getBasalProfileForHour(); } @Override public double getReservoirLevel() { - return getMDTPumpStatus().reservoirRemainingUnits; + return medtronicPumpStatus.reservoirRemainingUnits; } @Override public int getBatteryLevel() { - return getMDTPumpStatus().batteryRemaining; + return medtronicPumpStatus.batteryRemaining; } - - private MedtronicPumpStatus getMDTPumpStatus() { - if (pumpStatusLocal == null) { - // FIXME I don't know why this happens - aapsLogger.warn(LTag.PUMP, "!!!! Reset Pump Status Local"); - pumpStatusLocal = MedtronicUtil.getPumpStatus(); - } - - return pumpStatusLocal; - } - - protected void triggerUIChange() { rxBus.send(new EventMedtronicPumpValuesChanged()); } @@ -736,16 +727,16 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter return; } - MedtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); + medtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); medtronicUIComm.executeCommand(MedtronicCommandType.GetRealTimeClock); - ClockDTO clock = MedtronicUtil.getPumpTime(); + ClockDTO clock = medtronicUtil.getPumpTime(); if (clock == null) { // retry medtronicUIComm.executeCommand(MedtronicCommandType.GetRealTimeClock); - clock = MedtronicUtil.getPumpTime(); + clock = medtronicUtil.getPumpTime(); } if (clock == null) @@ -768,7 +759,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter } else { if ((clock.localDeviceTime.getYear() > 2015)) { aapsLogger.error("MedtronicPumpPlugin::checkTimeAndOptionallySetTime - Time difference over 24h requested [diff={}]. Doing nothing." + timeDiff); - sendNotification(MedtronicNotificationType.TimeChangeOver24h, getResourceHelper(), rxBus); + medtronicUtil.sendNotification(MedtronicNotificationType.TimeChangeOver24h, getResourceHelper(), rxBus); } } @@ -787,7 +778,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter setRefreshButtonEnabled(false); - MedtronicPumpStatus mdtPumpStatus = getMDTPumpStatus(); + MedtronicPumpStatus mdtPumpStatus = medtronicPumpStatus; if (detailedBolusInfo.insulin > mdtPumpStatus.reservoirRemainingUnits) { return new PumpEnactResult(getInjector()) // @@ -805,7 +796,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter return setNotReachable(true, false); } - MedtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); + medtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); if (bolusDeliveryType == BolusDeliveryType.CancelDelivery) { // LOG.debug("MedtronicPumpPlugin::deliverBolus - Delivery Canceled."); @@ -870,7 +861,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter activePlugin.getActiveTreatments().addToHistoryTreatment(detailedBolusInfo, true); // we subtract insulin, exact amount will be visible with next remainingInsulin update. - getMDTPumpStatus().reservoirRemainingUnits -= detailedBolusInfo.insulin; + medtronicPumpStatus.reservoirRemainingUnits -= detailedBolusInfo.insulin; incrementStatistics(detailedBolusInfo.isSMB ? MedtronicConst.Statistics.SMBBoluses : MedtronicConst.Statistics.StandardBoluses); @@ -956,9 +947,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter .comment(getResourceHelper().gs(R.string.medtronic_pump_status_pump_unreachable)); } - MedtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); - - getMDTPumpStatus(); + medtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); aapsLogger.info(LTag.PUMP, getLogPrefix() + "setTempBasalAbsolute: rate: " + absoluteRate + ", duration=" + durationInMinutes); @@ -976,10 +965,10 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter if (!enforceNew) { - if (MedtronicUtil.isSame(tbrCurrent.getInsulinRate(), absoluteRate)) { + if (medtronicUtil.isSame(tbrCurrent.getInsulinRate(), absoluteRate)) { boolean sameRate = true; - if (MedtronicUtil.isSame(0.0d, absoluteRate) && durationInMinutes > 0) { + if (medtronicUtil.isSame(0.0d, absoluteRate) && durationInMinutes > 0) { // if rate is 0.0 and duration>0 then the rate is not the same sameRate = false; } @@ -1025,9 +1014,9 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter if (response) { // FIXME put this into UIPostProcessor - pumpStatusLocal.tempBasalStart = new Date(); - pumpStatusLocal.tempBasalAmount = absoluteRate; - pumpStatusLocal.tempBasalLength = durationInMinutes; + medtronicPumpStatus.tempBasalStart = new Date(); + medtronicPumpStatus.tempBasalAmount = absoluteRate; + medtronicPumpStatus.tempBasalLength = durationInMinutes; TemporaryBasal tempStart = new TemporaryBasal(getInjector()) // .date(System.currentTimeMillis()) // @@ -1061,8 +1050,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter return setTempBasalAbsolute(0.0d, durationInMinutes, profile, enforceNew); } else { double absoluteValue = profile.getBasal() * (percent / 100.0d); - getMDTPumpStatus(); - absoluteValue = pumpStatusLocal.pumpType.determineCorrectBasalSize(absoluteValue); + absoluteValue = medtronicPumpStatus.pumpType.determineCorrectBasalSize(absoluteValue); aapsLogger.warn(LTag.PUMP, "setTempBasalPercent [MedtronicPumpPlugin] - You are trying to use setTempBasalPercent with percent other then 0% (" + percent + "). This will start setTempBasalAbsolute, with calculated value (" + absoluteValue + "). Result might not be 100% correct."); return setTempBasalAbsolute(absoluteValue, durationInMinutes, profile, enforceNew); } @@ -1097,9 +1085,9 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter scheduleNextRefresh(MedtronicStatusRefreshType.PumpTime, -1); } - if (this.getMDTPumpStatus().basalProfileStatus != BasalProfileStatus.NotInitialized + if (this.medtronicPumpStatus.basalProfileStatus != BasalProfileStatus.NotInitialized && medtronicHistoryData.hasBasalProfileChanged()) { - medtronicHistoryData.processLastBasalProfileChange(getMDTPumpStatus()); + medtronicHistoryData.processLastBasalProfileChange(medtronicPumpStatus); } PumpDriverState previousState = this.pumpState; @@ -1162,7 +1150,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): targetDate: " + targetDate); } } else { - aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntry: not null - " + MedtronicUtil.gsonInstance.toJson(lastPumpHistoryEntry)); + aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntry: not null - " + medtronicUtil.gsonInstance.toJson(lastPumpHistoryEntry)); medtronicHistoryData.setIsInInit(false); // medtronicHistoryData.setLastHistoryRecordTime(lastPumpHistoryEntry.atechDateTime); @@ -1247,7 +1235,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter switch (refreshType) { case RemainingInsulin: { - double remaining = pumpStatusLocal.reservoirRemainingUnits; + double remaining = medtronicPumpStatus.reservoirRemainingUnits; int min; if (remaining > 50) min = 4 * 60; @@ -1343,7 +1331,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter .comment(getResourceHelper().gs(R.string.medtronic_pump_status_pump_unreachable)); } - MedtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); + medtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); setRefreshButtonEnabled(false); TempBasalPair tbrCurrent = readTBR(); @@ -1389,17 +1377,17 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @NonNull @Override public ManufacturerType manufacturer() { - return getMDTPumpStatus().pumpType.getManufacturer(); + return medtronicPumpStatus.pumpType.getManufacturer(); } @NonNull @Override public PumpType model() { - return getMDTPumpStatus().pumpType; + return medtronicPumpStatus.pumpType; } @NonNull @Override public String serialNumber() { - return getMDTPumpStatus().serialNumber; + return medtronicPumpStatus.serialNumber; } @NonNull @Override @@ -1426,7 +1414,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter .comment(getResourceHelper().gs(R.string.medtronic_pump_status_pump_unreachable)); } - MedtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); + medtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); BasalProfile basalProfile = convertProfileToMedtronicProfile(profile); @@ -1459,7 +1447,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter StringBuilder stringBuilder = new StringBuilder(); - MedtronicPumpStatus pumpStatus = getMDTPumpStatus(); + MedtronicPumpStatus pumpStatus = medtronicPumpStatus; if (pumpStatus.maxBasal == null) return null; @@ -1480,7 +1468,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @NonNull private BasalProfile convertProfileToMedtronicProfile(Profile profile) { - MedtronicPumpStatus pumpStatus = getMDTPumpStatus(); + MedtronicPumpStatus pumpStatus = medtronicPumpStatus; PumpType pumpType = pumpStatus.pumpType; @@ -1536,7 +1524,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter switch (mcat) { case WakeUpAndTune: { - if (MedtronicUtil.getPumpStatus().verifyConfiguration()) { + if (medtronicUtil.getPumpStatus().verifyConfiguration()) { ServiceTaskExecutor.startTask(new WakeAndTuneTask()); } else { Intent i = new Intent(context, ErrorHelperActivity.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java index 261e53e7ab..e4b382c1f6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java @@ -4,7 +4,6 @@ import android.os.SystemClock; import org.joda.time.LocalDateTime; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.Calendar; import java.util.GregorianCalendar; @@ -76,7 +75,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager medtronicCommunicationManager = this; this.medtronicConverter = new MedtronicConverter(); this.pumpHistoryDecoder = new MedtronicPumpHistoryDecoder(); - MedtronicUtil.getPumpStatus().previousConnection = SP.getLong( + MedtronicUtil.getInstance().getPumpStatus().previousConnection = SP.getLong( RileyLinkConst.Prefs.LastGoodDeviceCommunicationTime, 0L); } @@ -88,7 +87,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager @Override protected void configurePumpSpecificSettings() { - pumpStatus = MedtronicUtil.getPumpStatus(); + pumpStatus = MedtronicUtil.getInstance().getPumpStatus(); } @@ -117,10 +116,10 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager */ public boolean isDeviceReachable(boolean canPreventTuneUp) { - PumpDeviceState state = MedtronicUtil.getPumpDeviceState(); + PumpDeviceState state = MedtronicUtil.getInstance().getPumpDeviceState(); if (state != PumpDeviceState.PumpUnreachable) - MedtronicUtil.setPumpDeviceState(PumpDeviceState.WakingUp); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.WakingUp); for (int retry = 0; retry < 5; retry++) { @@ -137,11 +136,11 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager } if (state != PumpDeviceState.PumpUnreachable) - MedtronicUtil.setPumpDeviceState(PumpDeviceState.PumpUnreachable); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.PumpUnreachable); if (!canPreventTuneUp) { - long diff = System.currentTimeMillis() - MedtronicUtil.getPumpStatus().lastConnection; + long diff = System.currentTimeMillis() - MedtronicUtil.getInstance().getPumpStatus().lastConnection; if (diff > RILEYLINK_TIMEOUT) { ServiceTaskExecutor.startTask(new WakeAndTuneTask()); @@ -154,7 +153,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager private boolean connectToDevice() { - PumpDeviceState state = MedtronicUtil.getPumpDeviceState(); + PumpDeviceState state = MedtronicUtil.getInstance().getPumpDeviceState(); byte[] pumpMsgContent = createPumpMessageContent(RLMessageType.ReadSimpleData); // simple RFSpyResponse rfSpyResponse = rfspy.transmitThenReceive(new RadioPacket(pumpMsgContent), (byte) 0, (byte) 200, @@ -187,8 +186,8 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager MedtronicDeviceType pumpModel = (MedtronicDeviceType) dataResponse; boolean valid = (pumpModel != MedtronicDeviceType.Unknown_Device); - if (MedtronicUtil.getMedtronicPumpModel() == null && valid) { - MedtronicUtil.setMedtronicPumpModel(pumpModel); + if (MedtronicUtil.getInstance().getMedtronicPumpModel() == null && valid) { + MedtronicUtil.getInstance().setMedtronicPumpModel(pumpModel); } if (isLogEnabled()) @@ -197,9 +196,9 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager if (valid) { if (state == PumpDeviceState.PumpUnreachable) - MedtronicUtil.setPumpDeviceState(PumpDeviceState.WakingUp); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.WakingUp); else - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Sleeping); rememberLastGoodDeviceCommunicationTime(); @@ -207,7 +206,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager } else { if (state != PumpDeviceState.PumpUnreachable) - MedtronicUtil.setPumpDeviceState(PumpDeviceState.PumpUnreachable); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.PumpUnreachable); } } @@ -287,7 +286,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager for (List frame : frames) { - byte[] frameData = MedtronicUtil.createByteArray(frame); + byte[] frameData = MedtronicUtil.getInstance().createByteArray(frame); // LOG.debug("Frame {} data:\n{}", frameNr, ByteUtil.getCompactString(frameData)); @@ -326,9 +325,9 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager wakeUp(receiverDeviceAwakeForMinutes, false); if (isLogEnabled()) - LOG.debug("Current command: " + MedtronicUtil.getCurrentCommand()); + LOG.debug("Current command: " + MedtronicUtil.getInstance().getCurrentCommand()); - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Active); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Active); boolean doneWithError = false; for (int pageNumber = 0; pageNumber < 5; pageNumber++) { @@ -346,7 +345,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager PumpMessage firstResponse = null; boolean failed = false; - MedtronicUtil.setCurrentCommand(MedtronicCommandType.GetHistoryData, pageNumber, null); + MedtronicUtil.getInstance().setCurrentCommand(MedtronicCommandType.GetHistoryData, pageNumber, null); for (int retries = 0; retries < MAX_COMMAND_TRIES; retries++) { @@ -362,7 +361,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager } if (failed) { - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Sleeping); return pumpTotalResult; } @@ -391,7 +390,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager rawHistoryPage.appendData(currentResponse.getFrameData()); // RileyLinkMedtronicService.getInstance().announceProgress(((100 / 16) * // currentResponse.getFrameNumber() + 1)); - MedtronicUtil.setCurrentCommand(MedtronicCommandType.GetHistoryData, pageNumber, + MedtronicUtil.getInstance().setCurrentCommand(MedtronicCommandType.GetHistoryData, pageNumber, currentResponse.getFrameNumber()); if (isLogEnabled()) @@ -463,7 +462,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager } if (doneWithError) { - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Sleeping); return pumpTotalResult; } @@ -481,13 +480,13 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager LOG.debug("getPumpHistory: Search status: Search finished: {}", pumpTotalResult.isSearchFinished()); if (pumpTotalResult.isSearchFinished()) { - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Sleeping); return pumpTotalResult; } } - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Sleeping); return pumpTotalResult; @@ -503,11 +502,11 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager public byte[] createPumpMessageContent(RLMessageType type) { switch (type) { case PowerOn: - return MedtronicUtil.buildCommandPayload(MedtronicCommandType.RFPowerOn, // + return MedtronicUtil.getInstance().buildCommandPayload(MedtronicCommandType.RFPowerOn, // new byte[]{2, 1, (byte) receiverDeviceAwakeForMinutes}); // maybe this is better FIXME case ReadSimpleData: - return MedtronicUtil.buildCommandPayload(MedtronicCommandType.PumpModel, null); + return MedtronicUtil.getInstance().buildCommandPayload(MedtronicCommandType.PumpModel, null); } return new byte[0]; } @@ -551,7 +550,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager if (doWakeUpBeforeCommand) wakeUp(receiverDeviceAwakeForMinutes, false); - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Active); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Active); // create message PumpMessage msg; @@ -564,7 +563,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager // send and wait for response PumpMessage response = sendAndListen(msg, timeoutMs); - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Sleeping); return response; } @@ -693,9 +692,9 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager if (isLogEnabled()) LOG.debug("getDataFromPump: {}", commandType); - MedtronicUtil.setCurrentCommand(commandType); + MedtronicUtil.getInstance().setCurrentCommand(commandType); - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Active); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Active); for (int retries = 0; retries <= MAX_COMMAND_TRIES; retries++) { @@ -753,8 +752,8 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager if (isLogEnabled()) LOG.debug("Converted response for {} is {}.", commandType.name(), basalProfile); - MedtronicUtil.setCurrentCommand(null); - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + MedtronicUtil.getInstance().setCurrentCommand(null); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Sleeping); return basalProfile; } @@ -765,8 +764,8 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager } LOG.warn("Error reading profile in max retries."); - MedtronicUtil.setCurrentCommand(null); - MedtronicUtil.setPumpDeviceState(PumpDeviceState.Sleeping); + MedtronicUtil.getInstance().setCurrentCommand(null); + MedtronicUtil.getInstance().setPumpDeviceState(PumpDeviceState.Sleeping); return null; @@ -825,7 +824,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager public Map getPumpSettings() { - Object responseObject = sendAndGetResponseWithCheck(MedtronicCommandType.getSettings(MedtronicUtil + Object responseObject = sendAndGetResponseWithCheck(MedtronicCommandType.getSettings(MedtronicUtil.getInstance() .getMedtronicPumpModel())); return responseObject == null ? null : (Map) responseObject; @@ -837,7 +836,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager if (isLogEnabled()) LOG.info("setBolus: " + units); - return setCommand(MedtronicCommandType.SetBolus, MedtronicUtil.getBolusStrokes(units)); + return setCommand(MedtronicCommandType.SetBolus, MedtronicUtil.getInstance().getBolusStrokes(units)); } @@ -866,7 +865,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager data[i + 1] = (byte) gc.get(Calendar.MINUTE); data[i + 2] = (byte) gc.get(Calendar.SECOND); - byte[] yearByte = MedtronicUtil.getByteArrayFromUnsignedShort(gc.get(Calendar.YEAR), true); + byte[] yearByte = MedtronicUtil.getInstance().getByteArrayFromUnsignedShort(gc.get(Calendar.YEAR), true); data[i + 3] = yearByte[0]; data[i + 4] = yearByte[1]; @@ -931,7 +930,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager public Boolean setBasalProfile(BasalProfile basalProfile) { - List> basalProfileFrames = MedtronicUtil.getBasalProfileFrames(basalProfile.getRawData()); + List> basalProfileFrames = MedtronicUtil.getInstance().getBasalProfileFrames(basalProfile.getRawData()); for (int retries = 0; retries <= MAX_COMMAND_TRIES; retries++) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java index 9fb871c45a..cec4df9140 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java @@ -44,7 +44,7 @@ public class MedtronicConverter { if (isLogEnabled()) LOG.debug("Raw response before convert: " + ByteUtil.shortHexString(rawContent)); - this.pumpModel = MedtronicUtil.getMedtronicPumpModel(); + this.pumpModel = MedtronicUtil.getInstance().getMedtronicPumpModel(); switch (commandType) { @@ -117,8 +117,8 @@ public class MedtronicConverter { LOG.debug("PumpModel: [raw={}, resolved={}]", rawModel, pumpModel.name()); if (pumpModel != MedtronicDeviceType.Unknown_Device) { - if (!MedtronicUtil.isModelSet()) { - MedtronicUtil.setMedtronicPumpModel(pumpModel); + if (!MedtronicUtil.getInstance().isModelSet()) { + MedtronicUtil.getInstance().setMedtronicPumpModel(pumpModel); } } @@ -157,7 +157,7 @@ public class MedtronicConverter { protected Float decodeRemainingInsulin(byte[] rawData) { int startIdx = 0; - this.pumpModel = MedtronicUtil.getMedtronicPumpModel(); + this.pumpModel = MedtronicUtil.getInstance().getMedtronicPumpModel(); int strokes = pumpModel == null ? 10 : pumpModel.getBolusStrokes(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java index 4a2fa12a28..dfeb465adf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java @@ -62,7 +62,7 @@ public abstract class MedtronicHistoryDecoder i // return byteList; // } - if (MedtronicUtil.getMedtronicPumpModel() == null) { + if (MedtronicUtil.getInstance().getMedtronicPumpModel() == null) { LOG.error("Device Type is not defined."); return byteList; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RawHistoryPage.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RawHistoryPage.java index 86c463cc0f..6aa51e94df 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RawHistoryPage.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RawHistoryPage.java @@ -58,7 +58,7 @@ public class RawHistoryPage { LOG.error("Stored CRC ({}) is different than calculated ({}), but ignored for now.", crcStored, crcCalculated); } else { - if (MedtronicUtil.isLowLevelDebug()) + if (MedtronicUtil.getInstance().isLowLevelDebug()) LOG.debug("CRC ok."); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java index 29b30b01a3..a8afb71e19 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java @@ -51,7 +51,7 @@ public class MedtronicPumpHistoryDecoder extends MedtronicHistoryDecoder outList = new ArrayList(); String skipped = null; @@ -408,7 +408,7 @@ public class MedtronicPumpHistoryDecoder extends MedtronicHistoryDecoder payload) { - init(MedtronicUtil.createByteArray(payload)); + init(MedtronicUtil.getInstance().createByteArray(payload)); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java index b4cebbb1cf..40b2c12f3d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java @@ -1,5 +1,7 @@ package info.nightscout.androidaps.plugins.pump.medtronic.comm.ui; +import org.jetbrains.annotations.NotNull; + import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.bus.RxBusWrapper; @@ -15,7 +17,9 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper; */ public class MedtronicUIComm { - private final AAPSLogger aapsLogger; + @NotNull private final AAPSLogger aapsLogger; + @NotNull private final RileyLinkUtil rileyLinkUtil; + @NotNull private final MedtronicUtil medtronicUtil; MedtronicCommunicationManager mcmInstance = null; MedtronicUIPostprocessor uiPostprocessor; @@ -23,11 +27,15 @@ public class MedtronicUIComm { public MedtronicUIComm( AAPSLogger aapsLogger, RxBusWrapper rxBus, - ResourceHelper resourceHelper + ResourceHelper resourceHelper, + RileyLinkUtil rileyLinkUtil, + MedtronicUtil medtronicUtil ) { this.aapsLogger = aapsLogger; + this.rileyLinkUtil = rileyLinkUtil; + this.medtronicUtil = medtronicUtil; - uiPostprocessor = new MedtronicUIPostprocessor(aapsLogger, rxBus, resourceHelper); + uiPostprocessor = new MedtronicUIPostprocessor(aapsLogger, rxBus, resourceHelper, medtronicUtil); } @@ -46,7 +54,7 @@ public class MedtronicUIComm { MedtronicUITask task = new MedtronicUITask(commandType, parameters); - MedtronicUtil.setCurrentCommand(commandType); + medtronicUtil.setCurrentCommand(commandType); // new Thread(() -> { // LOG.warn("@@@ Start Thread"); @@ -108,6 +116,6 @@ public class MedtronicUIComm { public void startTunning() { - RileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); + rileyLinkUtil.sendBroadcastMessage(RileyLinkConst.IPC.MSG_PUMP_tunePump); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java index 0875ffe186..0812678343 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java @@ -1,5 +1,6 @@ package info.nightscout.androidaps.plugins.pump.medtronic.comm.ui; +import org.jetbrains.annotations.NotNull; import org.joda.time.DateTimeZone; import org.joda.time.Duration; @@ -20,7 +21,6 @@ import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpSta import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; import info.nightscout.androidaps.utils.resources.ResourceHelper; -import static info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil.sendNotification; /** * Created by andy on 6/15/18. @@ -28,20 +28,16 @@ import static info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUt class MedtronicUIPostprocessor { - private final AAPSLogger aapsLogger; - private final RxBusWrapper rxBus; - private final ResourceHelper resourceHelper; + @NotNull private final AAPSLogger aapsLogger; + @NotNull private final RxBusWrapper rxBus; + @NotNull private final ResourceHelper resourceHelper; + @NotNull private final MedtronicUtil medtronicUtil; - - private MedtronicPumpStatus pumpStatus; - - - - public MedtronicUIPostprocessor(AAPSLogger aapsLogger, RxBusWrapper rxBus, ResourceHelper resourceHelper) { + public MedtronicUIPostprocessor(AAPSLogger aapsLogger, RxBusWrapper rxBus, ResourceHelper resourceHelper, MedtronicUtil medtronicUtil) { this.aapsLogger = aapsLogger; this.rxBus = rxBus; this.resourceHelper = resourceHelper; - pumpStatus = MedtronicUtil.getPumpStatus(); + this.medtronicUtil = medtronicUtil; } @@ -57,7 +53,7 @@ class MedtronicUIPostprocessor { if (response) { BasalProfile basalProfile = (BasalProfile) uiTask.getParameter(0); - pumpStatus.basalsByHour = basalProfile.getProfilesByHour(); + medtronicUtil.getPumpStatus().basalsByHour = basalProfile.getProfilesByHour(); } } break; @@ -69,8 +65,8 @@ class MedtronicUIPostprocessor { Double[] profilesByHour = basalProfile.getProfilesByHour(); if (profilesByHour != null) { - pumpStatus.basalsByHour = profilesByHour; - pumpStatus.basalProfileStatus = BasalProfileStatus.ProfileOK; + medtronicUtil.getPumpStatus().basalsByHour = profilesByHour; + medtronicUtil.getPumpStatus().basalProfileStatus = BasalProfileStatus.ProfileOK; } else { uiTask.responseType = MedtronicUIResponseType.Error; uiTask.errorDescription = "No profile found."; @@ -85,20 +81,20 @@ class MedtronicUIPostprocessor { break; case SetBolus: { - pumpStatus.lastBolusAmount = uiTask.getDoubleFromParameters(0); - pumpStatus.lastBolusTime = new Date(); + medtronicUtil.getPumpStatus().lastBolusAmount = uiTask.getDoubleFromParameters(0); + medtronicUtil.getPumpStatus().lastBolusTime = new Date(); } break; case GetRemainingInsulin: { - pumpStatus.reservoirRemainingUnits = (Float) uiTask.returnData; + medtronicUtil.getPumpStatus().reservoirRemainingUnits = (Float) uiTask.returnData; } break; case CancelTBR: { - pumpStatus.tempBasalStart = null; - pumpStatus.tempBasalAmount = null; - pumpStatus.tempBasalLength = null; + medtronicUtil.getPumpStatus().tempBasalStart = null; + medtronicUtil.getPumpStatus().tempBasalAmount = null; + medtronicUtil.getPumpStatus().tempBasalLength = null; } break; @@ -113,7 +109,7 @@ class MedtronicUIPostprocessor { aapsLogger.debug(LTag.PUMP, "New time was {} set.", response ? "" : "NOT"); if (response) { - MedtronicUtil.getPumpTime().timeDifference = 0; + medtronicUtil.getPumpTime().timeDifference = 0; } } break; @@ -122,10 +118,10 @@ class MedtronicUIPostprocessor { case GetBatteryStatus: { BatteryStatusDTO batteryStatusDTO = (BatteryStatusDTO) uiTask.returnData; - pumpStatus.batteryRemaining = batteryStatusDTO.getCalculatedPercent(pumpStatus.batteryType); + medtronicUtil.getPumpStatus().batteryRemaining = batteryStatusDTO.getCalculatedPercent(medtronicUtil.getPumpStatus().batteryType); if (batteryStatusDTO.voltage != null) { - pumpStatus.batteryVoltage = batteryStatusDTO.voltage; + medtronicUtil.getPumpStatus().batteryVoltage = batteryStatusDTO.voltage; } aapsLogger.debug(LTag.PUMP, "BatteryStatus: {}", batteryStatusDTO.toString()); @@ -134,9 +130,9 @@ class MedtronicUIPostprocessor { break; case PumpModel: { - if (pumpStatus.medtronicDeviceType != MedtronicUtil.getMedtronicPumpModel()) { + if (medtronicUtil.getPumpStatus().medtronicDeviceType != medtronicUtil.getMedtronicPumpModel()) { aapsLogger.warn(LTag.PUMP, "Configured pump is different then pump detected !"); - sendNotification(MedtronicNotificationType.PumpTypeNotSame, resourceHelper, rxBus); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpTypeNotSame, resourceHelper, rxBus); } } break; @@ -166,7 +162,7 @@ class MedtronicUIPostprocessor { clockDTO.timeDifference = (int) dur.getStandardSeconds(); - MedtronicUtil.setPumpTime(clockDTO); + medtronicUtil.setPumpTime(clockDTO); aapsLogger.debug(LTag.PUMP, "Pump Time: " + clockDTO.localDeviceTime + ", DeviceTime=" + clockDTO.pumpTime + // ", diff: " + dur.getStandardSeconds() + " s"); @@ -190,29 +186,27 @@ class MedtronicUIPostprocessor { Map settings = (Map) uiTask.returnData; - MedtronicUtil.setSettings(settings); + medtronicUtil.setSettings(settings); PumpSettingDTO checkValue = null; - if (pumpStatus == null) { + if (medtronicUtil.getPumpStatus() == null) { aapsLogger.debug(LTag.PUMP, "Pump Status: was null"); - pumpStatus = MedtronicUtil.getPumpStatus(); - aapsLogger.debug(LTag.PUMP, "Pump Status: " + this.pumpStatus); - } + } - this.pumpStatus.verifyConfiguration(); + medtronicUtil.getPumpStatus().verifyConfiguration(); // check profile if (!"Yes".equals(settings.get("PCFG_BASAL_PROFILES_ENABLED").value)) { aapsLogger.error(LTag.PUMP, "Basal profiles are not enabled on pump."); - sendNotification(MedtronicNotificationType.PumpBasalProfilesNotEnabled, resourceHelper, rxBus); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpBasalProfilesNotEnabled, resourceHelper, rxBus); } else { checkValue = settings.get("PCFG_ACTIVE_BASAL_PROFILE"); if (!"STD".equals(checkValue.value)) { aapsLogger.error("Basal profile set on pump is incorrect (must be STD)."); - sendNotification(MedtronicNotificationType.PumpIncorrectBasalProfileSelected, resourceHelper, rxBus); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpIncorrectBasalProfileSelected, resourceHelper, rxBus); } } @@ -222,23 +216,23 @@ class MedtronicUIPostprocessor { if (!"Units".equals(checkValue.value)) { aapsLogger.error("Wrong TBR type set on pump (must be Absolute)."); - sendNotification(MedtronicNotificationType.PumpWrongTBRTypeSet, resourceHelper, rxBus); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpWrongTBRTypeSet, resourceHelper, rxBus); } // MAXes checkValue = settings.get("PCFG_MAX_BOLUS"); - if (!MedtronicUtil.isSame(Double.parseDouble(checkValue.value), pumpStatus.maxBolus)) { - aapsLogger.error("Wrong Max Bolus set on Pump (current={}, required={}).", checkValue.value, pumpStatus.maxBolus); - sendNotification(MedtronicNotificationType.PumpWrongMaxBolusSet, resourceHelper, rxBus, pumpStatus.maxBolus); + if (!medtronicUtil.isSame(Double.parseDouble(checkValue.value), medtronicUtil.getPumpStatus().maxBolus)) { + aapsLogger.error("Wrong Max Bolus set on Pump (current={}, required={}).", checkValue.value, medtronicUtil.getPumpStatus().maxBolus); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpWrongMaxBolusSet, resourceHelper, rxBus, medtronicUtil.getPumpStatus().maxBolus); } checkValue = settings.get("PCFG_MAX_BASAL"); - if (!MedtronicUtil.isSame(Double.parseDouble(checkValue.value), pumpStatus.maxBasal)) { - aapsLogger.error("Wrong Max Basal set on Pump (current={}, required={}).", checkValue.value, pumpStatus.maxBasal); - sendNotification(MedtronicNotificationType.PumpWrongMaxBasalSet, resourceHelper, rxBus, pumpStatus.maxBasal); + if (!medtronicUtil.isSame(Double.parseDouble(checkValue.value), medtronicUtil.getPumpStatus().maxBasal)) { + aapsLogger.error("Wrong Max Basal set on Pump (current={}, required={}).", checkValue.value, medtronicUtil.getPumpStatus().maxBasal); + medtronicUtil.sendNotification(MedtronicNotificationType.PumpWrongMaxBasalSet, resourceHelper, rxBus, medtronicUtil.getPumpStatus().maxBasal); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java index 0a52785e40..7518cba457 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java @@ -70,7 +70,7 @@ public class MedtronicUITask { case GetRealTimeClock: { returnData = communicationManager.getPumpTime(); - MedtronicUtil.setPumpTime(null); + MedtronicUtil.getInstance().setPumpTime(null); } break; @@ -200,10 +200,10 @@ public class MedtronicUITask { errorDescription)); } else { RxBus.Companion.getINSTANCE().send(new EventMedtronicPumpValuesChanged()); - MedtronicUtil.getPumpStatus().setLastCommunicationToNow(); + MedtronicUtil.getInstance().getPumpStatus().setLastCommunicationToNow(); } - MedtronicUtil.setCurrentCommand(null); + MedtronicUtil.getInstance().setCurrentCommand(null); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java index ac07c9a337..2d294d49b6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java @@ -69,7 +69,7 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP; public class MedtronicHistoryData { - private static AAPSLogger aapsLogger; + private AAPSLogger aapsLogger; private SP sp; private ActivePluginProvider activePlugin; @@ -97,20 +97,12 @@ public class MedtronicHistoryData { public MedtronicHistoryData(AAPSLogger aapsLogger, SP sp, ActivePluginProvider activePlugin) { this.allHistory = new ArrayList<>(); - this.gson = MedtronicUtil.gsonInstance; - this.gsonCore = MedtronicUtil.getGsonInstanceCore(); + this.gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + this.gsonCore = new GsonBuilder().create(); this.aapsLogger = aapsLogger; this.sp = sp; this.activePlugin = activePlugin; - - if (this.gson == null) { - this.gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); - } - - if (this.gsonCore == null) { - this.gsonCore = new GsonBuilder().create(); - } } @@ -138,7 +130,7 @@ public class MedtronicHistoryData { } - private static void showLogs(String header, String data) { + private void showLogs(String header, String data) { if (header != null) { aapsLogger.debug(LTag.PUMP, header); } @@ -321,7 +313,7 @@ public class MedtronicHistoryData { List items = getDataForPumpSuspends(); - showLogs("isPumpSuspended: ", MedtronicUtil.gsonInstance.toJson(items)); + showLogs("isPumpSuspended: ", gson.toJson(items)); if (isCollectionNotEmpty(items)) { @@ -432,7 +424,7 @@ public class MedtronicHistoryData { } } - pumpTime = MedtronicUtil.getPumpTime(); + pumpTime = MedtronicUtil.getInstance().getPumpTime(); // Bolus List treatments = getFilteredItems(PumpHistoryEntryType.Bolus); @@ -595,8 +587,6 @@ public class MedtronicHistoryData { long oldestTimestamp = getOldestTimestamp(entryList); - Gson gson = MedtronicUtil.getGsonInstance(); - List entriesFromHistory = getDatabaseEntriesByLastTimestamp(oldestTimestamp, ProcessHistoryRecord.Bolus); if (doubleBolusDebug) @@ -976,7 +966,7 @@ public class MedtronicHistoryData { treatment.pumpId = bolus.getPumpId(); treatment.insulin = bolusDTO.getDeliveredAmount(); - TreatmentService.UpdateReturn updateReturn = ((TreatmentsPlugin)activePlugin.getActiveTreatments()).getService().createOrUpdateMedtronic(treatment, false); + TreatmentService.UpdateReturn updateReturn = ((TreatmentsPlugin) activePlugin.getActiveTreatments()).getService().createOrUpdateMedtronic(treatment, false); if (doubleBolusDebug) aapsLogger.debug(LTag.PUMP, "DoubleBolusDebug: addBolus(tretament!=null): NewTreatment={}, UpdateReturn={}", treatment, updateReturn); @@ -1370,11 +1360,11 @@ public class MedtronicHistoryData { private PumpHistoryEntryType getTDDType() { - if (MedtronicUtil.getMedtronicPumpModel() == null) { + if (MedtronicUtil.getInstance().getMedtronicPumpModel() == null) { return PumpHistoryEntryType.EndResultTotals; } - switch (MedtronicUtil.getMedtronicPumpModel()) { + switch (MedtronicUtil.getInstance().getMedtronicPumpModel()) { case Medtronic_515: case Medtronic_715: diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java index 9956e9103e..3f6e2d9f2d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java @@ -73,7 +73,7 @@ public class BasalProfile { // if we have just one entry through all day it looks like just length 1 if (data.length == 1) { - data = MedtronicUtil.createByteArray(data[0], (byte) 0, (byte) 0); + data = MedtronicUtil.getInstance().createByteArray(data[0], (byte) 0, (byte) 0); } if (data.length == MAX_RAW_DATA_SIZE) { @@ -230,7 +230,7 @@ public class BasalProfile { if ((mRawData[i] == 0) && (mRawData[i + 1] == 0) && (mRawData[i + 2] == 0x3f)) break; - r = MedtronicUtil.makeUnsignedShort(mRawData[i + 1], mRawData[i]); // readUnsignedByte(mRawData[i]); + r = MedtronicUtil.getInstance().makeUnsignedShort(mRawData[i + 1], mRawData[i]); // readUnsignedByte(mRawData[i]); st = readUnsignedByte(mRawData[i + 2]); try { @@ -265,14 +265,14 @@ public class BasalProfile { for (BasalProfileEntry profileEntry : listEntries) { - byte[] strokes = MedtronicUtil.getBasalStrokes(profileEntry.rate, true); + byte[] strokes = MedtronicUtil.getInstance().getBasalStrokes(profileEntry.rate, true); outData.add(profileEntry.rate_raw[0]); outData.add(profileEntry.rate_raw[1]); outData.add(profileEntry.startTime_raw); } - this.setRawData(MedtronicUtil.createByteArray(outData)); + this.setRawData(MedtronicUtil.getInstance().createByteArray(outData)); // return this.mRawData; } @@ -305,7 +305,7 @@ public class BasalProfile { Double[] basalByHour = new Double[24]; - PumpType pumpType = MedtronicUtil.getPumpStatus().pumpType; + PumpType pumpType = MedtronicUtil.getInstance().getPumpStatus().pumpType; for (int i = 0; i < entries.size(); i++) { BasalProfileEntry current = entries.get(i); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileEntry.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileEntry.java index 757ffc2f79..e0c7b5a554 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileEntry.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileEntry.java @@ -25,14 +25,14 @@ public class BasalProfileEntry { public BasalProfileEntry() { rate = -9.999E6; - rate_raw = MedtronicUtil.getByteArrayFromUnsignedShort(0xFF, true); + rate_raw = MedtronicUtil.getInstance().getByteArrayFromUnsignedShort(0xFF, true); startTime = new LocalTime(0); startTime_raw = (byte)0xFF; } public BasalProfileEntry(double rate, int hour, int minutes) { - byte[] data = MedtronicUtil.getBasalStrokes(rate, true); + byte[] data = MedtronicUtil.getInstance().getBasalStrokes(rate, true); rate_raw = new byte[2]; rate_raw[0] = data[1]; @@ -52,7 +52,7 @@ public class BasalProfileEntry { public BasalProfileEntry(int rateStrokes, int startTimeInterval) { // rateByte is insulin delivery rate, U/hr, in 0.025 U increments // startTimeByte is time-of-day, in 30 minute increments - rate_raw = MedtronicUtil.getByteArrayFromUnsignedShort(rateStrokes, true); + rate_raw = MedtronicUtil.getInstance().getByteArrayFromUnsignedShort(rateStrokes, true); rate = rateStrokes * 0.025; startTime_raw = (byte)startTimeInterval; @@ -71,7 +71,7 @@ public class BasalProfileEntry { public BasalProfileEntry(byte rateByte, int startTimeByte) { // rateByte is insulin delivery rate, U/hr, in 0.025 U increments // startTimeByte is time-of-day, in 30 minute increments - rate_raw = MedtronicUtil.getByteArrayFromUnsignedShort(rateByte, true); + rate_raw = MedtronicUtil.getInstance().getByteArrayFromUnsignedShort(rateByte, true); rate = rateByte * 0.025; startTime_raw = (byte)startTimeByte; startTime = new LocalTime(startTimeByte / 2, (startTimeByte % 2) * 30); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java index 83ee3baf03..b079dc1a67 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java @@ -56,7 +56,7 @@ public class TempBasalPair extends info.nightscout.androidaps.plugins.pump.commo if (isPercent) { insulinRate = response[1]; } else { - int strokes = MedtronicUtil.makeUnsignedShort(response[2], response[3]); + int strokes = MedtronicUtil.getInstance().makeUnsignedShort(response[2], response[3]); insulinRate = strokes / 40.0d; } @@ -64,7 +64,7 @@ public class TempBasalPair extends info.nightscout.androidaps.plugins.pump.commo if (response.length<6) { durationMinutes = ByteUtil.asUINT8(response[4]); } else { - durationMinutes = MedtronicUtil.makeUnsignedShort(response[4], response[5]); + durationMinutes = MedtronicUtil.getInstance().makeUnsignedShort(response[4], response[5]); } LOG.warn("TempBasalPair (with {} byte response): {}", response.length, toString()); @@ -83,8 +83,8 @@ public class TempBasalPair extends info.nightscout.androidaps.plugins.pump.commo list.add((byte) 5); - byte[] insulinRate = MedtronicUtil.getBasalStrokes(this.insulinRate, true); - byte timeMin = (byte) MedtronicUtil.getIntervalFromMinutes(durationMinutes); + byte[] insulinRate = MedtronicUtil.getInstance().getBasalStrokes(this.insulinRate, true); + byte timeMin = (byte) MedtronicUtil.getInstance().getIntervalFromMinutes(durationMinutes); // list.add((byte) 0); // ? @@ -107,11 +107,11 @@ public class TempBasalPair extends info.nightscout.androidaps.plugins.pump.commo list.add(insulinRate[1]); - return MedtronicUtil.createByteArray(list); + return MedtronicUtil.getInstance().createByteArray(list); } public boolean isCancelTBR() { - return (MedtronicUtil.isSame(insulinRate, 0.0d) && durationMinutes == 0); + return (MedtronicUtil.getInstance().isSame(insulinRate, 0.0d) && durationMinutes == 0); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java index 9ae1b8921a..7552b50d7f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java @@ -1,5 +1,7 @@ package info.nightscout.androidaps.plugins.pump.medtronic.defs; +import androidx.annotation.StringRes; + import java.util.HashMap; import java.util.Map; @@ -19,30 +21,14 @@ public enum BatteryType { NiMH(R.string.key_medtronic_pump_battery_nimh, 1.10d, 1.40d) // ; - private final String description; - public double lowVoltage; - public double highVoltage; + public final @StringRes int description; + public final double lowVoltage; + public final double highVoltage; - static Map mapByDescription; - - static { - mapByDescription = new HashMap<>(); - - for (BatteryType value : values()) { - mapByDescription.put(value.description, value); - } - } BatteryType(int resId, double lowVoltage, double highVoltage) { - this.description = MainApp.gs(resId); + this.description = resId; this.lowVoltage = lowVoltage; this.highVoltage = highVoltage; } - - public static BatteryType getByDescription(String batteryTypeStr) { - if (mapByDescription.containsKey(batteryTypeStr)) { - return mapByDescription.get(batteryTypeStr); - } - return BatteryType.None; - } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicStatusRefreshType.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicStatusRefreshType.java index 55dc9b1a49..e7b361ec13 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicStatusRefreshType.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicStatusRefreshType.java @@ -32,7 +32,7 @@ public enum MedtronicStatusRefreshType { public MedtronicCommandType getCommandType() { if (this == Configuration) { - return MedtronicCommandType.getSettings(MedtronicUtil.getMedtronicPumpModel()); + return MedtronicCommandType.getSettings(MedtronicUtil.getInstance().getMedtronicPumpModel()); } else return commandType; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java index 315aeb0869..6d2faaeef7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java @@ -1,8 +1,6 @@ package info.nightscout.androidaps.plugins.pump.medtronic.driver; import org.joda.time.LocalDateTime; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.Calendar; import java.util.Date; @@ -10,11 +8,14 @@ import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map; +import javax.inject.Inject; +import javax.inject.Singleton; + import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.interfaces.PumpDescription; -import info.nightscout.androidaps.logging.L; -import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; +import info.nightscout.androidaps.logging.AAPSLogger; +import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus; import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst; @@ -31,14 +32,17 @@ import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState; import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst; import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; import info.nightscout.androidaps.utils.SP; +import info.nightscout.androidaps.utils.resources.ResourceHelper; /** * Created by andy on 4/28/18. */ +@Singleton public class MedtronicPumpStatus extends PumpStatus { - private static Logger LOG = StacktraceLoggerWrapper.getLogger(L.PUMP); + private final AAPSLogger aapsLogger; + private final ResourceHelper resourceHelper; public String errorDescription = null; public String serialNumber; @@ -81,8 +85,15 @@ public class MedtronicPumpStatus extends PumpStatus { public BatteryType batteryType = BatteryType.None; - public MedtronicPumpStatus(PumpDescription pumpDescription) { + @Inject + public MedtronicPumpStatus( + AAPSLogger aapsLogger, + ResourceHelper resourceHelper, + PumpDescription pumpDescription + ) { super(pumpDescription); + this.aapsLogger = aapsLogger; + this.resourceHelper = resourceHelper; } @@ -211,7 +222,7 @@ public class MedtronicPumpStatus extends PumpStatus { : RileyLinkTargetFrequency.Medtronic_WorldWide; if (targetFrequency != newTargetFrequency) { - RileyLinkUtil.setRileyLinkTargetFrequency(newTargetFrequency); + RileyLinkUtil.getInstance().setRileyLinkTargetFrequency(newTargetFrequency); targetFrequency = newTargetFrequency; targetFrequencyChanged = true; } @@ -222,15 +233,13 @@ public class MedtronicPumpStatus extends PumpStatus { String rileyLinkAddress = SP.getString(RileyLinkConst.Prefs.RileyLinkAddress, null); if (rileyLinkAddress == null) { - if (isLogEnabled()) - LOG.debug("RileyLink address invalid: null"); + aapsLogger.debug(LTag.PUMP, "RileyLink address invalid: null"); this.errorDescription = MainApp.gs(R.string.medtronic_error_rileylink_address_invalid); return false; } else { if (!rileyLinkAddress.matches(regexMac)) { this.errorDescription = MainApp.gs(R.string.medtronic_error_rileylink_address_invalid); - if (isLogEnabled()) - LOG.debug("RileyLink address invalid: {}", rileyLinkAddress); + aapsLogger.debug(LTag.PUMP, "RileyLink address invalid: {}", rileyLinkAddress); } else { if (!rileyLinkAddress.equals(this.rileyLinkAddress)) { this.rileyLinkAddress = rileyLinkAddress; @@ -276,11 +285,11 @@ public class MedtronicPumpStatus extends PumpStatus { if (batteryTypeStr == null) return false; - BatteryType batteryType = BatteryType.getByDescription(batteryTypeStr); + BatteryType batteryType = getBatteryTypeByDescription(batteryTypeStr); if (this.batteryType != batteryType) { this.batteryType = batteryType; - MedtronicUtil.setBatteryType(this.batteryType); + MedtronicUtil.getInstance().setBatteryType(this.batteryType); } String bolusDebugEnabled = SP.getString(MedtronicConst.Prefs.BolusDebugEnabled, null); @@ -295,7 +304,7 @@ public class MedtronicPumpStatus extends PumpStatus { } catch (Exception ex) { this.errorDescription = ex.getMessage(); - LOG.error("Error on Verification: " + ex.getMessage(), ex); + aapsLogger.error(LTag.PUMP, "Error on Verification: " + ex.getMessage(), ex); return false; } } @@ -303,20 +312,20 @@ public class MedtronicPumpStatus extends PumpStatus { private boolean reconfigureService() { - if (!inPreInit && MedtronicUtil.getMedtronicService() != null) { + if (!inPreInit && MedtronicUtil.getInstance().getMedtronicService() != null) { if (serialChanged) { - MedtronicUtil.getMedtronicService().setPumpIDString(this.serialNumber); // short operation + MedtronicUtil.getInstance().getMedtronicService().setPumpIDString(this.serialNumber); // short operation serialChanged = false; } if (rileyLinkAddressChanged) { - MedtronicUtil.sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkNewAddressSet); + RileyLinkUtil.getInstance().sendBroadcastMessage(RileyLinkConst.Intents.RileyLinkNewAddressSet); rileyLinkAddressChanged = false; } if (encodingChanged) { - RileyLinkUtil.getRileyLinkService().changeRileyLinkEncoding(encodingType); + RileyLinkUtil.getInstance().getRileyLinkService().changeRileyLinkEncoding(encodingType); encodingChanged = false; } } @@ -340,7 +349,7 @@ public class MedtronicPumpStatus extends PumpStatus { try { val = Double.parseDouble(value); } catch (Exception ex) { - LOG.error("Error parsing setting: {}, value found {}", key, value); + aapsLogger.error("Error parsing setting: {}, value found {}", key, value); val = defaultValueDouble; } @@ -384,8 +393,20 @@ public class MedtronicPumpStatus extends PumpStatus { return 0; } - private boolean isLogEnabled() { - return L.isEnabled(L.PUMP); + // Battery type + Map mapByDescription; + + public BatteryType getBatteryTypeByDescription(String batteryTypeStr) { + if (mapByDescription == null) { + mapByDescription = new HashMap<>(); + for (BatteryType value : BatteryType.values()) { + mapByDescription.put(MainApp.gs(value.description), value); + } + } + if (mapByDescription.containsKey(batteryTypeStr)) { + return mapByDescription.get(batteryTypeStr); + } + return BatteryType.None; } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java index 0de5e3f355..b51d24b317 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java @@ -36,11 +36,10 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP; */ public class RileyLinkMedtronicService extends RileyLinkService { - //@Inject AAPSLogger aapsLogger; - //@Inject Context context; @Inject MedtronicPumpPlugin medtronicPumpPlugin; - //@Inject SP sp; + @Inject MedtronicUtil medtronicUtil; + @Deprecated // TEDO remove this reference private static RileyLinkMedtronicService instance; private static ServiceTask currentTask = null; @@ -87,8 +86,8 @@ public class RileyLinkMedtronicService extends RileyLinkService { rileyLinkServiceData = new RileyLinkServiceData(RileyLinkTargetDevice.MedtronicPump); - RileyLinkUtil.setRileyLinkServiceData(rileyLinkServiceData); - RileyLinkUtil.setTargetDevice(RileyLinkTargetDevice.MedtronicPump); + rileyLinkUtil.setRileyLinkServiceData(rileyLinkServiceData); + rileyLinkUtil.setTargetDevice(RileyLinkTargetDevice.MedtronicPump); setPumpIDString(sp.getString(MedtronicConst.Prefs.PumpSerial, "000000")); @@ -99,13 +98,13 @@ public class RileyLinkMedtronicService extends RileyLinkService { rfspy = new RFSpy(rileyLinkBLE); rfspy.startReader(); - RileyLinkUtil.setRileyLinkBLE(rileyLinkBLE); + rileyLinkUtil.setRileyLinkBLE(rileyLinkBLE); // init rileyLinkCommunicationManager medtronicCommunicationManager = new MedtronicCommunicationManager(rfspy); aapsLogger.debug(LTag.PUMPCOMM, "RileyLinkMedtronicService newly constructed"); - MedtronicUtil.setMedtronicService(this); + medtronicUtil.setMedtronicService(this); pumpStatus = (MedtronicPumpStatus) medtronicPumpPlugin.getPumpStatusData(); } @@ -153,13 +152,13 @@ public class RileyLinkMedtronicService extends RileyLinkService { rileyLinkServiceData.setPumpID(pumpID, pumpIDBytes); if (oldId != null && !oldId.equals(pumpID)) { - MedtronicUtil.setMedtronicPumpModel(null); // if we change pumpId, model probably changed too + medtronicUtil.setMedtronicPumpModel(null); // if we change pumpId, model probably changed too } return; } - MedtronicUtil.setPumpDeviceState(PumpDeviceState.InvalidConfiguration); + medtronicUtil.setPumpDeviceState(PumpDeviceState.InvalidConfiguration); // LOG.info("setPumpIDString: saved pumpID " + idString); } @@ -177,7 +176,7 @@ public class RileyLinkMedtronicService extends RileyLinkService { // PumpInterface - REMOVE public boolean isInitialized() { - return RileyLinkServiceState.isReady(RileyLinkUtil.getRileyLinkServiceData().serviceState); + return RileyLinkServiceState.isReady(rileyLinkUtil.getRileyLinkServiceData().serviceState); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java index 7f02a42d21..0409a73421 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java @@ -1,10 +1,12 @@ package info.nightscout.androidaps.plugins.pump.medtronic.util; +import android.content.Context; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import org.jetbrains.annotations.NotNull; import org.joda.time.LocalTime; -import org.slf4j.Logger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -12,10 +14,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import javax.inject.Inject; +import javax.inject.Singleton; + import info.nightscout.androidaps.interfaces.PluginType; -import info.nightscout.androidaps.logging.L; -import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; -import info.nightscout.androidaps.plugins.bus.RxBus; +import info.nightscout.androidaps.logging.AAPSLogger; +import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification; @@ -42,37 +46,64 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper; * Created by andy on 5/9/18. */ -public class MedtronicUtil extends RileyLinkUtil { +@Singleton +public class MedtronicUtil { - private static final Logger LOG = StacktraceLoggerWrapper.getLogger(L.PUMPCOMM); - static int ENVELOPE_SIZE = 4; // 0xA7 S1 S2 S3 CMD PARAM_COUNT [PARAMS] - static int CRC_SIZE = 1; - private static boolean lowLevelDebug = true; - private static PumpDeviceState pumpDeviceState; - private static MedtronicDeviceType medtronicPumpModel; - private static RileyLinkMedtronicService medtronicService; - private static MedtronicPumpStatus medtronicPumpStatus; - private static MedtronicCommandType currentCommand; - private static Map settings; - private static int BIG_FRAME_LENGTH = 65; - private static int doneBit = 1 << 7; - private static ClockDTO pumpTime; - public static Gson gsonInstance = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); - public static Gson gsonInstanceCore = new GsonBuilder().create(); - private static BatteryType batteryType = BatteryType.None; + private int ENVELOPE_SIZE = 4; // 0xA7 S1 S2 S3 CMD PARAM_COUNT [PARAMS] + int CRC_SIZE = 1; + private boolean lowLevelDebug = true; + private PumpDeviceState pumpDeviceState; + private MedtronicDeviceType medtronicPumpModel; + private RileyLinkMedtronicService medtronicService; + @Deprecated // TODO remove this reference + private MedtronicPumpStatus medtronicPumpStatus; + private MedtronicCommandType currentCommand; + private Map settings; + private int BIG_FRAME_LENGTH = 65; + private int doneBit = 1 << 7; + private ClockDTO pumpTime; + public Gson gsonInstance = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); + public Gson gsonInstanceCore = new GsonBuilder().create(); + private BatteryType batteryType = BatteryType.None; + @NotNull private final AAPSLogger aapsLogger; + @NotNull private final RxBusWrapper rxBus; + @NotNull private final RileyLinkUtil rileyLinkUtil; - public static Gson getGsonInstance() { + @Inject + public MedtronicUtil( + Context context, + AAPSLogger aapsLogger, + RxBusWrapper rxBus, + RileyLinkUtil rileyLinkUtil + + ) { + this.aapsLogger = aapsLogger; + this.rxBus = rxBus; + this.rileyLinkUtil = rileyLinkUtil; + instance = this; + } + + private static MedtronicUtil instance; + + // TODO: replace by injection + @Deprecated + public static MedtronicUtil getInstance() { + if (instance == null) throw new IllegalStateException("MedtronicUtil not initialized"); + return instance; + } + + public Gson getGsonInstance() { return gsonInstance; } - public static Gson getGsonInstanceCore() { + public Gson getGsonInstanceCore() { return gsonInstanceCore; } - public static LocalTime getTimeFrom30MinInterval(int interval) { + public LocalTime getTimeFrom30MinInterval(int interval) { if (interval % 2 == 0) { return new LocalTime(interval / 2, 0); } else { @@ -81,23 +112,23 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static int getIntervalFromMinutes(int minutes) { + public int getIntervalFromMinutes(int minutes) { return minutes / 30; } - public static int makeUnsignedShort(int b2, int b1) { + public int makeUnsignedShort(int b2, int b1) { int k = (b2 & 0xff) << 8 | b1 & 0xff; return k; } - public static boolean isMedtronicPump() { + public boolean isMedtronicPump() { return MedtronicPumpPlugin.getPlugin().isEnabled(PluginType.PUMP); //return ConfigBuilderPlugin.getPlugin().getActivePump().deviceID().equals("Medtronic"); } - public static byte[] getByteArrayFromUnsignedShort(int shortValue, boolean returnFixedSize) { + public byte[] getByteArrayFromUnsignedShort(int shortValue, boolean returnFixedSize) { byte highByte = (byte) (shortValue >> 8 & 0xFF); byte lowByte = (byte) (shortValue & 0xFF); @@ -110,12 +141,12 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static byte[] createByteArray(byte... data) { + public byte[] createByteArray(byte... data) { return data; } - public static byte[] createByteArray(List data) { + public byte[] createByteArray(List data) { byte[] array = new byte[data.size()]; @@ -127,32 +158,32 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static double decodeBasalInsulin(int i, int j) { + public double decodeBasalInsulin(int i, int j) { return decodeBasalInsulin(makeUnsignedShort(i, j)); } - public static double decodeBasalInsulin(int i) { + public double decodeBasalInsulin(int i) { return (double) i / 40.0d; } - public static byte[] getBasalStrokes(double amount) { + public byte[] getBasalStrokes(double amount) { return getBasalStrokes(amount, false); } - public static byte[] getBasalStrokes(double amount, boolean returnFixedSize) { + public byte[] getBasalStrokes(double amount, boolean returnFixedSize) { return getStrokes(amount, 40, returnFixedSize); } - public static int getBasalStrokesInt(double amount) { + public int getBasalStrokesInt(double amount) { return getStrokesInt(amount, 40); } - public static byte[] getBolusStrokes(double amount) { + public byte[] getBolusStrokes(double amount) { int strokesPerUnit = medtronicPumpModel.getBolusStrokes(); @@ -184,13 +215,13 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static byte[] createCommandBody(byte[] input) { + public byte[] createCommandBody(byte[] input) { return ByteUtil.concat((byte) input.length, input); } - public static byte[] getStrokes(double amount, int strokesPerUnit, boolean returnFixedSize) { + public byte[] getStrokes(double amount, int strokesPerUnit, boolean returnFixedSize) { int strokes = getStrokesInt(amount, strokesPerUnit); @@ -199,7 +230,7 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static int getStrokesInt(double amount, int strokesPerUnit) { + public int getStrokesInt(double amount, int strokesPerUnit) { int length = 1; int scrollRate = 1; @@ -223,7 +254,7 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static void sendNotification(MedtronicNotificationType notificationType, ResourceHelper resourceHelper, RxBusWrapper rxBus) { + public void sendNotification(MedtronicNotificationType notificationType, ResourceHelper resourceHelper, RxBusWrapper rxBus) { Notification notification = new Notification( // notificationType.getNotificationType(), // resourceHelper.gs(notificationType.getResourceId()), // @@ -232,7 +263,7 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static void sendNotification(MedtronicNotificationType notificationType, ResourceHelper resourceHelper, RxBusWrapper rxBus, Object... parameters) { + public void sendNotification(MedtronicNotificationType notificationType, ResourceHelper resourceHelper, RxBusWrapper rxBus, Object... parameters) { Notification notification = new Notification( // notificationType.getNotificationType(), // resourceHelper.gs(notificationType.getResourceId(), parameters), // @@ -241,22 +272,22 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static void dismissNotification(MedtronicNotificationType notificationType, RxBusWrapper rxBus) { + public void dismissNotification(MedtronicNotificationType notificationType, RxBusWrapper rxBus) { rxBus.send(new EventDismissNotification(notificationType.getNotificationType())); } -// public static byte[] buildCommandPayload(MessageType commandType, byte[] parameters) { +// public byte[] buildCommandPayload(MessageType commandType, byte[] parameters) { // return buildCommandPayload(commandType.getValue(), parameters); // } - public static byte[] buildCommandPayload(MedtronicCommandType commandType, byte[] parameters) { + public byte[] buildCommandPayload(MedtronicCommandType commandType, byte[] parameters) { return buildCommandPayload((byte) commandType.commandCode, parameters); } - public static byte[] buildCommandPayload(byte commandType, byte[] parameters) { + public byte[] buildCommandPayload(byte commandType, byte[] parameters) { // A7 31 65 51 C0 00 52 byte commandLength = (byte) (parameters == null ? 2 : 2 + parameters.length); @@ -264,7 +295,7 @@ public class MedtronicUtil extends RileyLinkUtil { ByteBuffer sendPayloadBuffer = ByteBuffer.allocate(ENVELOPE_SIZE + commandLength); // + CRC_SIZE sendPayloadBuffer.order(ByteOrder.BIG_ENDIAN); - byte[] serialNumberBCD = RileyLinkUtil.getRileyLinkServiceData().pumpIDBytes; + byte[] serialNumberBCD = rileyLinkUtil.getRileyLinkServiceData().pumpIDBytes; sendPayloadBuffer.put((byte) 0xA7); sendPayloadBuffer.put(serialNumberBCD[0]); @@ -285,8 +316,7 @@ public class MedtronicUtil extends RileyLinkUtil { byte[] payload = sendPayloadBuffer.array(); - if (L.isEnabled(L.PUMPCOMM)) - LOG.debug("buildCommandPayload [{}]", ByteUtil.shortHexString(payload)); + aapsLogger.debug(LTag.PUMPBTCOMM, "buildCommandPayload [{}]", ByteUtil.shortHexString(payload)); // int crc = computeCRC8WithPolynomial(payload, 0, payload.length - 1); @@ -300,7 +330,7 @@ public class MedtronicUtil extends RileyLinkUtil { // Note: at the moment supported only for 24 items, if you will use it for more than // that you will need to add - public static List> getBasalProfileFrames(byte[] data) { + public List> getBasalProfileFrames(byte[] data) { boolean done = false; int start = 0; @@ -372,7 +402,7 @@ public class MedtronicUtil extends RileyLinkUtil { } - private static void checkAndAppenLastFrame(List frameData) { + private void checkAndAppenLastFrame(List frameData) { if (frameData.size() == BIG_FRAME_LENGTH) return; @@ -385,7 +415,7 @@ public class MedtronicUtil extends RileyLinkUtil { } - private static boolean isEmptyFrame(List frameData) { + private boolean isEmptyFrame(List frameData) { for (Byte frameDateEntry : frameData) { if (frameDateEntry != 0x00) { @@ -397,132 +427,133 @@ public class MedtronicUtil extends RileyLinkUtil { } - public static boolean isLowLevelDebug() { + public boolean isLowLevelDebug() { return lowLevelDebug; } - public static void setLowLevelDebug(boolean lowLevelDebug) { - MedtronicUtil.lowLevelDebug = lowLevelDebug; + public void setLowLevelDebug(boolean lowLevelDebug) { + this.lowLevelDebug = lowLevelDebug; } - public static PumpDeviceState getPumpDeviceState() { + public PumpDeviceState getPumpDeviceState() { return pumpDeviceState; } - public static void setPumpDeviceState(PumpDeviceState pumpDeviceState) { - MedtronicUtil.pumpDeviceState = pumpDeviceState; + public void setPumpDeviceState(PumpDeviceState pumpDeviceState) { + this.pumpDeviceState = pumpDeviceState; - historyRileyLink.add(new RLHistoryItem(pumpDeviceState, RileyLinkTargetDevice.MedtronicPump)); + rileyLinkUtil.historyRileyLink.add(new RLHistoryItem(pumpDeviceState, RileyLinkTargetDevice.MedtronicPump)); - RxBus.Companion.getINSTANCE().send(new EventMedtronicDeviceStatusChange(pumpDeviceState)); + rxBus.send(new EventMedtronicDeviceStatusChange(pumpDeviceState)); } - public static boolean isModelSet() { - return MedtronicUtil.medtronicPumpModel != null; + public boolean isModelSet() { + return medtronicPumpModel != null; } - public static MedtronicDeviceType getMedtronicPumpModel() { - return MedtronicUtil.medtronicPumpModel; + public MedtronicDeviceType getMedtronicPumpModel() { + return medtronicPumpModel; } - public static void setMedtronicPumpModel(MedtronicDeviceType medtronicPumpModel) { - MedtronicUtil.medtronicPumpModel = medtronicPumpModel; + public void setMedtronicPumpModel(MedtronicDeviceType medtronicPumpModel) { + this.medtronicPumpModel = medtronicPumpModel; } - public static MedtronicCommunicationManager getMedtronicCommunicationManager() { - return (MedtronicCommunicationManager) RileyLinkUtil.rileyLinkCommunicationManager; + public MedtronicCommunicationManager getMedtronicCommunicationManager() { + return (MedtronicCommunicationManager) rileyLinkUtil.rileyLinkCommunicationManager; } - public static RileyLinkMedtronicService getMedtronicService() { - return MedtronicUtil.medtronicService; + public RileyLinkMedtronicService getMedtronicService() { + return medtronicService; } - public static void setMedtronicService(RileyLinkMedtronicService medtronicService) { - MedtronicUtil.medtronicService = medtronicService; + public void setMedtronicService(RileyLinkMedtronicService medtronicService) { + this.medtronicService = medtronicService; } - public static MedtronicPumpStatus getPumpStatus() { - return MedtronicUtil.medtronicPumpStatus; + @Deprecated // TODO use singleton + public MedtronicPumpStatus getPumpStatus() { + return medtronicPumpStatus; + } + + @Deprecated // TODO use singleton + public void setPumpStatus(MedtronicPumpStatus medtronicPumpStatus) { + this.medtronicPumpStatus = medtronicPumpStatus; } - public static void setPumpStatus(MedtronicPumpStatus medtronicPumpStatus) { - MedtronicUtil.medtronicPumpStatus = medtronicPumpStatus; + public MedtronicCommandType getCurrentCommand() { + return this.currentCommand; } - public static MedtronicCommandType getCurrentCommand() { - return MedtronicUtil.currentCommand; - } - - - public static void setCurrentCommand(MedtronicCommandType currentCommand) { - MedtronicUtil.currentCommand = currentCommand; + public void setCurrentCommand(MedtronicCommandType currentCommand) { + this.currentCommand = currentCommand; if (currentCommand != null) - historyRileyLink.add(new RLHistoryItem(currentCommand)); + rileyLinkUtil.historyRileyLink.add(new RLHistoryItem(currentCommand)); } - public static int pageNumber; - public static Integer frameNumber; + public int pageNumber; + public Integer frameNumber; - public static void setCurrentCommand(MedtronicCommandType currentCommand, int pageNumber_, Integer frameNumber_) { + public void setCurrentCommand(MedtronicCommandType currentCommand, int pageNumber_, Integer frameNumber_) { pageNumber = pageNumber_; frameNumber = frameNumber_; - if (MedtronicUtil.currentCommand != currentCommand) { + if (this.currentCommand != currentCommand) { setCurrentCommand(currentCommand); } - RxBus.Companion.getINSTANCE().send(new EventMedtronicDeviceStatusChange(pumpDeviceState)); + rxBus.send(new EventMedtronicDeviceStatusChange(pumpDeviceState)); } - public static boolean isSame(Double d1, Double d2) { + public boolean isSame(Double d1, Double d2) { double diff = d1 - d2; return (Math.abs(diff) <= 0.000001); } - public static Map getSettings() { + public Map getSettings() { return settings; } - public static void setSettings(Map settings) { - MedtronicUtil.settings = settings; + public void setSettings(Map settings) { + this.settings = settings; } - public static void setPumpTime(ClockDTO pumpTime) { - MedtronicUtil.pumpTime = pumpTime; + public void setPumpTime(ClockDTO pumpTime) { + this.pumpTime = pumpTime; } - public static ClockDTO getPumpTime() { - return MedtronicUtil.pumpTime; + public ClockDTO getPumpTime() { + return this.pumpTime; } - public static void setBatteryType(BatteryType batteryType) { - MedtronicUtil.batteryType = batteryType; + public void setBatteryType(BatteryType batteryType) { + this.batteryType = batteryType; } - public static BatteryType getBatteryType() { - return MedtronicUtil.batteryType; + public BatteryType getBatteryType() { + return this.batteryType; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentService.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentService.java index a6207e595b..af9aa31ac4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentService.java @@ -265,9 +265,9 @@ public class TreatmentService extends OrmLiteBaseService { if (treatment != null) { if (MedtronicHistoryData.doubleBolusDebug) - log.debug("DoubleBolusDebug: createTreatmentFromJsonIfNotExists:: medtronicPump={}", MedtronicUtil.isMedtronicPump()); + log.debug("DoubleBolusDebug: createTreatmentFromJsonIfNotExists:: medtronicPump={}", MedtronicUtil.getInstance().isMedtronicPump()); - if (!MedtronicUtil.isMedtronicPump()) + if (!MedtronicUtil.getInstance().isMedtronicPump()) createOrUpdate(treatment); else createOrUpdateMedtronic(treatment, true); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPlugin.java index c91e06a4a0..0bac0d9724 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPlugin.java @@ -8,6 +8,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.firebase.analytics.FirebaseAnalytics; +import com.google.gson.GsonBuilder; import org.jetbrains.annotations.NotNull; @@ -56,7 +57,6 @@ import info.nightscout.androidaps.plugins.general.overview.notifications.Notific import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensResult; import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin; import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData; -import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.FabricPrivacy; import info.nightscout.androidaps.utils.T; @@ -300,13 +300,13 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface long time = System.currentTimeMillis(); synchronized (treatments) { - getAapsLogger().debug(MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: AllTreatmentsInDb: " + MedtronicUtil.getGsonInstanceCore().toJson(treatments)); + getAapsLogger().debug(MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: AllTreatmentsInDb: " + new GsonBuilder().create().toJson(treatments)); for (Treatment t : treatments) { if (t.date <= time && t.date >= fromTimestamp) in5minback.add(t); } - getAapsLogger().debug(MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: FilteredTreatments: AfterTime={}, Items={} " + fromTimestamp + " " + MedtronicUtil.getGsonInstanceCore().toJson(in5minback)); + getAapsLogger().debug(MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: FilteredTreatments: AfterTime={}, Items={} " + fromTimestamp + " " + new GsonBuilder().create().toJson(in5minback)); return in5minback; } } @@ -452,7 +452,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface TemporaryBasal runningTBR = getTempBasalFromHistory(i); double running = basal; if (runningTBR != null) { - running = runningTBR.tempBasalConvertedToAbsolute(i, profile); + running = runningTBR.tempBasalConvertedToAbsolute(i, profile); } Treatment treatment = new Treatment(getInjector()); treatment.date = i; diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/TimeDateOrTZChangeReceiver.kt b/app/src/main/java/info/nightscout/androidaps/receivers/TimeDateOrTZChangeReceiver.kt index 46cf58d99f..916239ae82 100644 --- a/app/src/main/java/info/nightscout/androidaps/receivers/TimeDateOrTZChangeReceiver.kt +++ b/app/src/main/java/info/nightscout/androidaps/receivers/TimeDateOrTZChangeReceiver.kt @@ -15,13 +15,12 @@ import javax.inject.Inject class TimeDateOrTZChangeReceiver : DaggerBroadcastReceiver() { @Inject lateinit var aapsLogger: AAPSLogger @Inject lateinit var activePlugin: ActivePluginProvider - var gson: Gson + val gson: Gson = Gson() private var isDST = false init { isDST = calculateDST() - gson = Gson() } private fun calculateDST(): Boolean { @@ -38,10 +37,6 @@ class TimeDateOrTZChangeReceiver : DaggerBroadcastReceiver() { super.onReceive(context, intent) val action = intent.action val activePump: PumpInterface = activePlugin.activePump - if (activePump == null) { - aapsLogger.debug(LTag.PUMP,"TimeDateOrTZChangeReceiver::Time and/or TimeZone changed. [action={}]. Pump is null, exiting.", action) - return - } aapsLogger.debug(LTag.PUMP,"TimeDateOrTZChangeReceiver::Date, Time and/or TimeZone changed. [action={}]", action) aapsLogger.debug(LTag.PUMP,"TimeDateOrTZChangeReceiver::Intent::{}", gson.toJson(intent)) diff --git a/app/src/main/res/layout/rileylink_status_general.xml b/app/src/main/res/layout/rileylink_status_general.xml index e1a841b301..42f5cd5abb 100644 --- a/app/src/main/res/layout/rileylink_status_general.xml +++ b/app/src/main/res/layout/rileylink_status_general.xml @@ -2,7 +2,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusGeneral"> + tools:context=".plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusGeneralFragment"> + tools:context=".plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusHistoryFragment">