Skip to content
Snippets Groups Projects
Commit 700e551f authored by Pogman's avatar Pogman
Browse files

Quick fix #2 for default log text colors. User defined cannula change threshold option.

parent ad88ff7f
No related tags found
No related merge requests found
...@@ -87,6 +87,7 @@ public class PumpHistorySender { ...@@ -87,6 +87,7 @@ public class PumpHistorySender {
.opt(SENDEROPT.MISC_CANNULA, dataStore.isNsEnableReservoirChange()) .opt(SENDEROPT.MISC_CANNULA, dataStore.isNsEnableReservoirChange())
.opt(SENDEROPT.MISC_INSULIN, dataStore.isNsEnableInsulinChange()) .opt(SENDEROPT.MISC_INSULIN, dataStore.isNsEnableInsulinChange())
.var(SENDEROPT.INSULIN_CLANGE_THRESHOLD, Integer.toString(dataStore.getNsInsulinChangeThreshold())) .var(SENDEROPT.INSULIN_CLANGE_THRESHOLD, Integer.toString(dataStore.getNsInsulinChangeThreshold()))
.var(SENDEROPT.CANNULA_CLANGE_THRESHOLD, Integer.toString(dataStore.getNsCannulaChangeThreshold()))
.opt(SENDEROPT.INSERT_BG_AS_CGM, dataStore.isNsEnableFingerBG() & dataStore.isNsEnableInsertBGasCGM()) .opt(SENDEROPT.INSERT_BG_AS_CGM, dataStore.isNsEnableFingerBG() & dataStore.isNsEnableInsertBGasCGM())
...@@ -127,6 +128,7 @@ public class PumpHistorySender { ...@@ -127,6 +128,7 @@ public class PumpHistorySender {
.opt(SENDEROPT.MISC_CANNULA, dataStore.isPushoverEnableConsumables() & dataStore.isNsEnableReservoirChange()) .opt(SENDEROPT.MISC_CANNULA, dataStore.isPushoverEnableConsumables() & dataStore.isNsEnableReservoirChange())
.opt(SENDEROPT.MISC_INSULIN, dataStore.isPushoverEnableConsumables() & dataStore.isNsEnableInsulinChange()) .opt(SENDEROPT.MISC_INSULIN, dataStore.isPushoverEnableConsumables() & dataStore.isNsEnableInsulinChange())
.var(SENDEROPT.INSULIN_CLANGE_THRESHOLD, Integer.toString(dataStore.getNsInsulinChangeThreshold())) .var(SENDEROPT.INSULIN_CLANGE_THRESHOLD, Integer.toString(dataStore.getNsInsulinChangeThreshold()))
.var(SENDEROPT.CANNULA_CLANGE_THRESHOLD, Integer.toString(dataStore.getNsCannulaChangeThreshold()))
.opt(SENDEROPT.ALARM_CLEARED, dataStore.isPushoverEnableCleared()) .opt(SENDEROPT.ALARM_CLEARED, dataStore.isPushoverEnableCleared())
.opt(SENDEROPT.ALARM_SILENCED, dataStore.isPushoverEnableSilenced()) .opt(SENDEROPT.ALARM_SILENCED, dataStore.isPushoverEnableSilenced())
...@@ -192,6 +194,7 @@ public class PumpHistorySender { ...@@ -192,6 +194,7 @@ public class PumpHistorySender {
CALIBRATION_INFO, CALIBRATION_INFO,
INSERT_BG_AS_CGM, INSERT_BG_AS_CGM,
INSULIN_CLANGE_THRESHOLD, INSULIN_CLANGE_THRESHOLD,
CANNULA_CLANGE_THRESHOLD,
PROFILE_OFFSET, PROFILE_OFFSET,
......
...@@ -49,7 +49,6 @@ public class UserLogAdapter ...@@ -49,7 +49,6 @@ public class UserLogAdapter
private IconicsDrawable iHEART; private IconicsDrawable iHEART;
private IconicsDrawable iSHARE; private IconicsDrawable iSHARE;
private int cDefault;
private int iBounds; private int iBounds;
private int iOffsetXDp; private int iOffsetXDp;
private int iOffsetYDp; private int iOffsetYDp;
...@@ -144,6 +143,7 @@ public class UserLogAdapter ...@@ -144,6 +143,7 @@ public class UserLogAdapter
case HISTORY: case HISTORY:
ssb.append(" * ").append(text); ssb.append(" * ").append(text);
ssb.setSpan(new ImageSpan(iREFRESH, DynamicDrawableSpan.ALIGN_BASELINE), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); ssb.setSpan(new ImageSpan(iREFRESH, DynamicDrawableSpan.ALIGN_BASELINE), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(new ForegroundColorSpan(cDEFAULT), 3, text.length() + 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
break; break;
case CGM: case CGM:
ssb.append(" * ").append(text); ssb.append(" * ").append(text);
......
...@@ -100,14 +100,19 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface ...@@ -100,14 +100,19 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface
notes = String.format("%s: %s", notes = String.format("%s: %s",
FormatKit.getInstance().getString(R.string.Pump), FormatKit.getInstance().getString(R.string.Pump),
FormatKit.getInstance().getString(R.string.new_sensor_started)); FormatKit.getInstance().getString(R.string.new_sensor_started));
} else if (RECORDTYPE.CHANGE_BATTERY.equals(recordtype) }
else if (RECORDTYPE.CHANGE_BATTERY.equals(recordtype)
&& pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_BATTERY)) { && pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_BATTERY)) {
type = "Pump Battery Change"; type = "Pump Battery Change";
notes = String.format("%s: %s", notes = String.format("%s: %s",
FormatKit.getInstance().getString(R.string.Pump), FormatKit.getInstance().getString(R.string.Pump),
FormatKit.getInstance().getString(R.string.battery_inserted)); FormatKit.getInstance().getString(R.string.battery_inserted));
} else if (RECORDTYPE.CHANGE_CANNULA.equals(recordtype) }
else if (RECORDTYPE.CHANGE_CANNULA.equals(recordtype)
&& pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_CANNULA)) { && pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_CANNULA)) {
double threshold = Double.parseDouble(pumpHistorySender.senderVar(senderID, PumpHistorySender.SENDEROPT.CANNULA_CLANGE_THRESHOLD, "0")) / 1000;
// only send a CAGE event when primed amount exceeds threshold
if (delivered < threshold) return nightscoutItems;
type = "Site Change"; type = "Site Change";
notes = String.format("%s: %s%s%s %s (%s)", notes = String.format("%s: %s%s%s %s (%s)",
FormatKit.getInstance().getString(R.string.Pump), FormatKit.getInstance().getString(R.string.Pump),
...@@ -116,10 +121,13 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface ...@@ -116,10 +121,13 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface
FormatKit.getInstance().getString(R.string.Prime), FormatKit.getInstance().getString(R.string.Prime),
FormatKit.getInstance().formatAsInsulin(delivered), FormatKit.getInstance().formatAsInsulin(delivered),
FormatKit.getInstance().formatAsInsulin(remaining)); FormatKit.getInstance().formatAsInsulin(remaining));
} else if (RECORDTYPE.CHANGE_INSULIN.equals(recordtype) }
else if (RECORDTYPE.CHANGE_INSULIN.equals(recordtype)
&& pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_INSULIN)) { && pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_INSULIN)) {
// only send a IAGE event when insulin reservoir in pump exceeds threshold // only send a IAGE event when insulin reservoir in pump exceeds threshold
int threshold = Integer.parseInt(pumpHistorySender.senderVar(senderID, PumpHistorySender.SENDEROPT.INSULIN_CLANGE_THRESHOLD, "0")); int threshold = Integer.parseInt(pumpHistorySender.senderVar(senderID, PumpHistorySender.SENDEROPT.INSULIN_CLANGE_THRESHOLD, "0"));
if (threshold == 1) threshold = 140; // 1.8ml Reservoir
else if (threshold == 2) threshold = 240; // 3.0ml Reservoir
if (remaining < threshold) return nightscoutItems; if (remaining < threshold) return nightscoutItems;
type = "Insulin Change"; type = "Insulin Change";
notes = String.format("%s: %s%s%s %s (%s)", notes = String.format("%s: %s%s%s %s (%s)",
...@@ -129,7 +137,8 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface ...@@ -129,7 +137,8 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface
FormatKit.getInstance().getString(R.string.Prime), FormatKit.getInstance().getString(R.string.Prime),
FormatKit.getInstance().formatAsInsulin(delivered), FormatKit.getInstance().formatAsInsulin(delivered),
FormatKit.getInstance().formatAsInsulin(remaining)); FormatKit.getInstance().formatAsInsulin(remaining));
} else { }
else {
Log.e(TAG, "unknown misc event"); Log.e(TAG, "unknown misc event");
return nightscoutItems; return nightscoutItems;
} }
...@@ -172,19 +181,28 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface ...@@ -172,19 +181,28 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface
if (RECORDTYPE.CHANGE_SENSOR.equals(recordtype) if (RECORDTYPE.CHANGE_SENSOR.equals(recordtype)
&& pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_SENSOR)) { && pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_SENSOR)) {
title = FormatKit.getInstance().getString(R.string.Sensor_Change); title = FormatKit.getInstance().getString(R.string.Sensor_Change);
} else if (RECORDTYPE.CHANGE_BATTERY.equals(recordtype) }
else if (RECORDTYPE.CHANGE_BATTERY.equals(recordtype)
&& pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_BATTERY)) { && pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_BATTERY)) {
title = FormatKit.getInstance().getString(R.string.Battery_Change); title = FormatKit.getInstance().getString(R.string.Battery_Change);
} else if (RECORDTYPE.CHANGE_CANNULA.equals(recordtype) }
else if (RECORDTYPE.CHANGE_CANNULA.equals(recordtype)
&& pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_CANNULA)) { && pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_CANNULA)) {
double threshold = Double.parseDouble(pumpHistorySender.senderVar(senderID, PumpHistorySender.SENDEROPT.CANNULA_CLANGE_THRESHOLD, "0")) / 1000;
// only send a CAGE event when primed amount exceeds threshold
if (delivered < threshold) return messageItems;
title = FormatKit.getInstance().getString(R.string.Cannula_Change); title = FormatKit.getInstance().getString(R.string.Cannula_Change);
} else if (RECORDTYPE.CHANGE_INSULIN.equals(recordtype) }
else if (RECORDTYPE.CHANGE_INSULIN.equals(recordtype)
&& pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_INSULIN)) { && pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_INSULIN)) {
// only send a IAGE event when insulin reservoir in pump exceeds threshold // only send a IAGE event when insulin reservoir in pump exceeds threshold
int threshold = Integer.parseInt(pumpHistorySender.senderVar(senderID, PumpHistorySender.SENDEROPT.INSULIN_CLANGE_THRESHOLD, "0")); int threshold = Integer.parseInt(pumpHistorySender.senderVar(senderID, PumpHistorySender.SENDEROPT.INSULIN_CLANGE_THRESHOLD, "0"));
if (threshold == 1) threshold = 140; // 1.8ml Reservoir
else if (threshold == 2) threshold = 240; // 3.0ml Reservoir
if (remaining < threshold) return messageItems; if (remaining < threshold) return messageItems;
title = FormatKit.getInstance().getString(R.string.Insulin_Change); title = FormatKit.getInstance().getString(R.string.Insulin_Change);
} else }
else
return messageItems; return messageItems;
if (pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_LIFETIMES)) if (pumpHistorySender.senderOpt(senderID, PumpHistorySender.SENDEROPT.MISC_LIFETIMES))
...@@ -206,7 +224,7 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface ...@@ -206,7 +224,7 @@ public class PumpHistoryMisc extends RealmObject implements PumpHistoryInterface
private String formatLifetimes() { private String formatLifetimes() {
StringBuilder sb = new StringBuilder( StringBuilder sb = new StringBuilder(
String.format("%s ", String.format("%s ",
FormatKit.getInstance().getString(R.string.Lifetimes))); FormatKit.getInstance().getString(R.string.Lifetimes)));
for (int lt = 0; lt < LIFETIMES_TOTAL; lt++) { for (int lt = 0; lt < LIFETIMES_TOTAL; lt++) {
byte days = lifetimes[lt << 1]; byte days = lifetimes[lt << 1];
......
...@@ -83,6 +83,7 @@ public class DataStore extends RealmObject { ...@@ -83,6 +83,7 @@ public class DataStore extends RealmObject {
private boolean nsEnableSensorChange; private boolean nsEnableSensorChange;
private boolean nsEnableReservoirChange; private boolean nsEnableReservoirChange;
private boolean nsEnableInsulinChange; private boolean nsEnableInsulinChange;
private int nsCannulaChangeThreshold;
private int nsInsulinChangeThreshold; private int nsInsulinChangeThreshold;
private boolean nsEnableBatteryChange; private boolean nsEnableBatteryChange;
private boolean nsEnableLifetimes; private boolean nsEnableLifetimes;
...@@ -289,6 +290,7 @@ public class DataStore extends RealmObject { ...@@ -289,6 +290,7 @@ public class DataStore extends RealmObject {
nsEnableSensorChange = sharedPreferences.getBoolean("nsEnableSensorChange", true); nsEnableSensorChange = sharedPreferences.getBoolean("nsEnableSensorChange", true);
nsEnableReservoirChange = sharedPreferences.getBoolean("nsEnableReservoirChange", true); nsEnableReservoirChange = sharedPreferences.getBoolean("nsEnableReservoirChange", true);
nsEnableInsulinChange = sharedPreferences.getBoolean("nsEnableInsulinChange", false); nsEnableInsulinChange = sharedPreferences.getBoolean("nsEnableInsulinChange", false);
nsCannulaChangeThreshold = Integer.parseInt(sharedPreferences.getString("nsCannulaChangeThreshold", "0"));
nsInsulinChangeThreshold = Integer.parseInt(sharedPreferences.getString("nsInsulinChangeThreshold", "0")); nsInsulinChangeThreshold = Integer.parseInt(sharedPreferences.getString("nsInsulinChangeThreshold", "0"));
nsEnableBatteryChange = sharedPreferences.getBoolean("nsEnableBatteryChange", true); nsEnableBatteryChange = sharedPreferences.getBoolean("nsEnableBatteryChange", true);
nsEnableLifetimes = sharedPreferences.getBoolean("nsEnableLifetimes", false); nsEnableLifetimes = sharedPreferences.getBoolean("nsEnableLifetimes", false);
...@@ -783,6 +785,10 @@ public class DataStore extends RealmObject { ...@@ -783,6 +785,10 @@ public class DataStore extends RealmObject {
return nsEnableInsulinChange; return nsEnableInsulinChange;
} }
public int getNsCannulaChangeThreshold() {
return nsCannulaChangeThreshold;
}
public int getNsInsulinChangeThreshold() { public int getNsInsulinChangeThreshold() {
return nsInsulinChangeThreshold; return nsInsulinChangeThreshold;
} }
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<item>8|2|1|Insulin flow blocked|Estimated 0U insulin in reservoir. Change reservoir and infusion set.</item> <item>8|2|1|Insulin flow blocked|Estimated 0U insulin in reservoir. Change reservoir and infusion set.</item>
<item>11|2|1|Replace battery now|Delivery stopped. Battery must be replaced to resume delivery.</item> <item>11|2|1|Replace battery now|Delivery stopped. Battery must be replaced to resume delivery.</item>
<item>58|0|1|Battery Failed|Insert a new AA battery.</item> <item>58|0|1|Battery Failed|Insert a new AA battery.</item>
<item>70|-1|1|Fill Cannula?|Select Fill to fill cannula or select Done if not needed.</item>
<item>73|1|1|Replace battery|Battery life less than 30 minutes. To ensure insulin delivery, replace battery now.</item> <item>73|1|1|Replace battery|Battery life less than 30 minutes. To ensure insulin delivery, replace battery now.</item>
<item>84|-1|1|Insert Battery|Delivery stopped. Insert a new battery now.</item> <item>84|-1|1|Insert Battery|Delivery stopped. Insert a new battery now.</item>
<item>100|1|1|Bolus Not Delivered|Bolus entry timed out before delivery. If bolus intended, enter values again.</item> <item>100|1|1|Bolus Not Delivered|Bolus entry timed out before delivery. If bolus intended, enter values again.</item>
...@@ -117,7 +118,7 @@ ...@@ -117,7 +118,7 @@
xxx|Check settings|Startup Wizard settings complete. Check and set up your other settings. xxx|Check settings|Startup Wizard settings complete. Check and set up your other settings.
xxx|Critical pump error|Delivery stopped. Pump not working properly. Stop using pump. Remove infusion set from body. Consider other insulin treatment. See User Guide. xxx|Critical pump error|Delivery stopped. Pump not working properly. Stop using pump. Remove infusion set from body. Consider other insulin treatment. See User Guide.
xxx|Delivery limit exceeded|Delivery stopped. Check BG. See User Guide for more information. xxx|Delivery limit exceeded|Delivery stopped. Check BG. See User Guide for more information.
xxx|Fill Cannula?|Select Fill to fill cannula or select Done if not needed. 070|Fill Cannula?|Select Fill to fill cannula or select Done if not needed.
084|Insert battery|Delivery stopped. Insert a new battery now. 084|Insert battery|Delivery stopped. Insert a new battery now.
007|Insulin flow blocked|Check BG. Consider injection and testing ketones. Change reservoir and infusion set. 007|Insulin flow blocked|Check BG. Consider injection and testing ketones. Change reservoir and infusion set.
008|Insulin flow blocked|Check BG. Consider injection and testing ketones. Estimated 0 U insulin in reservoir. Change reservoir and infusion set. 008|Insulin flow blocked|Check BG. Consider injection and testing ketones. Estimated 0 U insulin in reservoir. Change reservoir and infusion set.
...@@ -197,7 +198,7 @@ ...@@ -197,7 +198,7 @@
xxx|Alert|Check settings|Startup Wizard settings complete. Check and set up your other settings. xxx|Alert|Check settings|Startup Wizard settings complete. Check and set up your other settings.
xxx|Alarm|Critical pump error|Delivery stopped. Pump not working properly. Stop using pump. Remove infusion set from body. Consider other insulin treatment. See User Guide. xxx|Alarm|Critical pump error|Delivery stopped. Pump not working properly. Stop using pump. Remove infusion set from body. Consider other insulin treatment. See User Guide.
xxx|Alarm|Delivery limit exceeded|Delivery stopped. Check BG. See User Guide for more information. xxx|Alarm|Delivery limit exceeded|Delivery stopped. Check BG. See User Guide for more information.
xxx|Alarm|Fill Cannula?|Select Fill to fill cannula or select Done if not needed. 070|Alarm|Fill Cannula?|Select Fill to fill cannula or select Done if not needed.
xxx|Message|High BG XXX mg/dL|Check infusion set. Check ketones. Consider insulin injection. Monitor BG. xxx|Message|High BG XXX mg/dL|Check infusion set. Check ketones. Consider insulin injection. Monitor BG.
084|Alarm|Insert battery|Delivery stopped. Insert a new battery now. 084|Alarm|Insert battery|Delivery stopped. Insert a new battery now.
007|Alarm|Insulin flow blocked|Check BG. Consider injection and testing ketones. Change reservoir and infusion set. 007|Alarm|Insulin flow blocked|Check BG. Consider injection and testing ketones. Change reservoir and infusion set.
...@@ -394,6 +395,42 @@ ...@@ -394,6 +395,42 @@
<item>8</item> <item>8</item>
</string-array> </string-array>
<string-array name="cannula_change_threshold">
<item>Fill Cannula</item>
<item>Prime Cannula 0.1U+</item>
<item>Prime Cannula 0.2U+</item>
<item>Prime Cannula 0.3U+</item>
<item>Prime Cannula 0.4U+</item>
<item>Prime Cannula 0.5U+</item>
<item>Prime Cannula 0.6U+</item>
<item>Prime Cannula 0.7U+</item>
<item>Prime Cannula 0.8U+</item>
<item>Prime Cannula 0.9U+</item>
<item>Prime Cannula 1.0U+</item>
<item>Prime Cannula 2.0U+</item>
<item>Prime Cannula 3.0U+</item>
<item>Prime Cannula 4.0U+</item>
<item>Prime Cannula 5.0U+</item>
</string-array>
<string-array name="cannula_change_threshold_values" translatable="false">
<item>0</item>
<item>100</item>
<item>200</item>
<item>300</item>
<item>400</item>
<item>500</item>
<item>600</item>
<item>700</item>
<item>800</item>
<item>900</item>
<item>1000</item>
<item>2000</item>
<item>3000</item>
<item>4000</item>
<item>5000</item>
</string-array>
<string-array name="insulin_change_threshold"> <string-array name="insulin_change_threshold">
<item>New Reservoir</item> <item>New Reservoir</item>
<item>1.8ml Reservoir</item> <item>1.8ml Reservoir</item>
...@@ -423,8 +460,8 @@ ...@@ -423,8 +460,8 @@
<string-array name="insulin_change_threshold_values" translatable="false"> <string-array name="insulin_change_threshold_values" translatable="false">
<item>0</item> <item>0</item>
<item>140</item> <item>1</item>
<item>240</item> <item>2</item>
<item>100</item> <item>100</item>
<item>110</item> <item>110</item>
<item>120</item> <item>120</item>
......
...@@ -113,12 +113,19 @@ ...@@ -113,12 +113,19 @@
android:key="nsEnableReservoirChange" android:key="nsEnableReservoirChange"
android:defaultValue="true" android:defaultValue="true"
android:summary="Send cannula changes to Nightscout (CAGE)"/> android:summary="Send cannula changes to Nightscout (CAGE)"/>
<ListPreference android:title="Threshold for cannula change"
android:dependency="nsEnableReservoirChange"
android:key="nsCannulaChangeThreshold"
android:summary="%s"
android:defaultValue="0"
android:entries="@array/cannula_change_threshold"
android:entryValues="@array/cannula_change_threshold_values"/>
<CheckBoxPreference android:title="Insulin Change" <CheckBoxPreference android:title="Insulin Change"
android:dependency="nsEnableTreatments" android:dependency="nsEnableTreatments"
android:key="nsEnableInsulinChange" android:key="nsEnableInsulinChange"
android:defaultValue="false" android:defaultValue="false"
android:summary="Send insulin changes to Nightscout (IAGE)"/> android:summary="Send insulin changes to Nightscout (IAGE)"/>
<ListPreference android:title="Threshold to activate a insulin change event" <ListPreference android:title="Threshold for insulin change"
android:dependency="nsEnableInsulinChange" android:dependency="nsEnableInsulinChange"
android:key="nsInsulinChangeThreshold" android:key="nsInsulinChangeThreshold"
android:summary="%s" android:summary="%s"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment