diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt
index 67b80ed0b4..9d90abe3fc 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt
@@ -25,6 +25,7 @@ import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler
+import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.skins.SkinProvider
import info.nightscout.androidaps.utils.FabricPrivacy
@@ -254,7 +255,7 @@ class ActionsFragment : DaggerFragment() {
val activeBgSource = activePlugin.activeBgSource
actions_historybrowser.visibility = (profile != null).toVisibility()
actions_fill?.visibility = (pump.pumpDescription.isRefillingCapable && pump.isInitialized && !pump.isSuspended).toVisibility()
- actions_pumpbatterychange?.visibility = pump.pumpDescription.isBatteryReplaceable.toVisibility()
+ actions_pumpbatterychange?.visibility = (pump.pumpDescription.isBatteryReplaceable || (pump is OmnipodPumpPlugin && pump.isUseRileyLinkBatteryLevel && pump.isBatteryChangeLoggingEnabled)).toVisibility()
actions_temptarget?.visibility = (profile != null && config.APS).toVisibility()
actions_tddstats?.visibility = pump.pumpDescription.supportsTDDs.toVisibility()
diff --git a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
index a451ddff6c..b962bedb9b 100644
--- a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
@@ -48,7 +48,6 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.common.ManufacturerType;
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction;
import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
-import info.nightscout.androidaps.queue.commands.CustomCommand;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
import info.nightscout.androidaps.plugins.pump.common.PumpPluginAbstract;
@@ -86,6 +85,7 @@ import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPu
import info.nightscout.androidaps.plugins.pump.medtronic.service.RileyLinkMedtronicService;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
+import info.nightscout.androidaps.queue.commands.CustomCommand;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.TimeChangeType;
@@ -327,11 +327,10 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
}
@Override public RileyLinkPumpInfo getPumpInfo() {
- String pumpDescription = pumpType.getDescription();
String frequency = resourceHelper.gs(medtronicPumpStatus.pumpFrequency.equals("medtronic_pump_frequency_us_ca") ? R.string.medtronic_pump_frequency_us_ca : R.string.medtronic_pump_frequency_worldwide);
String model = medtronicPumpStatus.medtronicDeviceType == null ? "???" : "Medtronic " + medtronicPumpStatus.medtronicDeviceType.getPumpModel();
String serialNumber = medtronicPumpStatus.serialNumber;
- return new RileyLinkPumpInfo(pumpDescription, frequency, model, serialNumber);
+ return new RileyLinkPumpInfo(frequency, model, serialNumber);
}
@Override public long getLastConnectionTimeMillis() {
diff --git a/medtronic/src/main/res/values/strings.xml b/medtronic/src/main/res/values/strings.xml
index 065bc6c735..12c1900a27 100644
--- a/medtronic/src/main/res/values/strings.xml
+++ b/medtronic/src/main/res/values/strings.xml
@@ -15,7 +15,6 @@
pref_medtronic_encoding
pref_medtronic_battery_type
pref_medtronic_bolus_debug
- pref_rileylink_mac_address
medtronic_pump_frequency_us_ca
medtronic_pump_frequency_worldwide
medtronic_pump_encoding_4b6b_local
diff --git a/medtronic/src/main/res/xml/pref_medtronic.xml b/medtronic/src/main/res/xml/pref_medtronic.xml
index 78e20e8ef8..5006bf32b9 100644
--- a/medtronic/src/main/res/xml/pref_medtronic.xml
+++ b/medtronic/src/main/res/xml/pref_medtronic.xml
@@ -98,6 +98,12 @@
+
+
{
- private Integer batteryLevel;
// This empty constructor must be kept, otherwise dagger injection might break!
@Inject
@@ -86,18 +83,7 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
}
@Override protected OmnipodPacket sendAndListen(OmnipodPacket msg, int timeout_ms, int repeatCount, int retryCount, Integer extendPreamble_ms) throws RileyLinkCommunicationException {
- OmnipodPacket response = super.sendAndListen(msg, timeout_ms, repeatCount, retryCount, extendPreamble_ms);
-
- PumpInterface activePump = activePluginProvider.getActivePump();
- if (activePump instanceof OmnipodPumpPlugin && ((OmnipodPumpPlugin) activePump).isUseRileyLinkBatteryLevel()) {
- updateBatteryLevel();
- }
-
- return response;
- }
-
- public Integer getBatteryLevel() {
- return batteryLevel;
+ return super.sendAndListen(msg, timeout_ms, repeatCount, retryCount, extendPreamble_ms);
}
public T sendCommand(Class responseClass, PodStateManager podStateManager, MessageBlock command) {
@@ -402,8 +388,4 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
throw new RileyLinkUnreachableException();
}
-
- private void updateBatteryLevel() {
- batteryLevel = rfspy.getBatteryLevel();
- }
}
diff --git a/omnipod/src/main/res/values/strings.xml b/omnipod/src/main/res/values/strings.xml
index 6a141672ab..62440af057 100644
--- a/omnipod/src/main/res/values/strings.xml
+++ b/omnipod/src/main/res/values/strings.xml
@@ -11,7 +11,7 @@
AAPS.Omnipod.suspend_delivery_button_enabled
AAPS.Omnipod.pulse_log_button_enabled
AAPS.Omnipod.rileylink_stats_button_enabled
- AAPS.Omnipod.use_riley_link_battery_level
+ AAPS.Omnipod.enable_battery_change_logging
AAPS.Omnipod.time_change_enabled
AAPS.Omnipod.expiration_reminder_enabled
AAPS.Omnipod.expiration_reminder_hours_before_shutdown
@@ -45,8 +45,7 @@
Show Suspend Delivery button in Omnipod tab
Show Pulse Log button in Pod Management menu
Show RileyLink Stats button in Pod Management menu
- Use battery level reported by OrangeLink/EmaLink
- DOES NOT work with the original RileyLink. May not work with other RileyLink alternatives.
+ Enable battery change logging in Actions
DST/Time zone detection enabled
Expiration reminder enabled
Hours before shutdown
diff --git a/omnipod/src/main/res/xml/pref_omnipod.xml b/omnipod/src/main/res/xml/pref_omnipod.xml
index 853d5eda9e..a56ea0ce0b 100644
--- a/omnipod/src/main/res/xml/pref_omnipod.xml
+++ b/omnipod/src/main/res/xml/pref_omnipod.xml
@@ -11,6 +11,18 @@
+
+
+
+
@@ -114,12 +126,6 @@
android:key="@string/key_omnipod_riley_link_stats_button_enabled"
android:title="@string/omnipod_config_rileylink_stats_button_enabled" />
-
-
= nextBatteryCheck) {
+ updateBatteryLevel();
+ }
+
+ return rfSpyResponse;
}
+ private void updateBatteryLevel() {
+ rileyLinkServiceData.batteryLevel = retrieveBatteryLevel();
+ nextBatteryCheck = System.currentTimeMillis() +
+ (Optional.ofNullable(rileyLinkServiceData.batteryLevel).orElse(0) <= LOW_BATTERY_PERCENTAGE_THRESHOLD ? LOW_BATTERY_BATTERY_CHECK_INTERVAL_MILLIS : DEFAULT_BATTERY_CHECK_INTERVAL_MILLIS);
+
+ // The Omnipod plugin reports the RL battery as the pump battery (as the Omnipod battery level is unknown)
+ // So update overview when the battery level has been updated
+ rxBus.send(new EventRefreshOverview("RL battery level updated", false));
+ }
private RFSpyResponse updateRegister(CC111XRegister reg, int val) {
- RFSpyResponse resp = writeToData(new UpdateRegister(reg, (byte) val), EXPECTED_MAX_BLUETOOTH_LATENCY_MS);
- return resp;
+ return writeToData(new UpdateRegister(reg, (byte) val), EXPECTED_MAX_BLUETOOTH_LATENCY_MS);
}
-
public void setBaseFrequency(double freqMHz) {
int value = (int) (freqMHz * 1000000 / ((double) (RILEYLINK_FREQ_XTAL) / Math.pow(2.0, 16.0)));
updateRegister(CC111XRegister.freq0, (byte) (value & 0xff));
@@ -316,69 +293,56 @@ public class RFSpy {
configureRadioForRegion(rileyLinkServiceData.rileyLinkTargetFrequency);
}
-
private void configureRadioForRegion(RileyLinkTargetFrequency frequency) {
-
// we update registers only on first run, or if region changed
aapsLogger.error(LTag.PUMPBTCOMM, "RileyLinkTargetFrequency: " + frequency);
switch (frequency) {
- case Medtronic_WorldWide: {
- // updateRegister(CC111X_MDMCFG4, (byte) 0x59);
+ case Medtronic_WorldWide:
setRXFilterMode(RXFilterMode.Wide);
- // updateRegister(CC111X_MDMCFG3, (byte) 0x66);
- // updateRegister(CC111X_MDMCFG2, (byte) 0x33);
updateRegister(CC111XRegister.mdmcfg1, 0x62);
updateRegister(CC111XRegister.mdmcfg0, 0x1A);
updateRegister(CC111XRegister.deviatn, 0x13);
setMedtronicEncoding();
- }
- break;
+ break;
- case Medtronic_US: {
- // updateRegister(CC111X_MDMCFG4, (byte) 0x99);
+ case Medtronic_US:
setRXFilterMode(RXFilterMode.Narrow);
- // updateRegister(CC111X_MDMCFG3, (byte) 0x66);
- // updateRegister(CC111X_MDMCFG2, (byte) 0x33);
updateRegister(CC111XRegister.mdmcfg1, 0x61);
updateRegister(CC111XRegister.mdmcfg0, 0x7E);
updateRegister(CC111XRegister.deviatn, 0x15);
setMedtronicEncoding();
- }
- break;
+ break;
- case Omnipod: {
- RFSpyResponse r = null;
+ case Omnipod:
// RL initialization for Omnipod is a copy/paste from OmniKit implementation.
// Last commit from original repository: 5c3beb4144
// so if something is terribly wrong, please check git diff PodCommsSession.swift since that commit
- r = updateRegister(CC111XRegister.pktctrl1, 0x20);
- r = updateRegister(CC111XRegister.agcctrl0, 0x00);
- r = updateRegister(CC111XRegister.fsctrl1, 0x06);
- r = updateRegister(CC111XRegister.mdmcfg4, 0xCA);
- r = updateRegister(CC111XRegister.mdmcfg3, 0xBC);
- r = updateRegister(CC111XRegister.mdmcfg2, 0x06);
- r = updateRegister(CC111XRegister.mdmcfg1, 0x70);
- r = updateRegister(CC111XRegister.mdmcfg0, 0x11);
- r = updateRegister(CC111XRegister.deviatn, 0x44);
- r = updateRegister(CC111XRegister.mcsm0, 0x18);
- r = updateRegister(CC111XRegister.foccfg, 0x17);
- r = updateRegister(CC111XRegister.fscal3, 0xE9);
- r = updateRegister(CC111XRegister.fscal2, 0x2A);
- r = updateRegister(CC111XRegister.fscal1, 0x00);
- r = updateRegister(CC111XRegister.fscal0, 0x1F);
+ updateRegister(CC111XRegister.pktctrl1, 0x20);
+ updateRegister(CC111XRegister.agcctrl0, 0x00);
+ updateRegister(CC111XRegister.fsctrl1, 0x06);
+ updateRegister(CC111XRegister.mdmcfg4, 0xCA);
+ updateRegister(CC111XRegister.mdmcfg3, 0xBC);
+ updateRegister(CC111XRegister.mdmcfg2, 0x06);
+ updateRegister(CC111XRegister.mdmcfg1, 0x70);
+ updateRegister(CC111XRegister.mdmcfg0, 0x11);
+ updateRegister(CC111XRegister.deviatn, 0x44);
+ updateRegister(CC111XRegister.mcsm0, 0x18);
+ updateRegister(CC111XRegister.foccfg, 0x17);
+ updateRegister(CC111XRegister.fscal3, 0xE9);
+ updateRegister(CC111XRegister.fscal2, 0x2A);
+ updateRegister(CC111XRegister.fscal1, 0x00);
+ updateRegister(CC111XRegister.fscal0, 0x1F);
- r = updateRegister(CC111XRegister.test1, 0x31);
- r = updateRegister(CC111XRegister.test0, 0x09);
- r = updateRegister(CC111XRegister.paTable0, 0x84);
- r = updateRegister(CC111XRegister.sync1, 0xA5);
- r = updateRegister(CC111XRegister.sync0, 0x5A);
+ updateRegister(CC111XRegister.test1, 0x31);
+ updateRegister(CC111XRegister.test0, 0x09);
+ updateRegister(CC111XRegister.paTable0, 0x84);
+ updateRegister(CC111XRegister.sync1, 0xA5);
+ updateRegister(CC111XRegister.sync0, 0x5A);
- r = setRileyLinkEncoding(RileyLinkEncodingType.Manchester);
- r = setPreamble(0x6665);
-
- }
- break;
+ setRileyLinkEncoding(RileyLinkEncodingType.Manchester);
+ setPreamble(0x6665);
+ break;
default:
aapsLogger.warn(LTag.PUMPBTCOMM, "No region configuration for RfSpy and {}", frequency.name());
break;
@@ -386,7 +350,6 @@ public class RFSpy {
}
}
-
private void setMedtronicEncoding() {
RileyLinkEncodingType encoding = RileyLinkEncodingType.FourByteSixByteLocal;
@@ -403,7 +366,6 @@ public class RFSpy {
aapsLogger.debug(LTag.PUMPBTCOMM, "Set Encoding for Medtronic: " + encoding.name());
}
-
private RFSpyResponse setPreamble(int preamble) {
RFSpyResponse resp = null;
try {
@@ -414,7 +376,6 @@ public class RFSpy {
return resp;
}
-
public RFSpyResponse setRileyLinkEncoding(RileyLinkEncodingType encoding) {
RFSpyResponse resp = writeToData(new SetHardwareEncoding(encoding), EXPECTED_MAX_BLUETOOTH_LATENCY_MS);
@@ -426,9 +387,7 @@ public class RFSpy {
return resp;
}
-
private void setRXFilterMode(RXFilterMode mode) {
-
byte drate_e = (byte) 0x9; // exponent of symbol rate (16kbps)
byte chanbw = mode.value;
@@ -442,9 +401,4 @@ public class RFSpy {
if (this.currentFrequencyMHz != null)
this.setBaseFrequency(this.currentFrequencyMHz);
}
-
-
- public void stopReader() {
- reader.stop();
- }
}
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java
index a8a782e3c5..df7ed3dde4 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java
@@ -1,9 +1,9 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command;
-import java.nio.ByteBuffer;
-
import org.apache.commons.lang3.NotImplementedException;
+import java.nio.ByteBuffer;
+
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java
index 94ae52f788..be46985459 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java
@@ -1,10 +1,10 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding;
+import org.slf4j.Logger;
+
import java.util.HashMap;
import java.util.Map;
-import org.slf4j.Logger;
-
import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkBLEError;
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java
index 8dfaf16b0f..ff609d2750 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java
@@ -1,12 +1,12 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding;
+import org.slf4j.Logger;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.slf4j.Logger;
-
import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java
index 55c2ce9539..663ed099e5 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java
@@ -3,7 +3,6 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs;
import java.util.HashMap;
import java.util.Map;
-
import info.nightscout.androidaps.plugins.pump.common.R;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java
index 81fe52f890..2106a6131e 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java
@@ -1,10 +1,10 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.operations;
+import android.bluetooth.BluetoothGatt;
+
import java.util.UUID;
import java.util.concurrent.Semaphore;
-import android.bluetooth.BluetoothGatt;
-
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkBLE;
/**
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpInfo.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpInfo.java
index 9759a9adc7..034b9ae283 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpInfo.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpInfo.java
@@ -1,13 +1,11 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs;
public class RileyLinkPumpInfo {
- private final String connectedDeviceModel;
- private final String pumpDescription;
- private final String connectedDeviceSerialNumber;
private final String pumpFrequency;
+ private final String connectedDeviceModel;
+ private final String connectedDeviceSerialNumber;
- public RileyLinkPumpInfo(String pumpDescription, String pumpFrequency, String connectedDeviceModel, String connectedDeviceSerialNumber) {
- this.pumpDescription = pumpDescription;
+ public RileyLinkPumpInfo(String pumpFrequency, String connectedDeviceModel, String connectedDeviceSerialNumber) {
this.pumpFrequency = pumpFrequency;
this.connectedDeviceModel = connectedDeviceModel;
this.connectedDeviceSerialNumber = connectedDeviceSerialNumber;
@@ -17,10 +15,6 @@ public class RileyLinkPumpInfo {
return connectedDeviceModel;
}
- public String getPumpDescription() {
- return pumpDescription;
- }
-
public String getConnectedDeviceSerialNumber() {
return connectedDeviceSerialNumber;
}
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java
index d1e999b2fb..1e560d0801 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java
@@ -9,8 +9,7 @@ import info.nightscout.androidaps.plugins.pump.common.R;
public enum RileyLinkTargetDevice {
MedtronicPump(R.string.rileylink_target_device_medtronic, true), //
- Omnipod(R.string.rileylink_target_device_omnipod, false), //
- ;
+ Omnipod(R.string.rileylink_target_device_omnipod, false);
private final int resourceId;
private final boolean tuneUpEnabled;
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java
index 5d45d7d1fa..3faff82981 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java
@@ -1,11 +1,6 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
import android.os.Bundle;
-import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -14,6 +9,11 @@ import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
+import androidx.fragment.app.Fragment;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
import info.nightscout.androidaps.plugins.pump.common.R;
import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface;
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java
index 947c30a1a9..cfafc835e7 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java
@@ -6,10 +6,9 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-import org.apache.commons.lang3.StringUtils;
import org.joda.time.LocalDateTime;
-import java.util.Locale;
+import java.util.Optional;
import javax.inject.Inject;
@@ -18,6 +17,7 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.plugins.pump.common.R;
import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface;
+import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpInfo;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice;
@@ -25,6 +25,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
/**
* Created by andy on 5/19/18.
@@ -39,14 +40,18 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re
@Inject AAPSLogger aapsLogger;
@Inject RileyLinkServiceData rileyLinkServiceData;
@Inject DateUtil dateUtil;
+ @Inject SP sp;
private TextView connectionStatus;
private TextView configuredRileyLinkAddress;
private TextView configuredRileyLinkName;
- private TextView connectedDevice;
+ private View batteryLevelRow;
+ private TextView batteryLevel;
private TextView connectionError;
+ private View connectedDeviceDetails;
private TextView deviceType;
- private TextView deviceModel;
+ private TextView configuredDeviceModel;
+ private TextView connectedDeviceModel;
private TextView serialNumber;
private TextView pumpFrequency;
private TextView lastUsedFrequency;
@@ -59,16 +64,19 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re
}
@Override
- public void onStart() {
- super.onStart();
+ public void onResume() {
+ super.onResume();
this.connectionStatus = getActivity().findViewById(R.id.rls_t1_connection_status);
this.configuredRileyLinkAddress = getActivity().findViewById(R.id.rls_t1_configured_riley_link_address);
this.configuredRileyLinkName = getActivity().findViewById(R.id.rls_t1_configured_riley_link_name);
- this.connectedDevice = getActivity().findViewById(R.id.rls_t1_connected_device);
+ this.batteryLevelRow = getActivity().findViewById(R.id.rls_t1_battery_level_row);
+ this.batteryLevel = getActivity().findViewById(R.id.rls_t1_battery_level);
this.connectionError = getActivity().findViewById(R.id.rls_t1_connection_error);
+ this.connectedDeviceDetails = getActivity().findViewById(R.id.rls_t1_connected_device_details);
this.deviceType = getActivity().findViewById(R.id.rls_t1_device_type);
- this.deviceModel = getActivity().findViewById(R.id.rls_t1_device_model);
+ this.configuredDeviceModel = getActivity().findViewById(R.id.rls_t1_configured_device_model);
+ this.connectedDeviceModel = getActivity().findViewById(R.id.rls_t1_connected_device_model);
this.serialNumber = getActivity().findViewById(R.id.rls_t1_serial_number);
this.pumpFrequency = getActivity().findViewById(R.id.rls_t1_pump_frequency);
this.lastUsedFrequency = getActivity().findViewById(R.id.rls_t1_last_used_frequency);
@@ -85,34 +93,42 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re
// BS FIXME rileyLinkServiceData is injected so I suppose it cannot be null?
if (rileyLinkServiceData != null) {
- this.configuredRileyLinkAddress.setText(StringUtils.isEmpty(rileyLinkServiceData.rileyLinkAddress) ? PLACEHOLDER : rileyLinkServiceData.rileyLinkAddress);
- this.configuredRileyLinkName.setText(StringUtils.isEmpty(rileyLinkServiceData.rileyLinkName) ? PLACEHOLDER : rileyLinkServiceData.rileyLinkName);
- this.connectionError.setText(rileyLinkServiceData.rileyLinkError == null ? //
- PLACEHOLDER
- : resourceHelper.gs(rileyLinkServiceData.rileyLinkError.getResourceId(targetDevice)));
+ this.configuredRileyLinkAddress.setText(Optional.ofNullable(rileyLinkServiceData.rileyLinkAddress).orElse(PLACEHOLDER));
+ this.configuredRileyLinkName.setText(Optional.ofNullable(rileyLinkServiceData.rileyLinkName).orElse(PLACEHOLDER));
- if (firmwareVersion == null) {
- this.firmwareVersion.setText("BLE113: " + PLACEHOLDER + "\nCC110: " + PLACEHOLDER);
+ if (sp.getBoolean(resourceHelper.gs(R.string.key_riley_link_show_battery_level), false)) {
+ batteryLevelRow.setVisibility(View.VISIBLE);
+ Integer batteryLevel = rileyLinkServiceData.batteryLevel;
+ this.batteryLevel.setText(batteryLevel == null ? PLACEHOLDER : resourceHelper.gs(R.string.rileylink_battery_level_value, batteryLevel));
} else {
- this.firmwareVersion.setText("BLE113: " + rileyLinkServiceData.versionBLE113 +
- "\nCC110: " + rileyLinkServiceData.versionCC110);
+ batteryLevelRow.setVisibility(View.GONE);
}
+
+ RileyLinkError rileyLinkError = rileyLinkServiceData.rileyLinkError;
+ this.connectionError.setText(rileyLinkError == null ? PLACEHOLDER : resourceHelper.gs(rileyLinkError.getResourceId(targetDevice)));
+
+ this.firmwareVersion.setText(resourceHelper.gs(R.string.rileylink_firmware_version_value,
+ Optional.ofNullable(rileyLinkServiceData.versionBLE113).orElse(PLACEHOLDER), Optional.ofNullable(rileyLinkServiceData.versionCC110).orElse(PLACEHOLDER)));
}
- RileyLinkPumpDevice pumpPlugin = (RileyLinkPumpDevice) activePlugin.getActivePump();
- RileyLinkPumpInfo pumpInfo = pumpPlugin.getPumpInfo();
- this.deviceType.setText(rileyLinkServiceData.targetDevice.getResourceId());
- this.deviceModel.setText(pumpInfo.getPumpDescription());
- this.serialNumber.setText(pumpInfo.getConnectedDeviceSerialNumber());
- this.pumpFrequency.setText(pumpInfo.getPumpFrequency());
- this.connectedDevice.setText(pumpInfo.getConnectedDeviceModel());
+ RileyLinkPumpDevice rileyLinkPumpDevice = (RileyLinkPumpDevice) activePlugin.getActivePump();
+ RileyLinkPumpInfo rileyLinkPumpInfo = rileyLinkPumpDevice.getPumpInfo();
+ this.deviceType.setText(targetDevice.getResourceId());
+ if (targetDevice == RileyLinkTargetDevice.MedtronicPump) {
+ this.connectedDeviceDetails.setVisibility(View.VISIBLE);
+ this.configuredDeviceModel.setText(activePlugin.getActivePump().getPumpDescription().pumpType.getDescription());
+ this.connectedDeviceModel.setText(rileyLinkPumpInfo.getConnectedDeviceModel());
+ } else {
+ this.connectedDeviceDetails.setVisibility(View.GONE);
+ }
+ this.serialNumber.setText(rileyLinkPumpInfo.getConnectedDeviceSerialNumber());
+ this.pumpFrequency.setText(rileyLinkPumpInfo.getPumpFrequency());
if (rileyLinkServiceData.lastGoodFrequency != null) {
- this.lastUsedFrequency.setText(String.format(Locale.ENGLISH, "%.2f MHz",
- rileyLinkServiceData.lastGoodFrequency));
+ this.lastUsedFrequency.setText(resourceHelper.gs(R.string.rileylink_pump_frequency_value, rileyLinkServiceData.lastGoodFrequency));
}
- long lastConnectionTimeMillis = pumpPlugin.getLastConnectionTimeMillis();
+ long lastConnectionTimeMillis = rileyLinkPumpDevice.getLastConnectionTimeMillis();
if (lastConnectionTimeMillis == 0) {
this.lastDeviceContact.setText(resourceHelper.gs(R.string.riley_link_ble_config_connected_never));
} else {
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java
index 4d9eb8a4e1..a59cfbfb78 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java
@@ -18,13 +18,11 @@ import java.util.List;
import javax.inject.Inject;
import dagger.android.support.DaggerFragment;
-
import info.nightscout.androidaps.plugins.pump.common.R;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem;
-
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java
index ed48733680..e7f38d0a58 100644
--- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java
@@ -20,6 +20,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin
* Created by andy on 16/05/2018.
*/
+// FIXME encapsulation
@Singleton
public class RileyLinkServiceData {
@@ -36,6 +37,7 @@ public class RileyLinkServiceData {
public RileyLinkTargetFrequency rileyLinkTargetFrequency;
public String rileyLinkAddress;
public String rileyLinkName;
+ public Integer batteryLevel;
long lastTuneUpTime = 0L;
public Double lastGoodFrequency;
@@ -76,7 +78,6 @@ public class RileyLinkServiceData {
}
private synchronized RileyLinkServiceState workWithServiceState(RileyLinkServiceState newState, RileyLinkError errorCode, boolean set) {
-
if (set) {
rileyLinkServiceState = newState;
lastServiceStateChange = System.currentTimeMillis();
@@ -90,7 +91,6 @@ public class RileyLinkServiceData {
} else {
return rileyLinkServiceState;
}
-
}
}
diff --git a/rileylink/src/main/res/layout/rileylink_status_general.xml b/rileylink/src/main/res/layout/rileylink_status_general.xml
index befef08f4c..ca60ec1ced 100644
--- a/rileylink/src/main/res/layout/rileylink_status_general.xml
+++ b/rileylink/src/main/res/layout/rileylink_status_general.xml
@@ -42,7 +42,7 @@
android:layout_marginLeft="30dp"
android:layout_weight="35"
android:gravity="center_vertical"
- android:text="@string/rileylink_configured_riley_link_address" />
+ android:text="@string/rileylink_address" />
+ android:text="@string/rileylink_name" />
+ android:orientation="horizontal"
+ android:visibility="gone">
+ android:text="@string/rileylink_battery_level" />
-
+ android:orientation="vertical"
+ android:visibility="gone">
-
+ android:orientation="horizontal">
-
+
+
+
+
+
+ android:orientation="horizontal">
+
+
+
+
+
+
-
medtronic_pump_encoding_4b6b_rileylink
pref_rileylink_mac_address
pref_rileylink_name
+ pref_riley_link_show_reported_battery_level
pref_medtronic_encoding
@@ -30,19 +31,23 @@
Pump Status
RileyLink Settings
RileyLink
- Configured RileyLink Address:
- Configured RileyLink Name:
- Connected Device:
+ Address:
+ Name:
+ Battery Level:
+ %1$d%%
Connection Status:
Connection Error:
Device
Device Type:
- Device Model:
+ Configured Device Model:
+ Connected Device Model:
Last Used Frequency:
Last Device Contact:
Firmware Version:
+ BLE113: %1$s\nCC110: %2$s
Pump Serial Number:
Pump Frequency:
+ %1$.2f MHz
Bluetooth Initializing…
@@ -67,10 +72,14 @@
Medtronic Pump
- Omnipod
+ Omnipod (Eros)
Yes
No
+
+ Show battery level reported by OrangeLink/EmaLink
+ DOES NOT work with the original RileyLink. May not work with other RileyLink alternatives.
+
- %1$d day
- %1$d days