From f0ccf57e69482026cd1c3b423c324b6c2552bd1f Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Wed, 28 Aug 2019 14:10:28 +0100 Subject: [PATCH 1/5] - fixing reading profile --- .../comm/MedtronicCommunicationManager.java | 21 +++++++------------ .../medtronic/comm/message/PumpMessage.java | 5 +++-- 2 files changed, 10 insertions(+), 16 deletions(-) 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 27bd436364..2562ac9376 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 @@ -703,7 +703,6 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager // create message PumpMessage msg; - // if (bodyData == null) msg = makePumpMessage(commandType); // send and wait for response @@ -718,8 +717,6 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager byte[] data = null; - int runs = 1; - if (check == null) { data = response.getRawContentOfFrame(); @@ -728,24 +725,21 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager while (checkIfWeHaveMoreData(commandType, response, data)) { - runs++; - - PumpMessage response2 = sendAndListen(ackMsg, DEFAULT_TIMEOUT + (DEFAULT_TIMEOUT * retries)); + response = sendAndListen(ackMsg, DEFAULT_TIMEOUT + (DEFAULT_TIMEOUT * retries)); // LOG.debug("{} Response: {}", runs, HexDump.toHexStringDisplayable(response2.getRawContent())); // LOG.debug("{} Response: {}", runs, // HexDump.toHexStringDisplayable(response2.getMessageBody().getTxData())); - String check2 = checkResponseContent(response2, commandType.commandDescription, 1); + String check2 = checkResponseContent(response, commandType.commandDescription, 1); if (check2 == null) { - data = ByteUtil.concat(data, response2.getRawContentOfFrame()); + data = ByteUtil.concat(data, response.getRawContentOfFrame()); } else { this.errorMessage = check2; - if (isLogEnabled()) - LOG.debug("Error message: " + check2); + LOG.error("Error with response got GetProfile: " + check2); } } @@ -784,12 +778,11 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager if (commandType == MedtronicCommandType.GetBasalProfileSTD || // commandType == MedtronicCommandType.GetBasalProfileA || // commandType == MedtronicCommandType.GetBasalProfileB) { - byte[] responseRaw = response.getRawContent(); + byte[] responseRaw = response.getRawContentOfFrame(); int last = responseRaw.length - 1; - if (isLogEnabled()) - LOG.debug("Length: " + data.length); + LOG.debug("Length: " + data.length); if (data.length >= BasalProfile.MAX_RAW_DATA_SIZE) { return false; @@ -954,7 +947,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager LOG.warn("Error getting response from RileyLink (error={}, retry={})", e.getMessage(), retries + 1); } - if (responseMessage!=null) + if (responseMessage != null) LOG.warn("Set Basal Profile: Invalid response: commandType={},rawData={}", responseMessage.commandType, ByteUtil.shortHexString(responseMessage.getRawContent())); else LOG.warn("Set Basal Profile: Null response."); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java index ab61c2f67e..81a8e553ef 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java @@ -129,9 +129,10 @@ public class PumpMessage implements RLMessage { return arrayOut; } + public byte[] getRawContentOfFrame() { - byte[] raw = getRawContent(); - return ByteUtil.substring(raw, 0, raw.length - 1); + byte[] raw = messageBody.getTxData(); + return ByteUtil.substring(raw, 1); } From d50d6087ea20c997c9e09b59468471b2242aae62 Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Sat, 31 Aug 2019 17:32:09 +0100 Subject: [PATCH 2/5] - changed PumpMessage to be get correct frame from 523 and 554 --- .../pump/medtronic/comm/message/PumpMessage.java | 7 ++++++- .../pump/medtronic/defs/MedtronicDeviceType.java | 14 +++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java index 81a8e553ef..44d34c6e84 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java @@ -7,6 +7,7 @@ import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RLMessage; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType; +import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; /** * Created by geoff on 5/29/16. @@ -132,7 +133,11 @@ public class PumpMessage implements RLMessage { public byte[] getRawContentOfFrame() { byte[] raw = messageBody.getTxData(); - return ByteUtil.substring(raw, 1); + + if (MedtronicUtil.getMedtronicPumpModel().isMedtronic_523orHigher()) + return ByteUtil.substring(raw, 1, raw.length - 2); + else + return ByteUtil.substring(raw, 1); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicDeviceType.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicDeviceType.java index 174405dc7b..f13974999b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicDeviceType.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicDeviceType.java @@ -105,9 +105,9 @@ public enum MedtronicDeviceType { } - public static boolean isLargerFormat(MedtronicDeviceType model) { - return isSameDevice(model, Medtronic_523andHigher); - } +// public static boolean isLargerFormat(MedtronicDeviceType model) { +// return isSameDevice(model, Medtronic_523andHigher); +// } public boolean isFamily() { @@ -120,13 +120,17 @@ public enum MedtronicDeviceType { } - public boolean isLargerFormat() { +// public boolean isLargerFormat() { +// return isSameDevice(this, Medtronic_523andHigher); +// } + + public boolean isMedtronic_523orHigher() { return isSameDevice(this, Medtronic_523andHigher); } public int getBolusStrokes() { - return (isLargerFormat(this)) ? 40 : 10; + return (isMedtronic_523orHigher()) ? 40 : 10; } From bdf65ab077697b82b53a463d9e91231768321068 Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Thu, 12 Sep 2019 12:36:13 +0100 Subject: [PATCH 3/5] - fix for getting basal profile (getRawContentOfFrame needed to be rewritten to cut 1 character and then create fixed length of frame at 64 bytes (it seems that in some cases frame can contain crc at end) --- .../plugins/pump/medtronic/comm/message/PumpMessage.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java index 44d34c6e84..4d81d81bfe 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java @@ -7,7 +7,6 @@ import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RLMessage; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType; -import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; /** * Created by geoff on 5/29/16. @@ -23,6 +22,8 @@ public class PumpMessage implements RLMessage { public MessageBody messageBody = new MessageBody(); public String error = null; + public static final int FRAME_DATA_LENGTH = 64; + public PumpMessage(String error) { this.error = error; @@ -133,11 +134,7 @@ public class PumpMessage implements RLMessage { public byte[] getRawContentOfFrame() { byte[] raw = messageBody.getTxData(); - - if (MedtronicUtil.getMedtronicPumpModel().isMedtronic_523orHigher()) - return ByteUtil.substring(raw, 1, raw.length - 2); - else - return ByteUtil.substring(raw, 1); + return ByteUtil.substring(raw, 1, Math.min(FRAME_DATA_LENGTH, raw.length - 1)); } From 4546ffa8385fc52e99974aa64470e6ddf5f3dd55 Mon Sep 17 00:00:00 2001 From: Rob Kresha Date: Sun, 15 Sep 2019 11:25:52 -0500 Subject: [PATCH 4/5] Consistency, typos, and labels Small tweaks to make things more uniform. --- .../objectives/objectives/Objective2.java | 56 ++--- app/src/main/res/values/exam.xml | 197 +++++++++--------- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 130 insertions(+), 125 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java index 3012f152ab..bba29d54e7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java @@ -17,31 +17,31 @@ public class Objective2 extends Objective { @Override protected void setupTasks(List tasks) { - tasks.add(new ExamTask(R.string.dia_meaningofdia, R.string.dia_whatmeansdia,"dia") + tasks.add(new ExamTask(R.string.dia_label, R.string.dia_whatmeansdia,"dia") .option(new Option(R.string.dia_minimumis3h, false)) .option(new Option(R.string.dia_minimumis5h, true)) .option(new Option(R.string.dia_meaningisequaltodiapump, false)) .option(new Option(R.string.dia_valuemustbedetermined, true)) .hint(new Hint(R.string.dia_hint1)) ); - tasks.add(new ExamTask(R.string.hypott, R.string.hypott_whenhypott,"hypott") + tasks.add(new ExamTask(R.string.hypott_label, R.string.hypott_whenhypott,"hypott") .option(new Option(R.string.hypott_goinglow, false)) .option(new Option(R.string.hypott_havinglow, false)) .option(new Option(R.string.hypott_preventoversmb, true)) .hint(new Hint(R.string.hypott_hint1)) ); - tasks.add(new ExamTask(R.string.offlineprofile, R.string.offlineprofile_whatprofile,"offlineprofile") + tasks.add(new ExamTask(R.string.offlineprofile_label, R.string.offlineprofile_whatprofile,"offlineprofile") .option(new Option(R.string.localprofile, true)) .option(new Option(R.string.nsprofile, false)) .option(new Option(R.string.offlineprofile_nsprofile, true)) .hint(new Hint(R.string.offlineprofile_hint1)) ); - tasks.add(new ExamTask(R.string.pumpdisconnect, R.string.pumpdisconnect_whattodo,"pumpdisconnect") + tasks.add(new ExamTask(R.string.pumpdisconnect_label, R.string.pumpdisconnect_label,"pumpdisconnect") .option(new Option(R.string.pumpdisconnect_letknow, true)) .option(new Option(R.string.pumpdisconnect_dontchnage, false)) .hint(new Hint(R.string.pumpdisconnect_hint1)) ); - tasks.add(new ExamTask(R.string.objectives, R.string.objectives_howtosave,"objectives") + tasks.add(new ExamTask(R.string.objectives_label, R.string.objectives_howtosave,"objectives") .option(new Option(R.string.objectives_exportsettings, true)) .option(new Option(R.string.objectives_storeelsewhere, true)) .option(new Option(R.string.objectives_doexportonstart, false)) @@ -50,7 +50,7 @@ public class Objective2 extends Objective { .hint(new Hint(R.string.objectives_hint1)) .hint(new Hint(R.string.objectives_hint2)) ); - tasks.add(new ExamTask(R.string.noisycgm, R.string.noisycgm_whattodo,"noisycgm") + tasks.add(new ExamTask(R.string.noisycgm_label, R.string.noisycgm_whattodo,"noisycgm") .option(new Option(R.string.nothing, false)) .option(new Option(R.string.disconnectpumpfor1h, false)) .option(new Option(R.string.noisycgm_pause, true)) @@ -59,7 +59,7 @@ public class Objective2 extends Objective { .option(new Option(R.string.noisycgm_checksmoothing, true)) .hint(new Hint(R.string.noisycgm_hint1)) ); - tasks.add(new ExamTask(R.string.exercise, R.string.exercise_whattodo,"exercise") + tasks.add(new ExamTask(R.string.exercise_label, R.string.exercise_whattodo,"exercise") .option(new Option(R.string.nothing, false)) .option(new Option(R.string.exercise_setactivitytt, true)) .option(new Option(R.string.exercise_switchprofilebelow100, true)) @@ -69,17 +69,17 @@ public class Objective2 extends Objective { .option(new Option(R.string.exercise_doitafterstart, false)) .hint(new Hint(R.string.exercise_hint1)) ); - tasks.add(new ExamTask(R.string.suspendloop, R.string.suspendloop_doigetinsulin,"suspendloop") + tasks.add(new ExamTask(R.string.suspendloop_label, R.string.suspendloop_doigetinsulin,"suspendloop") .option(new Option(R.string.suspendloop_yes, true)) .option(new Option(R.string.suspendloop_no, false)) ); - tasks.add(new ExamTask(R.string.basaltest, R.string.basaltest_when,"basaltest") + tasks.add(new ExamTask(R.string.basaltest_label, R.string.basaltest_when,"basaltest") .option(new Option(R.string.basaltest_beforeloop, true)) .option(new Option(R.string.basaltest_havingregularhypo, true)) .option(new Option(R.string.basaltest_havingregularhyper, true)) .hint(new Hint(R.string.basaltest_hint1)) ); - tasks.add(new ExamTask(R.string.prerequisites, R.string.prerequisites_what, "prerequisites") + tasks.add(new ExamTask(R.string.prerequisites_label, R.string.prerequisites_what, "prerequisites") .option(new Option(R.string.prerequisites_determinedcorrectprofile, true)) .option(new Option(R.string.prerequisites_computer, true)) .option(new Option(R.string.prerequisites_phone, true)) @@ -94,7 +94,7 @@ public class Objective2 extends Objective { .option(new Option(R.string.prerequisites_supportedcgm, true)) .hint(new Hint(R.string.prerequisites_hint1)) ); - tasks.add(new ExamTask(R.string.update_update, R.string.whatistrue,"update") + tasks.add(new ExamTask(R.string.update_label, R.string.whatistrue,"update") .option(new Option(R.string.update_git, true)) .option(new Option(R.string.update_asap, true)) .option(new Option(R.string.update_keys, true)) @@ -102,7 +102,7 @@ public class Objective2 extends Objective { .option(new Option(R.string.update_askfriend, false)) .hint(new Hint(R.string.update_hint1)) ); - tasks.add(new ExamTask(R.string.troubleshooting, R.string.troubleshooting_wheretoask,"troubleshooting") + tasks.add(new ExamTask(R.string.troubleshooting_label, R.string.troubleshooting_wheretoask,"troubleshooting") .option(new Option(R.string.troubleshooting_fb, true)) .option(new Option(R.string.troubleshooting_wiki, true)) .option(new Option(R.string.troubleshooting_gitter, true)) @@ -112,47 +112,47 @@ public class Objective2 extends Objective { .hint(new Hint(R.string.troubleshooting_hint2)) .hint(new Hint(R.string.troubleshooting_hint3)) ); - tasks.add(new ExamTask(R.string.insulin, R.string.insulin_ultrarapid,"insulin") + tasks.add(new ExamTask(R.string.insulin_label, R.string.insulin_ultrarapid,"insulin") .option(new Option(R.string.insulin_fiasp, true)) .option(new Option(R.string.insulin_novorapid, false)) .option(new Option(R.string.insulin_humalog, false)) .option(new Option(R.string.insulin_actrapid, false)) .hint(new Hint(R.string.insulin_hint1)) ); - tasks.add(new ExamTask(R.string.sensitivity, R.string.sensitivity_which,"sensitivity") + tasks.add(new ExamTask(R.string.sensitivity_label, R.string.sensitivity_which,"sensitivity") .option(new Option(R.string.sensitivityweightedaverage, true)) .option(new Option(R.string.sensitivityoref0, false)) .option(new Option(R.string.sensitivityoref1, false)) .option(new Option(R.string.sensitivityaaps, true)) .hint(new Hint(R.string.sensitivity_hint1)) ); - tasks.add(new ExamTask(R.string.sensitivity, R.string.sensitivityuam_which,"sensitivityuam") + tasks.add(new ExamTask(R.string.sensitivity_label, R.string.sensitivityuam_which,"sensitivityuam") .option(new Option(R.string.sensitivityweightedaverage, false)) .option(new Option(R.string.sensitivityoref0, false)) .option(new Option(R.string.sensitivityoref1, true)) .option(new Option(R.string.sensitivityaaps, false)) .hint(new Hint(R.string.sensitivity_hint1)) ); - tasks.add(new ExamTask(R.string.wrongcarbs, R.string.wrongcarbs_whattodo,"wrongcarbs") + tasks.add(new ExamTask(R.string.wrongcarbs_label, R.string.wrongcarbs_whattodo,"wrongcarbs") .option(new Option(R.string.wrongcarbs_addfakeinsulin, false)) .option(new Option(R.string.wrongcarbs_treatmentstab, true)) ); - tasks.add(new ExamTask(R.string.extendedcarbs, R.string.extendedcarbs_handling,"extendedcarbs") + tasks.add(new ExamTask(R.string.extendedcarbs_label, R.string.extendedcarbs_handling,"extendedcarbs") .option(new Option(R.string.extendedcarbs_useextendedcarbs, true)) .option(new Option(R.string.extendedcarbs_add, false)) .option(new Option(R.string.extendedcarbs_useextendedbolus, false)) .hint(new Hint(R.string.extendedcarbs_hint1)) ); - tasks.add(new ExamTask(R.string.nsclient_monitoring, R.string.nsclient_howcanyou,"nsclient") - .option(new Option(R.string.nightscout, true)) + tasks.add(new ExamTask(R.string.nsclient_label, R.string.nsclient_howcanyou,"nsclient") + .option(new Option(R.string.nsclient_nightscout, true)) .option(new Option(R.string.nsclientinternal, true)) - .option(new Option(R.string.dexcomfollow, true)) - .option(new Option(R.string.dexcomfollowxdrip, false)) - .option(new Option(R.string.xdripfollower, true)) - .option(new Option(R.string.looponiphone, false)) - .option(new Option(R.string.spikeiphone, true)) + .option(new Option(R.string.nsclient_dexcomfollow, true)) + .option(new Option(R.string.nsclient_dexcomfollowxdrip, false)) + .option(new Option(R.string.nsclient_xdripfollower, true)) + .option(new Option(R.string.nsclient_looponiphone, false)) + .option(new Option(R.string.nsclient_spikeiphone, true)) ); - tasks.add(new ExamTask(R.string.nsprofileview_isf_label, R.string.whatistrue,"isf") + tasks.add(new ExamTask(R.string.isf_label_isf_label, R.string.whatistrue,"isf") .option(new Option(R.string.isf_increasingvalue, true)) .option(new Option(R.string.isf_decreasingvalue, false)) .option(new Option(R.string.isf_noeffect, false)) @@ -161,7 +161,7 @@ public class Objective2 extends Objective { .hint(new Hint(R.string.isf_hint1)) .hint(new Hint(R.string.isf_hint2)) ); - tasks.add(new ExamTask(R.string.nsprofileview_ic_label, R.string.whatistrue,"ic") + tasks.add(new ExamTask(R.string.ic_label, R.string.whatistrue,"ic") .option(new Option(R.string.ic_increasingvalue, true)) .option(new Option(R.string.ic_decreasingvalue, false)) .option(new Option(R.string.ic_noeffect, false)) @@ -169,7 +169,7 @@ public class Objective2 extends Objective { .option(new Option(R.string.ic_meaning, false)) .hint(new Hint(R.string.ic_hint1)) ); - tasks.add(new ExamTask(R.string.profileswitch, R.string.profileswitch_pctwillchange,"profileswitch") + tasks.add(new ExamTask(R.string.profileswitch_label, R.string.profileswitch_pctwillchange,"profileswitch") .option(new Option(R.string.profileswitch_basalhigher, false)) .option(new Option(R.string.profileswitch_basallower, true)) .option(new Option(R.string.profileswitch_ichigher, true)) @@ -183,7 +183,7 @@ public class Objective2 extends Objective { .hint(new Hint(R.string.profileswitch_hint1)) ); - tasks.add(new ExamTask(R.string.profileswitch, R.string.profileswitchtime_iwant,"profileswitchtime") + tasks.add(new ExamTask(R.string.profileswitch_label, R.string.profileswitchtime_iwant,"profileswitchtime") .option(new Option(R.string.profileswitchtime_1, false)) .option(new Option(R.string.profileswitchtime__1, true)) .option(new Option(R.string.profileswitchtime_60, false)) diff --git a/app/src/main/res/values/exam.xml b/app/src/main/res/values/exam.xml index a87186aaf8..546262a71f 100644 --- a/app/src/main/res/values/exam.xml +++ b/app/src/main/res/values/exam.xml @@ -1,147 +1,152 @@ What is true about DIA? - Meaning of DIA + Topic: Duration of Insulin Action The predetermined minimum is 3 hours. The predetermined minimum is 5 hours. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin It is equal to the DIA parameter used in your pump. You have to determine your individual value (but not less than 5 hours). - Hypo temp target + Topic: Hypo Temp-Target Why is it useful to set a hypo TT? - Prevent to be low. + Prevent BG from going low. To help recovering from a low BG. - To prevent SMB after a hypo rise from fast carbs + To prevent SMB enactment after a hypo rise from fast carbs. https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html Which profile can be used and configured offline? - Offline profile - NS Profile can be used but not configured + Topic: Offline Profile + NS Profile can be used, but not configured. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile - Taking off pump + Topic: Disconnecting from the Pump What to do when taking the pump off? - Let loop know that there is no insulin running to your body by clicking disconnect pump. - Don\'t change anything in loop, just take it off. + Let the loop know that there is no insulin being delivered to your body by clicking disconnect pump. + Don\'t change anything in loop, just take the pump off. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings + Topic: AndroidAPS Settings What are best practices to backup your settings? Locally export them from Maintenance menu. - Store exported file to another place like email, Dropbox, Google drive … + Store exported file to another place like email, Dropbox, Google drive… Export them right after installation of AAPS. Export them after every change of a setting. Export them when you finish initial settings. https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me - Noisy CGM + Topic: Noisy CGM Readings What to do when you see CGM signals are too noisy? Nothing, the loop will deal with it. - Pause closed loop mode to avoid overdosing. - Replace sensor + Pause closed-loop mode to avoid overdosing. + Replace the CGM sensor. Turn off the phone. https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data Check if your CGM app smoothes data. - Exercise - How is the best practice to help the system deal with exercise - Set activity temp target - Do a profile switch below 100% - Do profile switch above 100% - Stop loop - Help before start exercise - Help after start exercise + Topic: Exercise + How can you help the system deal with exercise? + Set an activity temp-target. + Do a profile switch below 100%. + Do a profile switch above 100%. + Stop the loop. + Set activity temp-target before the start of exercise. + Set activity temp-target after the start of exercise. https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target + Topic: Suspended Loop Do I get insulin when loop is suspended? - Yes, common basal rate - No, delivering of insulin is stopped - Basal and ISF, IC testing - When should I test basals, ISF and IC? - Before I start looping - When having regular hypos - When having regular hypers + Yes, the common basal rate. + No, delivery of insulin is stopped. + Topic: Basal, ISF, and IC Testing + When should I validate basals, ISF, and IC values? + Before I start looping. + When having regular hypos BG\'s. + When having regular hypers BG\'s. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings - Prerequisites + Topic: Prerequisites What do I need? - Determined correct profile (Basals, IC, ISF, DIA) - Computer to create an APK - Supported phone - Car - Nightscout to pass objectives - Tidepool account - Google account - Github account - To be an Android developer - Own a 670g pump + Determined correct profile (Basals, IC, ISF, DIA). + A computer to create an APK. + A supported phone. + A Car. + Nightscout to pass the objectives. + A Tidepool account. + A Google account. + A Github account. + Need to be an Android developer. + A MiniMed 670G pump. https://androidaps.readthedocs.io/en/latest/EN/Module/module.html - Smartwatch - Supported CGM - Updating of AndroidAPS + A Smartwatch. + A Supported CGM. + Topic: Updating of AndroidAPS What is true? - You need to have Git installed - Update as soon as new version is released - Use the same signing keys - Never update if system is working well - Ask your friend for new APK + You need to have Git installed. + Update as soon as new version is released. + You can use the same signing keys. + Never update if the system is working well. + Ask your friend for the new APK. https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch - Troubleshooting + Topic: Troubleshooting Where to look for help? - Facebook group - Wiki - Gitter - Google support - Your endo + Join the AndroidAPS Facebook group. + Visit the AndroidAPS Wiki. + Visit AndroidAPS Gitter Room. + Visit AndroidAPS Google support + Speak to your endocrinologist. https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting https://www.facebook.com/groups/AndroidAPSUsers/ https://gitter.im/MilosKozak/AndroidAPS - Insulin - Which insulin can be used with Ultra-Rapid-Oref plugin? - Fiasp - Novorapid - Humalog - Actrapid + Topic: Insulin + Which brand of insulin can be used with Ultra-Rapid-Oref plugin? + Fiasp® + NovoRapid® + Humalog® + Actrapid® https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin - Sensitivity plugin + Topic: Sensitivity Plugin Which sensitivity plugin has user defined time range for detection? https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html - Which sensitivity plugin must be used for UAM? - Wrong carbs + Which sensitivity plugin must be used for the UAM feature? + Topic: Wrong Carb Entries You see you have entered wrong carbs. What should you do? - Go to treatments, delete wrong carbs and enter new carbs + Go to Treatments, delete wrong carbs and enter new carbs. Add fake insulin by using Refill function - Food with fat and protein - What to do if your food contains larger amount of fat or proteins? - Recalculate fat and proteins to carbs and use \"Extended carbs\" feature to tell system about it - Recalculate fat and proteins to carbs and add it to bolus calculation - Use extended bolus to cover fat and proteins + Topic: Food with Fat and Protein + What to do if your food contains a large amount of fat and\/or proteins? + Recalculate fat and proteins to carbs and use \"Extended carbs\" feature. + Recalculate fat and proteins to carbs and add it to bolus calculation. + Use extended bolus to cover fat and proteins. https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html - Monitoring children + Topic: Monitoring Children How can you monitor AAPS of your child remotely? - Nightscout - Dexcom follow if you are using original Dexcom app - Dexcom follow if you are using xDrip - xDrip in follower mode - Loop app on iPhone - Spike on iPhone - Assume you have high glycemia. Increasing ISF number will lead to giving less insulin if you try to correct high glycemia by bolus wizard - Assume you have high glycemia. Decreasing ISF number will lead to giving less insulin if you try to correct high glycemia by bolus wizard - Changing ISF has no effect on amount of insulin given by APS when trying to correct high glycemia - You have to enter ISF in preferences - Changing ISF in profile is enough to apply the change + Using a Nightscout site. + Dexcom Follow app if you are using the original Dexcom app. + Dexcom Follow if you are using the xDrip app. + xDrip running in follower mode. + Loop app on iPhone. + Spike app on iPhone. + Topic: Insulin Sensitivity Factor + Increasing ISF number will lead to less insulin delivery if you are trying to lower your BG with the bolus wizard. + Decreasing ISF number will lead to less insulin delivery if you are trying to lower your BG with the bolus wizard. + Changing ISF has no effect on amount of insulin given by AAPS when trying to correct hyperglycemia. + You have to enter ISF in Preferences. + Changing the ISF value in your profile is enough to apply the change. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html - Increasing IC value will lead to giving less insulin for the same amount of carbs - Decreasing IC value will lead to giving less insulin for the same amount of carbs - Assume you have no active carbs. Changing IC will lead to different amount of insuling to correct your glycemia - IC will be different if you count bread unit as 10g or 12g - IC meaning is: How much bread units is covered by 1U of insulin + Topic: The IC Value + Increasing the IC value will lead to less insulin delivery for the same amount of carbs. + Decreasing the IC value will lead to less insulin delivery for the same amount of carbs. + Assume you have 0 COB. Changing IC will lead to a different amount of insulin to correct your BG number. + IC will be different if you count bread unit as 10g or 12g. + IC meaning is: How many bread units are covered by 1U of insulin. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u - By specifying 90% in profile switch - Basals will be 10% higher - Basals will be 10% lower - IC value will be 10% higher - IC value will be 10% lower - ISF value will be 10% higher - ISF value will be 10% lower - You will get around 10% less insulin in total - Target wiil be 10% higher - Target will be 10% lower - Only bottom target will be 10% lower + Topic: Profile Switching + When specifying 90% in profile switch… + Basals will be 10% higher. + Basals will be 10% lower. + IC value will be 10% higher. + IC value will be 10% lower. + ISF value will be 10% higher. + ISF value will be 10% lower. + You will get 10% less insulin in total. + Target wiil be 10% higher. + Target will be 10% lower. + Only bottom target will be 10% lower. https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch I want to do a profile switch because I had to wake up 1h earlier than usually, so it makes more sense to announce the change by the time shift with a profile switch. What number should I use? 1 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ea5b799a56..cfc2457903 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1516,7 +1516,7 @@ Not Started RileyLink Initialization… RileyLink Error - Tunning up RileyLink and Pump + Tuning up RileyLink and Pump Problem connecting to Pump Connected From 37589c8f9014e69a97345c6a892398ba7fdf6ab8 Mon Sep 17 00:00:00 2001 From: Rob Kresha Date: Sun, 15 Sep 2019 11:29:37 -0500 Subject: [PATCH 5/5] Update Objective2.java typo --- .../plugins/constraints/objectives/objectives/Objective2.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java index bba29d54e7..a3064bbb0a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective2.java @@ -152,7 +152,7 @@ public class Objective2 extends Objective { .option(new Option(R.string.nsclient_looponiphone, false)) .option(new Option(R.string.nsclient_spikeiphone, true)) ); - tasks.add(new ExamTask(R.string.isf_label_isf_label, R.string.whatistrue,"isf") + tasks.add(new ExamTask(R.string.isf_label, R.string.whatistrue,"isf") .option(new Option(R.string.isf_increasingvalue, true)) .option(new Option(R.string.isf_decreasingvalue, false)) .option(new Option(R.string.isf_noeffect, false))