Merge pull request #156 from AAPS-Omnipod/show-total-dose-in-fragment
Show total dose in fragment
This commit is contained in:
commit
f94c73a911
7 changed files with 74 additions and 1 deletions
|
@ -248,6 +248,7 @@ class OmnipodFragment : DaggerFragment() {
|
|||
omnipod_pod_firmware_version.text = "-"
|
||||
omnipod_pod_expiry.text = "-"
|
||||
omnipod_basabasalrate.text = "-"
|
||||
omnipod_total_delivered.text = "-"
|
||||
omnipod_reservoir.text = "-"
|
||||
omnipod_tempbasal.text = "-"
|
||||
omnipod_lastbolus.text = "-"
|
||||
|
@ -279,6 +280,13 @@ class OmnipodFragment : DaggerFragment() {
|
|||
omnipod_tempbasal.text = activePlugin.activeTreatments
|
||||
.getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull() ?: "-"
|
||||
|
||||
// total delivered
|
||||
omnipod_total_delivered.text = if (podStateManager.isPodActivationCompleted) {
|
||||
resourceHelper.gs(R.string.omnipod_total_delivered, podStateManager.totalInsulinDelivered - OmnipodConst.POD_SETUP_UNITS);
|
||||
} else {
|
||||
"-"
|
||||
}
|
||||
|
||||
// reservoir
|
||||
if (podStateManager.reservoirLevel == null) {
|
||||
omnipod_reservoir.text = resourceHelper.gs(R.string.omnipod_reservoir_over50)
|
||||
|
|
|
@ -20,6 +20,7 @@ public class StatusResponse extends MessageBlock {
|
|||
private final PodProgressStatus podProgressStatus;
|
||||
private final Duration timeActive;
|
||||
private final Double reservoirLevel;
|
||||
private final int ticksDelivered;
|
||||
private final double insulinDelivered;
|
||||
private final double insulinNotDelivered;
|
||||
private final byte podMessageCounter;
|
||||
|
@ -40,7 +41,8 @@ public class StatusResponse extends MessageBlock {
|
|||
int highInsulinBits = (encodedData[2] & 0xF) << 9;
|
||||
int middleInsulinBits = ByteUtil.convertUnsignedByteToInt(encodedData[3]) << 1;
|
||||
int lowInsulinBits = ByteUtil.convertUnsignedByteToInt(encodedData[4]) >>> 7;
|
||||
insulinDelivered = OmnipodConst.POD_PULSE_SIZE * (highInsulinBits | middleInsulinBits | lowInsulinBits);
|
||||
ticksDelivered = (highInsulinBits | middleInsulinBits | lowInsulinBits);
|
||||
insulinDelivered = OmnipodConst.POD_PULSE_SIZE * ticksDelivered;
|
||||
podMessageCounter = (byte) ((encodedData[4] >>> 3) & 0xf);
|
||||
|
||||
insulinNotDelivered = OmnipodConst.POD_PULSE_SIZE * (((encodedData[4] & 0x03) << 8) | ByteUtil.convertUnsignedByteToInt(encodedData[5]));
|
||||
|
@ -75,6 +77,8 @@ public class StatusResponse extends MessageBlock {
|
|||
return reservoirLevel;
|
||||
}
|
||||
|
||||
public int getTicksDelivered() { return ticksDelivered; }
|
||||
|
||||
public double getInsulinDelivered() {
|
||||
return insulinDelivered;
|
||||
}
|
||||
|
|
|
@ -302,6 +302,8 @@ public abstract class PodStateManager {
|
|||
return getSafe(() -> podState.getReservoirLevel());
|
||||
}
|
||||
|
||||
public final Double getTotalInsulinDelivered() { return getSafe(() -> podState.getTotalInsulinDelivered()); }
|
||||
|
||||
public final Duration getScheduleOffset() {
|
||||
DateTime now = getTime();
|
||||
return new Duration(now.withTimeAtStartOfDay(), now);
|
||||
|
@ -373,6 +375,7 @@ public abstract class PodStateManager {
|
|||
podState.setActiveAlerts(statusResponse.getAlerts());
|
||||
podState.setLastDeliveryStatus(statusResponse.getDeliveryStatus());
|
||||
podState.setReservoirLevel(statusResponse.getReservoirLevel());
|
||||
podState.setTotalTicksDelivered(statusResponse.getTicksDelivered());
|
||||
podState.setPodProgressStatus(statusResponse.getPodProgressStatus());
|
||||
podState.setLastUpdatedFromStatusResponse(DateTime.now());
|
||||
});
|
||||
|
@ -469,6 +472,7 @@ public abstract class PodStateManager {
|
|||
private DateTime expiresAt;
|
||||
private PodInfoFaultEvent faultEvent;
|
||||
private Double reservoirLevel;
|
||||
private Integer totalTicksDelivered;
|
||||
private boolean suspended;
|
||||
private NonceState nonceState;
|
||||
private PodProgressStatus podProgressStatus;
|
||||
|
@ -602,6 +606,20 @@ public abstract class PodStateManager {
|
|||
this.reservoirLevel = reservoirLevel;
|
||||
}
|
||||
|
||||
public Integer getTotalTicksDelivered() {
|
||||
return totalTicksDelivered;
|
||||
}
|
||||
|
||||
public Double getTotalInsulinDelivered() {
|
||||
if (totalTicksDelivered != null) {
|
||||
return totalTicksDelivered * OmnipodConst.POD_PULSE_SIZE;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
void setTotalTicksDelivered(Integer totalTicksDelivered) { this.totalTicksDelivered = totalTicksDelivered; }
|
||||
|
||||
public boolean isSuspended() {
|
||||
return suspended;
|
||||
}
|
||||
|
|
|
@ -53,4 +53,5 @@ public class OmnipodConst {
|
|||
|
||||
public static final double POD_PRIME_BOLUS_UNITS = 2.6;
|
||||
public static final double POD_CANNULA_INSERTION_BOLUS_UNITS = 0.5;
|
||||
public static final double POD_SETUP_UNITS = POD_PRIME_BOLUS_UNITS + POD_CANNULA_INSERTION_BOLUS_UNITS;
|
||||
}
|
||||
|
|
|
@ -517,6 +517,42 @@
|
|||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/omnipod_total_delivered_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingStart="2dp"
|
||||
android:paddingEnd="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/omnipod_total_delivered"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
<string name="omnipod_moments_ago">Moments ago</string>
|
||||
<string name="omnipod_pod_mgmt">Pod Mgmt</string>
|
||||
<string name="omnipod_pod_status">Pod Status</string>
|
||||
<string name="omnipod_total_delivered_label">Total Delivered</string>
|
||||
<string name="omnipod_total_delivered">%1$.2f U</string>
|
||||
<string name="omnipod_reservoir_left">%1$.2f U left</string>
|
||||
<string name="omnipod_reservoir_over50">Over 50 U</string>
|
||||
<string name="omnipod_pod_address">Pod Address</string>
|
||||
|
|
|
@ -45,6 +45,7 @@ public class StatusResponseTest {
|
|||
assertEquals(PodProgressStatus.ABOVE_FIFTY_UNITS, statusResponse.getPodProgressStatus());
|
||||
assertNull("Reservoir level should be null", statusResponse.getReservoirLevel());
|
||||
assertEquals(Duration.standardMinutes(1307).getMillis(), statusResponse.getTimeActive().getMillis());
|
||||
assertEquals(1201, statusResponse.getTicksDelivered());
|
||||
assertEquals(60.05, statusResponse.getInsulinDelivered(), 0.000001);
|
||||
assertEquals(15, statusResponse.getPodMessageCounter());
|
||||
assertEquals(0, statusResponse.getInsulinNotDelivered(), 0.000001);
|
||||
|
@ -62,6 +63,7 @@ public class StatusResponseTest {
|
|||
assertEquals(PodProgressStatus.FIFTY_OR_LESS_UNITS, statusResponse.getPodProgressStatus());
|
||||
assertEquals(24.4, statusResponse.getReservoirLevel(), 0.000001);
|
||||
assertEquals(Duration.standardMinutes(4261).getMillis(), statusResponse.getTimeActive().getMillis());
|
||||
assertEquals(3134, statusResponse.getTicksDelivered());
|
||||
assertEquals(156.7, statusResponse.getInsulinDelivered(), 0.000001);
|
||||
assertEquals(13, statusResponse.getPodMessageCounter());
|
||||
assertEquals(0, statusResponse.getInsulinNotDelivered(), 0.000001);
|
||||
|
@ -79,6 +81,7 @@ public class StatusResponseTest {
|
|||
assertEquals(Duration.standardMinutes(8191).getMillis(), statusResponse.getTimeActive().getMillis());
|
||||
assertEquals(OmnipodConst.POD_PULSE_SIZE * 1023, statusResponse.getInsulinNotDelivered(), 0.000001);
|
||||
assertNull("Reservoir level should be null", statusResponse.getReservoirLevel());
|
||||
assertEquals(8191, statusResponse.getTicksDelivered());
|
||||
assertEquals(OmnipodConst.POD_PULSE_SIZE * 8191, statusResponse.getInsulinDelivered(), 0.0000001);
|
||||
assertEquals(15, statusResponse.getPodMessageCounter());
|
||||
assertEquals(8, statusResponse.getAlerts().getAlertSlots().size());
|
||||
|
@ -94,6 +97,7 @@ public class StatusResponseTest {
|
|||
assertTrue(Duration.standardMinutes(3547).isEqual(statusResponse.getTimeActive()));
|
||||
assertEquals(DeliveryStatus.NORMAL, statusResponse.getDeliveryStatus());
|
||||
assertEquals(PodProgressStatus.FIFTY_OR_LESS_UNITS, statusResponse.getPodProgressStatus());
|
||||
assertEquals(2589, statusResponse.getTicksDelivered());
|
||||
assertEquals(129.45, statusResponse.getInsulinDelivered(), 0.00001);
|
||||
assertEquals(46.00, statusResponse.getReservoirLevel(), 0.00001);
|
||||
assertEquals(2.2, statusResponse.getInsulinNotDelivered(), 0.0001);
|
||||
|
|
Loading…
Reference in a new issue