From 9eaba98dfa26bf807cf00ba4244d876360884cda Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 15 Jul 2017 11:19:27 +0200 Subject: [PATCH 01/18] TT refactor OverlappingIntervals to two classes with an abstract superclass Intervals --- .../nightscout/androidaps/data/Intervals.java | 91 +++++++++++++++++++ .../data/NonOverlappingIntervals.java | 30 ++++++ .../androidaps/data/OverlappingIntervals.java | 80 ++-------------- .../interfaces/TreatmentsInterface.java | 8 +- .../ConfigBuilder/ConfigBuilderPlugin.java | 8 +- .../plugins/Treatments/TreatmentsPlugin.java | 16 ++-- .../TreatmentsExtendedBolusesFragment.java | 8 +- .../TreatmentsTempTargetFragment.java | 7 +- .../TreatmentsTemporaryBasalsFragment.java | 8 +- 9 files changed, 152 insertions(+), 104 deletions(-) create mode 100644 app/src/main/java/info/nightscout/androidaps/data/Intervals.java create mode 100644 app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java diff --git a/app/src/main/java/info/nightscout/androidaps/data/Intervals.java b/app/src/main/java/info/nightscout/androidaps/data/Intervals.java new file mode 100644 index 0000000000..772c73b4b1 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/data/Intervals.java @@ -0,0 +1,91 @@ +package info.nightscout.androidaps.data; + +import android.support.annotation.Nullable; +import android.support.v4.util.LongSparseArray; + +import java.util.ArrayList; +import java.util.List; + +import info.nightscout.androidaps.interfaces.Interval; + +/** + * Created by mike on 09.05.2017. + */ + +// Zero duration means end of interval + +public abstract class Intervals { + + LongSparseArray rawData = new LongSparseArray<>(); // oldest at index 0 + + public Intervals reset() { + rawData = new LongSparseArray<>(); + return this; + } + + public void add(T newInterval) { + rawData.put(newInterval.start(), newInterval); + merge(); + } + + protected abstract void merge(); + + public void add(List list) { + for (T interval : list) { + rawData.put(interval.start(), interval); + } + merge(); + } + + + + public List getList() { + List list = new ArrayList<>(); + for (int i = 0; i < rawData.size(); i++) + list.add(rawData.valueAt(i)); + return list; + } + + public List getReversedList() { + List list = new ArrayList<>(); + for (int i = rawData.size() -1; i>=0; i--) + list.add(rawData.valueAt(i)); + return list; + } + + protected int binarySearch(long value) { + int lo = 0; + int hi = rawData.size() - 1; + + while (lo <= hi) { + final int mid = (lo + hi) >>> 1; + final Interval midVal = rawData.valueAt(mid); + + if (midVal.before(value)) { + lo = mid + 1; + } else if (midVal.after(value)) { + hi = mid - 1; + } else if (midVal.match(value)) { + return mid; // value found + } + } + return ~lo; // value not present + } + + public abstract T getValueByInterval(long time); + + public int size() { + return rawData.size(); + } + + public T get(int index) { + return rawData.valueAt(index); + } + + public T getReversed(int index) { + return rawData.valueAt(size() - 1 - index); + } + + + +} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java b/app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java new file mode 100644 index 0000000000..ca1d5abe63 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java @@ -0,0 +1,30 @@ +package info.nightscout.androidaps.data; + + +import android.support.annotation.Nullable; + +import info.nightscout.androidaps.interfaces.Interval; + +/** + * Created by adrian on 15/07/17. + */ + +public class NonOverlappingIntervals extends Intervals { + + protected void merge() { + for (int index = 0; index < rawData.size() - 1; index++) { + Interval i = rawData.valueAt(index); + long startOfNewer = rawData.valueAt(index + 1).start(); + if (i.originalEnd() > startOfNewer) { + i.cutEndTo(startOfNewer); + } + } + } + + @Nullable + public T getValueByInterval(long time) { + int index = binarySearch(time); + if (index >= 0) return rawData.valueAt(index); + return null; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java b/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java index cc03936766..182e2cf76f 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java +++ b/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java @@ -1,41 +1,17 @@ package info.nightscout.androidaps.data; -import android.support.annotation.Nullable; -import android.support.v4.util.LongSparseArray; -import java.util.ArrayList; -import java.util.List; +import android.support.annotation.Nullable; import info.nightscout.androidaps.interfaces.Interval; /** - * Created by mike on 09.05.2017. + * Created by adrian on 15/07/17. */ -// Zero duration means end of interval +public class OverlappingIntervals extends Intervals { -public class OverlappingIntervals { - - private LongSparseArray rawData = new LongSparseArray<>(); // oldest at index 0 - - public OverlappingIntervals reset() { - rawData = new LongSparseArray<>(); - return this; - } - - public void add(T newInterval) { - rawData.put(newInterval.start(), newInterval); - merge(); - } - - public void add(List list) { - for (T interval : list) { - rawData.put(interval.start(), interval); - } - merge(); - } - - private void merge() { + protected void merge() { for (int index = 0; index < rawData.size() - 1; index++) { Interval i = rawData.valueAt(index); long startOfNewer = rawData.valueAt(index + 1).start(); @@ -46,54 +22,10 @@ public class OverlappingIntervals { } @Nullable - public Interval getValueByInterval(long time) { + public T getValueByInterval(long time) { int index = binarySearch(time); if (index >= 0) return rawData.valueAt(index); return null; } - public List getList() { - List list = new ArrayList<>(); - for (int i = 0; i < rawData.size(); i++) - list.add(rawData.valueAt(i)); - return list; - } - - public List getReversedList() { - List list = new ArrayList<>(); - for (int i = rawData.size() -1; i>=0; i--) - list.add(rawData.valueAt(i)); - return list; - } - - private int binarySearch(long value) { - int lo = 0; - int hi = rawData.size() - 1; - - while (lo <= hi) { - final int mid = (lo + hi) >>> 1; - final Interval midVal = rawData.valueAt(mid); - - if (midVal.before(value)) { - lo = mid + 1; - } else if (midVal.after(value)) { - hi = mid - 1; - } else if (midVal.match(value)) { - return mid; // value found - } - } - return ~lo; // value not present - } - - public int size() { - return rawData.size(); - } - - public T get(int index) { - return rawData.valueAt(index); - } - - public T getReversed(int index) { - return rawData.valueAt(size() - 1 - index); - } -} \ No newline at end of file +} diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java b/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java index d9e3742c70..5e8b4e52e8 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java @@ -10,7 +10,7 @@ import info.nightscout.androidaps.db.ProfileSwitch; import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.db.TemporaryBasal; import info.nightscout.androidaps.db.Treatment; -import info.nightscout.androidaps.data.OverlappingIntervals; +import info.nightscout.androidaps.data.Intervals; import info.nightscout.androidaps.data.ProfileIntervals; /** @@ -42,18 +42,18 @@ public interface TreatmentsInterface { TemporaryBasal getTempBasalFromHistory(long time); double getTempBasalAbsoluteRateHistory(); double getTempBasalRemainingMinutesFromHistory(); - OverlappingIntervals getTemporaryBasalsFromHistory(); + Intervals getTemporaryBasalsFromHistory(); boolean isInHistoryExtendedBoluslInProgress(); ExtendedBolus getExtendedBolusFromHistory(long time); - OverlappingIntervals getExtendedBolusesFromHistory(); + Intervals getExtendedBolusesFromHistory(); boolean addToHistoryExtendedBolus(ExtendedBolus extendedBolus); boolean addToHistoryTreatment(DetailedBolusInfo detailedBolusInfo); TempTarget getTempTargetFromHistory(long time); - OverlappingIntervals getTempTargetsFromHistory(); + Intervals getTempTargetsFromHistory(); ProfileSwitch getProfileSwitchFromHistory(long time); ProfileIntervals getProfileSwitchesFromHistory(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderPlugin.java index 28821e0242..239318a6e4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderPlugin.java @@ -23,7 +23,7 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.DetailedBolusInfo; import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.MealData; -import info.nightscout.androidaps.data.OverlappingIntervals; +import info.nightscout.androidaps.data.Intervals; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.ProfileIntervals; import info.nightscout.androidaps.data.PumpEnactResult; @@ -827,7 +827,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain } @Override - public OverlappingIntervals getTemporaryBasalsFromHistory() { + public Intervals getTemporaryBasalsFromHistory() { return activeTreatments.getTemporaryBasalsFromHistory(); } @@ -874,7 +874,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain } @Override - public OverlappingIntervals getExtendedBolusesFromHistory() { + public Intervals getExtendedBolusesFromHistory() { return activeTreatments.getExtendedBolusesFromHistory(); } @@ -896,7 +896,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain } @Override - public OverlappingIntervals getTempTargetsFromHistory() { + public Intervals getTempTargetsFromHistory() { return activeTreatments.getTempTargetsFromHistory(); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java index d7a2c26bc7..1c156cf146 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java @@ -8,7 +8,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; -import java.util.Date; import java.util.List; import info.nightscout.androidaps.Config; @@ -19,7 +18,8 @@ import info.nightscout.androidaps.data.DetailedBolusInfo; import info.nightscout.androidaps.data.Iob; import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.MealData; -import info.nightscout.androidaps.data.OverlappingIntervals; +import info.nightscout.androidaps.data.Intervals; +import info.nightscout.androidaps.data.NonOverlappingIntervals; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.ProfileIntervals; import info.nightscout.androidaps.db.ExtendedBolus; @@ -48,9 +48,9 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { public static IobTotal lastTempBasalsCalculation; public static List treatments; - private static OverlappingIntervals tempBasals = new OverlappingIntervals<>(); - private static OverlappingIntervals extendedBoluses = new OverlappingIntervals<>(); - private static OverlappingIntervals tempTargets = new OverlappingIntervals<>(); + private static Intervals tempBasals = new NonOverlappingIntervals(); + private static Intervals extendedBoluses = new NonOverlappingIntervals(); + private static Intervals tempTargets = new NonOverlappingIntervals(); private static ProfileIntervals profiles = new ProfileIntervals<>(); private static boolean fragmentEnabled = true; @@ -347,7 +347,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { } @Override - public OverlappingIntervals getExtendedBolusesFromHistory() { + public Intervals getExtendedBolusesFromHistory() { return extendedBoluses; } @@ -380,7 +380,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { } @Override - public OverlappingIntervals getTemporaryBasalsFromHistory() { + public Intervals getTemporaryBasalsFromHistory() { return tempBasals; } @@ -442,7 +442,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { } @Override - public OverlappingIntervals getTempTargetsFromHistory() { + public Intervals getTempTargetsFromHistory() { return tempTargets; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsExtendedBolusesFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsExtendedBolusesFragment.java index 0acbf4b2c5..ca1cb002f8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsExtendedBolusesFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsExtendedBolusesFragment.java @@ -23,8 +23,6 @@ import com.squareup.otto.Subscribe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Date; - import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.IobTotal; @@ -35,7 +33,7 @@ import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.NSUpload; -import info.nightscout.androidaps.data.OverlappingIntervals; +import info.nightscout.androidaps.data.Intervals; public class TreatmentsExtendedBolusesFragment extends Fragment { @@ -48,9 +46,9 @@ public class TreatmentsExtendedBolusesFragment extends Fragment { public class RecyclerViewAdapter extends RecyclerView.Adapter { - OverlappingIntervals extendedBolusList; + Intervals extendedBolusList; - RecyclerViewAdapter(OverlappingIntervals extendedBolusList) { + RecyclerViewAdapter(Intervals extendedBolusList) { this.extendedBolusList = extendedBolusList; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTempTargetFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTempTargetFragment.java index 7a74ca4a86..e47ed3c8e9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTempTargetFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTempTargetFragment.java @@ -26,11 +26,10 @@ import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.db.Source; import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.events.EventTempTargetChange; -import info.nightscout.androidaps.data.Profile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.NSUpload; -import info.nightscout.androidaps.data.OverlappingIntervals; +import info.nightscout.androidaps.data.Intervals; import info.nightscout.utils.SP; /** @@ -47,9 +46,9 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli public class RecyclerViewAdapter extends RecyclerView.Adapter { - OverlappingIntervals tempTargetList; + Intervals tempTargetList; - RecyclerViewAdapter(OverlappingIntervals TempTargetList) { + RecyclerViewAdapter(Intervals TempTargetList) { this.tempTargetList = TempTargetList; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTemporaryBasalsFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTemporaryBasalsFragment.java index 8db8a9c67b..219e421c49 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTemporaryBasalsFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTemporaryBasalsFragment.java @@ -23,8 +23,6 @@ import com.squareup.otto.Subscribe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Date; - import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.IobTotal; @@ -35,7 +33,7 @@ import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.NSUpload; -import info.nightscout.androidaps.data.OverlappingIntervals; +import info.nightscout.androidaps.data.Intervals; public class TreatmentsTemporaryBasalsFragment extends Fragment { @@ -50,9 +48,9 @@ public class TreatmentsTemporaryBasalsFragment extends Fragment { public class RecyclerViewAdapter extends RecyclerView.Adapter { - OverlappingIntervals tempBasalList; + Intervals tempBasalList; - RecyclerViewAdapter(OverlappingIntervals tempBasalList) { + RecyclerViewAdapter(Intervals tempBasalList) { this.tempBasalList = tempBasalList; } From cb08d1d76b82a0bfff3b154c809899c4c4f21aa2 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 15 Jul 2017 12:29:51 +0200 Subject: [PATCH 02/18] TT new "old" logic for temp targets --- .../nightscout/androidaps/data/Intervals.java | 13 +++++----- .../androidaps/data/OverlappingIntervals.java | 26 ++++++++++++++----- .../plugins/Treatments/TreatmentsPlugin.java | 3 ++- .../TreatmentsTempTargetFragment.java | 16 +++++++++--- 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/data/Intervals.java b/app/src/main/java/info/nightscout/androidaps/data/Intervals.java index 772c73b4b1..a76ea9b4f8 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/Intervals.java +++ b/app/src/main/java/info/nightscout/androidaps/data/Intervals.java @@ -16,20 +16,19 @@ import info.nightscout.androidaps.interfaces.Interval; public abstract class Intervals { - LongSparseArray rawData = new LongSparseArray<>(); // oldest at index 0 + LongSparseArray rawData = new LongSparseArray(); // oldest at index 0 public Intervals reset() { - rawData = new LongSparseArray<>(); + rawData = new LongSparseArray(); return this; } - public void add(T newInterval) { - rawData.put(newInterval.start(), newInterval); - merge(); - } - protected abstract void merge(); + /** + * The List must be sorted by `T.start()` in ascending order + * + * */ public void add(List list) { for (T interval : list) { rawData.put(interval.start(), interval); diff --git a/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java b/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java index 182e2cf76f..38193a22c9 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java +++ b/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java @@ -12,19 +12,31 @@ import info.nightscout.androidaps.interfaces.Interval; public class OverlappingIntervals extends Intervals { protected void merge() { - for (int index = 0; index < rawData.size() - 1; index++) { - Interval i = rawData.valueAt(index); - long startOfNewer = rawData.valueAt(index + 1).start(); - if (i.originalEnd() > startOfNewer) { - i.cutEndTo(startOfNewer); + boolean needToCut = false; + long cutTime = 0; + + for (int index = rawData.size()-1; index > 0; index--) { //begin with newest + Interval cur = rawData.valueAt(index); + if (cur.isEndingEvent()){ + needToCut = true; + cutTime = cur.start(); + } else { + //event that is no EndingEvent might need to be stopped by an ending event + if(needToCut&&cur.end() > cutTime){ + cur.cutEndTo(cutTime); + } } } } @Nullable public T getValueByInterval(long time) { - int index = binarySearch(time); - if (index >= 0) return rawData.valueAt(index); + for (int index = rawData.size()-1; index > 0; index--) { //begin with newest + T cur = rawData.valueAt(index); + if (cur.match(time)){ + return cur; + } + } return null; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java index 1c156cf146..6a7f8c0873 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java @@ -20,6 +20,7 @@ import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.data.Intervals; import info.nightscout.androidaps.data.NonOverlappingIntervals; +import info.nightscout.androidaps.data.OverlappingIntervals; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.ProfileIntervals; import info.nightscout.androidaps.db.ExtendedBolus; @@ -50,7 +51,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { public static List treatments; private static Intervals tempBasals = new NonOverlappingIntervals(); private static Intervals extendedBoluses = new NonOverlappingIntervals(); - private static Intervals tempTargets = new NonOverlappingIntervals(); + private static Intervals tempTargets = new OverlappingIntervals(); private static ProfileIntervals profiles = new ProfileIntervals<>(); private static boolean fragmentEnabled = true; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTempTargetFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTempTargetFragment.java index e47ed3c8e9..2b3f310b38 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTempTargetFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/fragments/TreatmentsTempTargetFragment.java @@ -47,9 +47,11 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli public class RecyclerViewAdapter extends RecyclerView.Adapter { Intervals tempTargetList; + TempTarget currentlyActiveTarget; RecyclerViewAdapter(Intervals TempTargetList) { this.tempTargetList = TempTargetList; + currentlyActiveTarget = tempTargetList.getValueByInterval(System.currentTimeMillis()); } @Override @@ -80,10 +82,18 @@ public class TreatmentsTempTargetFragment extends Fragment implements View.OnCli holder.reasonLabel.setText(""); holder.reasonColon.setText(""); } - if (tempTarget.isInProgress()) - holder.date.setTextColor(ContextCompat.getColor(MainApp.instance(), R.color.colorActive)); - else + if (tempTarget.isInProgress()) { + if(tempTarget == currentlyActiveTarget){ + // active as newest + holder.date.setTextColor(ContextCompat.getColor(MainApp.instance(), R.color.colorInProgress)); + } else { + // other's that might become active again after the latest (overlapping) is over + holder.date.setTextColor(ContextCompat.getColor(MainApp.instance(), R.color.colorActive)); + } + } + else { holder.date.setTextColor(holder.reasonColon.getCurrentTextColor()); + } holder.remove.setTag(tempTarget); } From d5599f1f00ae09fe4e1950462772681fc0253367 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 16 Jul 2017 16:00:04 +0200 Subject: [PATCH 03/18] catch TransactionTooLargeException --- .../broadcasts/BroadcastTreatment.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java index 382d8734dd..d56e75ba73 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; import android.os.Bundle; +import android.os.TransactionTooLargeException; import org.json.JSONArray; import org.json.JSONException; @@ -46,9 +47,17 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + try { + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + log.debug("TREAT_ADD " + part.length() + " " + x.size() + " receivers"); + } catch (RuntimeException exception){ + if(exception.getCause() instanceof TransactionTooLargeException){ + log.error("TREAT_ADD " + part.length() + " ERROR: no receiver size, CAUSE: " + exception.getMessage()); + } else { + throw exception; + } + } - log.debug("TREAT_ADD " + part.length() + " " + x.size() + " receivers"); } } From c64c5f54015804ba8c3430b5ec0c5fb5bd235a19 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 16 Jul 2017 16:38:01 +0200 Subject: [PATCH 04/18] NS client quickfix - catch even more --- .../NSClientInternal/broadcasts/BroadcastTreatment.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java index d56e75ba73..baf81c45c9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java @@ -50,12 +50,8 @@ public class BroadcastTreatment { try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("TREAT_ADD " + part.length() + " " + x.size() + " receivers"); - } catch (RuntimeException exception){ - if(exception.getCause() instanceof TransactionTooLargeException){ - log.error("TREAT_ADD " + part.length() + " ERROR: no receiver size, CAUSE: " + exception.getMessage()); - } else { - throw exception; - } + } catch (Throwable exception){ + log.debug("TREAT_ADD " + part.length() + " ERROR: no receiver size, CAUSE: " + exception.getMessage()); } } From 0d1ff3d721cc14e68c683eadad2c7eaa833c292c Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 16 Jul 2017 16:49:26 +0200 Subject: [PATCH 05/18] ns client quickfix now catch all --- .../broadcasts/BroadcastAckAlarm.java | 8 ++++-- .../broadcasts/BroadcastAlarm.java | 5 ++++ .../broadcasts/BroadcastAnnouncement.java | 4 +++ .../broadcasts/BroadcastCals.java | 4 +++ .../broadcasts/BroadcastClearAlarm.java | 4 +++ .../broadcasts/BroadcastDeviceStatus.java | 8 ++++++ .../broadcasts/BroadcastMbgs.java | 4 +++ .../broadcasts/BroadcastProfile.java | 4 +++ .../broadcasts/BroadcastSgvs.java | 8 ++++++ .../broadcasts/BroadcastStatus.java | 4 +++ .../broadcasts/BroadcastTreatment.java | 28 ++++++++++++++----- .../broadcasts/BroadcastUrgentAlarm.java | 4 +++ 12 files changed, 76 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java index 4e6566e330..8b27da530a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java @@ -29,9 +29,13 @@ public class BroadcastAckAlarm { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + try { + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + log.debug("ACKALARM " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } - log.debug("ACKALARM " + x.size() + " receivers"); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java index 46e2ef1e68..1653a55bc6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java @@ -26,8 +26,13 @@ public class BroadcastAlarm { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + + try{ List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("ALARM " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java index bb4d3de726..a39a59558f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java @@ -27,8 +27,12 @@ public class BroadcastAnnouncement { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("ANNOUNCEMENT " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java index 6601207851..6445f13f94 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java @@ -27,8 +27,12 @@ public class BroadcastCals { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("CAL " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java index 7272a81d95..c3c1e41994 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java @@ -26,8 +26,12 @@ public class BroadcastClearAlarm { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("CLEARALARM " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java index 15d8fe5b5d..1f338b0038 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java @@ -26,9 +26,13 @@ public class BroadcastDeviceStatus { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("DEVICESTATUS " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } public static void handleNewDeviceStatus(JSONArray statuses, Context context, boolean isDelta) { List splitted = BroadcastTreatment.splitArray(statuses); @@ -40,9 +44,13 @@ public class BroadcastDeviceStatus { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("DEVICESTATUS " + part.length() + " records " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java index 1430fbaf1a..7d66352328 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java @@ -27,8 +27,12 @@ public class BroadcastMbgs { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("MBG " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java index 4edad5db33..0b64da8384 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java @@ -28,9 +28,13 @@ public class BroadcastProfile { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("PROFILE " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java index e846b8171b..308a1fe395 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java @@ -28,9 +28,13 @@ public class BroadcastSgvs { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("SGV " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } public static void handleNewSgv(JSONArray sgvs, Context context, boolean isDelta) { @@ -41,9 +45,13 @@ public class BroadcastSgvs { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("SGV " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java index 20055aa108..8edd749a95 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java @@ -38,8 +38,12 @@ public class BroadcastStatus { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("STATUS: " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java index baf81c45c9..8975b54181 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java @@ -32,9 +32,13 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("TREAT_ADD " + treatment.getEventType() + " " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } public static void handleNewTreatment(JSONArray treatments, Context context, boolean isDelta) { @@ -50,9 +54,9 @@ public class BroadcastTreatment { try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("TREAT_ADD " + part.length() + " " + x.size() + " receivers"); - } catch (Throwable exception){ - log.debug("TREAT_ADD " + part.length() + " ERROR: no receiver size, CAUSE: " + exception.getMessage()); - } + } catch (Exception e){ + //for testing + } } } @@ -65,11 +69,11 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - try { log.debug("TREAT_CHANGE " + treatment.getString("_id") + " " + x.size() + " receivers"); - } catch (JSONException e) { + } catch (Exception e) { } } @@ -83,9 +87,13 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("TREAT_CHANGE " + part.length() + " " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } @@ -97,11 +105,13 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - try { + log.debug("TREAT_REMOVE " + treatment.getString("_id") + " " + x.size() + " receivers"); - } catch (JSONException e) { + } catch (Exception e){ + //for testing } } @@ -113,9 +123,13 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("TREAT_REMOVE " + treatments.length() + " treatments " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java index 10d0f068f5..3093e610bf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java @@ -26,8 +26,12 @@ public class BroadcastUrgentAlarm { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); + try { List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); log.debug("URGENTALARM " + x.size() + " receivers"); + } catch (Exception e){ + //for testing + } } } From 7216418f446cb809f19afcea71b7fdd64adfd8ff Mon Sep 17 00:00:00 2001 From: PoweRGbg Date: Mon, 17 Jul 2017 11:37:00 +0300 Subject: [PATCH 06/18] Translated latest additions strings.xml --- app/src/main/res/values-bg/strings.xml | 1071 ++++++++++++++---------- 1 file changed, 612 insertions(+), 459 deletions(-) diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 0589e0a982..e1c69f31af 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -1,159 +1,53 @@ - Closed Loop - Open Loop - APS режим - Ср. изменение - Базал - КЗ достъпна в NS - Болус - Приложено ограничение за болус - Откажи - Въглехидрати - Приложено ограничениe за въгл. - Careportal - Известие - Проверка на КЗ - Корекция с въглехидр. - Смяна на сензор - Рестарт на сензор - Комбиниран болус - Болус за корекция - Физ. активност - Смяна на резервоар - Болус за осн. хранене - Абсолютна - ВХ - ВХ след - Продължителност - min - Въведено от - Време - Инсулин - Глюкомер - Бележки - Друго - Процент - Профил - Сензор - Разделяне - Бележка - OpenAPS оффлайн - Смяна на профил - Смяна на сет - Въпрос - Болус за закуска - Край на временен базал - Начало на временен базал - Променете данните! - Конфигурация - APS - Източник на КЗ - Ограничения - Основен - Loop - Профил - Помпа - Временен базал - Treatments - Потвърждение - Приложено ограничение! - Нарушено ограничение - Czech - дни - Изменение: - Време - English - Enter new treatment: - КЗ - Loop - APS - След приложени ограничения - Зададено на помпата - Loop отказан от ограниченията - Manual enacts - Минимална продължителност - Архивиране - Изход + Сигурност на лечението + Максимален инсулин при болус [единици] + Максимални въглехидрати [гр] + Опции - Обнови treatments от NS + Обнови леченията от NS + Резервно копие + Тест на аларма Нулирай базата данни - Тест на аларми - Не е избран APS или изчислен резултат - Не се изискват промени - Не е зареден профил от NS - Използване на абсолютни стойности - NSClient - Активен профил - Базални стойности: - DIA (Време на действие на инсулина): - IC (Инсулин/въглехидр.): - НЕ Е ЗАДАДЕН ПРОФИЛ - Целeва КЗ: - Единици - Цели - Старт - Проверка - Действие: + Сигурни ли сте че искате да изтриете всички данни? + Изход + Използвай удължен болус за над 200% + DanaR Bluetooth устройство + Използване само на абсолютни стойности на базал + Рестартирайте телефона или AndroidAPS от системните натройки \nили Android APS няма да записва проблемите (което е важно за работата на алгоритъма)! Цел: - OK - Настоящ базал - Модулът е забранен - КЗ стастус - Входни параметри - IOB данни - Последно зададено - Последно изпълнение - Данни за хранене - Долна граница - Няма данни за КЗ - Няма данни за профил - Няма данни за помпа - Профил - Искане - Резултат - Старт сега - Достъпно е ново предложение - Преглед - Калкулатор - Базална стойност - % (100% = current) - Болус - NS профил - Статус на помпа в NS - Стойност - Основание - Безопасност - Задай нов удължен болусs: - Приложи нов временен базал: - Обикновен профил + Действие: + Стартирай + Провери + Единици + DIA (Време на действие на инсулина): + Active profile + IC (Инсулин/въглехидр.): + ISF (Инс.чувствителност): + Базал + Целeва КЗ: + НЕ Е ЗАДАДЕН ПРОФИЛ + Инсулин: + Вълехидрати: + IOB: + IOB: + Активен: + Общо IOB: + Общо активен IOB: + Време: + Съотношение: + Инс: IOB: Общо IOB: - Инс: - Скорост: - Време: - Грешка при болус - Treatments - Активен: - ВХ: - Инсулин: - IOB: - Общо активен IOB: - Общо IOB: Количество въглехидрати Количество инсулин - Базален IOB КЗ - Болус IOB ВХ Корекция - ОБЩО - Ед. - Макс. лимит на болус - Макс. лимит на въглехидрати - Tratments safety - Неподържана версия на NSClient - Виртуална помпа + Ед + IOB от болуси + ОБШО + Старт сега Базова базална стойност Батерия Удължен болус @@ -162,382 +56,641 @@ Грешка в базата данни Временен базал ВИРТУАЛНА ПОМПА - xDrip - Удължен болус - Временен базал - ISF (Инс.чувствителност): - NSClient не е инсталиран. Записът е загубен! - Тип събитие - КЗ тип + Последно изпълнение + Параметри на входа + КЗ стастус + Настоящ базал + IOB данни + Профил + Данни за хранене + Резултат + Няма данни за КЗ + Няма зададен профил + Няма избана помпа + Не се изисква промяна + Искане + Долна граница(КЗ) + Стойност + Срок + Основание + КЗ + Промяна + Delta: + Средна промяна + + Конфигурация + Цели OpenAPS MA + Общ + NS Профил + Обикновен профил + TempBasal + Treatments + Виртуална помпа + Careportal + + + Помпа + Treatments + Временен базал + Профил + APS + Общи + дни + Минимална продължителност + Ограничения + + Цикъл + Цикъл + APS + След ограничения + Зададено на помпата + Последно зададено + OK + Откажи + НЕ Е ИЗБРАН APS ИЛИ НЯМА РЕЗУЛТАТ ОТ НЕГО + Сигурност + Плъгина е изключен + Нарушено ограничение + Грешка при подаване на болус + Грешка при подаване на временен базал + Стойност на базал + % (100% = текущ) + Приложи нов временен базал: + Болус + Калкулатор + Приложено ограничение! + Потвърждение + Въведете ново лечение: + Болус + Bolus: + Базал + Basal: + Въглехидрати + Променете данните! + Задай нов удължен болус: + Източник на данни за КЗ + xDrip + NSClient + APS режим + + Затворен цикъл + Отворен режим + изключен + Изключи + Влючи + + Има ново предложение + Несъвместима версия на NSClient + Несъвместима версия на Nightscout + NSClient не е открит. Записът е загубен! + КЗ се вижда в NS + Статуса на помпа е достъпен в NS + Ръчно приложени + ЦИКЪЛА Е СПРЯН ОТ ОГРАНИЧЕНИЯТА + Czech + English + Базален IOB + Приложено ограничение на болус + Приложено ограничение на въглехидратите + Проверка на КЗ + Известие + Бележка + Въпрос + Физ. активност + Смяна на сет + Смяна на сензор + Старт на сензор + Смяна на резервоар + Смяна на профил + Болус за закуска + Болус за основно хранене + Болус корекция + Комбиниран болус + Старт на временен базал + Край на временен базал + Корекция с въглехидрати + OpenAPS спрян + + Тип събитие + Друго + Глюкомер + Сензор + ВХ + Инсулин + ВХ след + Разделяне + Продължителност + Процент + Абсолютна + мин + Бележки + Време на събитие + Профил + Въведен от + Тип КЗ + Още не е зареден профила от NS + Временен базал + Удължен болус Nightscout версия: ИЗПРАТИ Липсва - Разрешено - Видимо + Разрешен + Видим Нагоре Настройките са експортирани + Експортирай настройките в + Импорт на настройки от Настройките са импортирани - Импортирай настройки от: - Файлът не съществува - Експортирай настройки до + Файлът не е намерен Експорт настройки Импорт настройки German - Макс. стойност, която е в границите + Spanish + Greek + Italian + Russian Мин. стойност, която е в границите + Максималната стойност на КЗ за да бъде в границите. + Максимално позволен временен базал Е/ч Макс. лимит на временен базал [Е/ч] - Български - Макс. лимит на не болус IOB подаван от openAPS - Свързан - Избраното устройство не съществува - Прекъснат - Свързва се - Грешка при свързване с помпа - DanaR Bluetooth устройство - DanaR настройки - Използвай удължен болус за над 200% - DanaR - РАЗБИРАМ И СЕ СЪГЛАСЯВАМ - Език - Сигурност - Синхронизирай помпата с профила - Няма bluetooth адаптер - Nightscout + Максимален IOB + Този параметър се нарича макс IOB в OpenAPS\nПо подразбиране е 0. След няколко дни или седмици можете да го увеличите. + Bulgarian Разбрах + Език + + DanaR + Свързване + Свързана + Не е сврзана + Синхронизирай помпата с профила + DanaR настройки + Nightscout End User License Agreement MUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - +XXXXXXXXXX;+YYYYYYYYYY - Болус %.2fU беше подаден успешно - Bolus failed - Откажи временен базал - Последно свързване - Изчаква резултат - SMS комуникатор - Позволени телефонни номера - Успех - To deliver bolus %.2fU reply with code %s - Отдалечен болус не е разрешен - Обнови профила + Разбирам и приемам + Съхрани + Не е открит Bluetooth адаптер + Избраното устройство не е открито + Грешка при свързване с помпата + IOB на помпата + Инсулин за деня + Последен болус: + ч по-рано + Грешни входящи данни + Неправилна стойност + Презареди профил + Виж профил + Приложено + Коментар + Успешен Процент + Абсолютна + Откажи временен базал + SMS комуникатор + Чакам резултат от помпата + Разрешени телефонни номера + +XXXXXXXXXX;+YYYYYYYYYY + За да пуснете болус от %.2fЕ отговорете с код %s + За да изпратите калибрация %.2f отговорете с код %s + Болус отказан + Болус %.2fЕд беше подаден успешно + Подавам болус %.2fЕ + Болус от %.2fЕ подаден успешно + Подавам %.2fЕ + Позволи отдалечени команди чрез SMS + Отдалечено подаване на болус - забранено! + Пръст Сензор Ръчно - Пръст - Неправилно зададени стойности - Виж профила + Времена цел + Откажи временна цел DanaR профил DIA (Време на действие на инсулина) ч.: - Последен болус: - Неправилни входни данни - Единици за деня - Временна цел - Отакажи временна цел - Коментар - Абсолютна - Запушване - Доставено - Подаване на %.2fU Е инсулин - Стоп - Спрян - НАТИСНАТ СТОП - КЗ цел за изчисления - Помпата е заета - Изчаква за помпа. Click to refresh. - Грешна парола за помпата! - Достигнахте лимита - аларма - базален по часове - въглехидрати - грешка - кръвна захар + Продължителност на инсулиновата активност + Неуспешно обноввяване на базалния профил История + Презареди + Качване + E болус + DS болус + DE болус + грешка + пълнене + базал по часове + КЗ + въглехидрати + аларма + Общо %d записа качени + S болус Аларми Базален по часове Болуси Въглехидрати - Свъзва се за %d сек. - Инсулин за деня + Дневен инсулин Грешки - Кръвна захар + КЗ Пълнене - Прекъсване - Презареждане - IOB на помпата - Парола за помпа - пълнене - Общо %d записа са изпратени - Приложено - S bolus - Не може да се обнови базалния профил - h ago - Потвърдете, че КЗ и данните от помпата са достъпни в Nightscout - DE bolus - DS bolus - E bolus + Спиране + Опитвам да се свържа през последните %d с + Парола за помпата + Грешна парола за помпата! + Помпата е заета + Доставен + Спрян + Запушване + Спри + Натиснат е СТОП! + Чакам помпата + Чакам резутат. Натисни за обновяване. + Ще доставя %.2fЕ Настройка на визуализацията и наблюдението, а също и анализиране на базалните нужди и коефициенти - Стартиране в Open loop режим за няколко дни и ръчно прилагане на много временни базали - Стартиране на Open Loop + Работете в Отворен режим няколко дни и ръчно прилагайте на много временни базали + Стартиране на Отворен режим Определяне на макс. лимит на базалния инсулин и настройване в помпата и програмата - Разбиране на вашият open loop режим, включително препоръчваните временни базали - Стартиране на Closed loop с макс. IOB=0 без твърде много събития тип Low suspend - Активиране на допълнителни функции за дневно използване, включително и advanced meal assist - Стартиране на Close loop в режим Low Suspend - Стартирайте за няколко дни и поне една нощ без аларми за ниска КЗ - Настройване на Closed Loop, повишаване на максималният IOB над 0 и понижаване на целевите нива на КЗ - Една седмица успешно дневно използване с редовно въвеждане на въглехидрати + Разбиране на вашият Отворен режим, включително препоръчваните временни базали + Стартиране на Затворен цикъл с изключване на базал при ниска КЗ + Стартиране на Затворен цикъл с макс. IOB=0 без твърде много събития тип ниска КЗ + Настройване на Затворения цикъл чрез повишаване на максималният IOB над 0 и понижаване на целевите нива на КЗ + Прекарайте няколко дни по този начин, като поне една нощ нямате аларма за ниска КЗ. Настройване на базалния инсулин и коефициенти ако е необходимо и активиране на auto-sens - Качване - Подава %.2fU - Spanish - Не е избран профил - Korean - %s е недопустима стойност - Текст на бутон: - Корекция - Loop забранен - Въглехидрати: - Валидно: - Добави - Редактирай - Премахни - Бърз болус - Настройки за бърз болус - Не са позволени отдалечени настройки - To start basal %.2fU/h reply with code %s - To stop temp basal reply with code %s + Една седмица успешно дневно използване с редовно въвеждане на въглехидрати + Активиране на допълнителни функции за дневно използване, включително и advanced meal assist + Достигнахте лимита + Целева стойност използвана в изчисленията + Няма избран профил Loop has been disabled Loop has been enabled Loop is disabled Loop is enabled - Позволи команди през SMS + %.2f ограничен до %.2f + Стойността %s е извън границите + Remote basal setting is not allowed + Remote command is not allowed + To start basal %.2fU/h reply with code %s + To suspend loop for %d minutes reply with code %s + Temp basal %.2fU/h for %d min started successfully + Temp basal start failed + To stop temp basal reply with code %s Temp basal canceled Canceling temp basal failed - Temp basal start failed - Temp basal %.2fU/h for %d min started successfully Uknonwn command or wrong reply - Болус за хранене - Действия + + Бърз болус + Настройки за бърз болус + Текст на бутона: + Въглехидрати: + Валиден от: + Добави + Редакция + Изтрий + Хранене + Корекция + Korean + Actions Стартиран AndroidAPS - Базов профил + NS upload only (изключва синхронизацията) + Само качване на данните в NS. Няма ефект върху данните за КЗ ако локален източник като xDrip е избран. Няма ефект върху профила освен ако не е избран NS-профил. + Помпата не е инициализирана! + Помпата не е инициализирана, профила не е зададен! + Prime/Fill + Моля, уверете се, че стойността съответсва на вашият сет! Този инсулин не се включва в IOB! + Други + Fill/Prime количества нсулин по подразбиране. Бутон 1 Бутон 2 Бутон 3 - Процентен профил - Изпрати към помпата - Редактирай базални стойности - DIA: - Редактирай Инс./ВХ - Редактирай Инс. чувствителност - Fill/Prime стандарта стойност - Моля, уверете се, че стойността съответсва на вашият сет! Този инсулин не се включва в IOB! - mg/dl - mmol/l - Друго: % с който базовият профил ще бъде променен. - Prime/Fill - Помпата не е инициализирана! - Наистина ли искате да нулиратe базата данни? + Точен брой часове, с които ще бъде преместен профила! + Изпрати в помпата + Единици: + мг/дл + ммол/л + DIA(продължителност на инсулиновото дейстие): Целеви диапазон: - Брой часове, с които ще бъде преместен профила! - Мерни единици: - NS upload only (изключва синхронизацията) - NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used. - Моля рестартирайте телефона или AndroidAPS, в противен случай информацията за грешки няма да се запише(важно за да се потвърди, че алгоритъмът работи правилно) - Край на временен базал + Редактирай базални стойности + Редактирай Инс. чувствителност + Редактирай Инс./ВХ + Базов профил: + Процентен профил + край на временен базал Старт на временен базал - Базал: - Базалните стойности са под минимума. Не е зададен профил! + Диапазон за визуализация + Стойност на линиите за ниска и висока КЗ (mmol/l) за телефона и часовника + Ниска КЗ под + Висока КЗ над + Часовник + Препрати всички дани + Отвори настройките на часовника + Грешка в промпата + Изтощена батерия + Помпа изключена Батерията на помпата е изтощена - КЗ: + DanaR Korean + Избран е грешен тип помпа + Базал: + Неуспешно задаване на базален профил + Профила на помпата е обновен Забрани EasyUI режим в помпата Разреши удължен болус в помпата Промени режима от U/d на U/h в помпата - DanaR за Корея - Горна линия - Последна КЗ: - Долна линия - Изтощена батерия - Отвори Опции на часовника - Стойност на линиите за ниска и висока КЗ (mmol/l) - Диапазон на визуализация - Неуспешно задаване на базален профил - Базалният профил е обновен - Помпата не е инициализирана, профила не е зададен! - Грешка на помпата - Помпата е изключена - Изпрати всички данни отново - Wear - Избран е грешен тип помпа - преди %d м. - ДЕЙСТВ - WEAR - ВП - TREAT - ВЦeл - ВБ - SMS - ОПРОФ - ПРОф - ОСН - ЦЕЛИ - OAPS - "Loop " - ЛПр - Dana - КОНФ - ППр - CaPr + Базалните стойности са под минимума. Не е зададен профил! + BG: + Last BG: + Писалки + MM640g + Текущи известия + ПЕКАЛЕНО СТАРИ ДАННИ + преди %d мин + %dmin ago + Локален профил + OpenAPS AMA + Краткоср. Δ: + Дългоср. Δ: + Масив от %d елемента. \nАктуална стойност: + Autosens данни + Script debug + Разреши AMA autosens + Обнови от NS + Преди хранене Физ.активност + Премахни запис: DanaR статистика + Комулативна TDD + Експоненциално претеглена TDD Базал Болус - Дата - Стари данни! Натиснете "Презареждане" - Коефициент - Общо базален инс. - Общо базален инс.² TDD - Възможна неточност, ако сте използвали болус за презареждане! - Преди хранене - Greek - Инициализиране ... - Локален профил - Дългоср. изменение - Писалки - OpenAPS AMA - Разреши AMA autosens - Autosens данни - СТАРИ ДАННИ - Текущи известия - Script debug - %.2f ограничено до %.2f - Премахни запис: - Краткоср. Δ: - Къси имена - Bolus %.2fU delivered successfully - Експоненциално претеглена TDD - Комулативна TDD + Дата + Коефициент + # дни Тегло - Дни - MM640g - Масив от %d елемента. Актуална стойност: - Basal: - Bolus: - Delta: - IOB: - %dmin ago - Изчаква за помпа + Възможна неточност, ако сте използвали болус за презареждане! + Стари данни - натиснете "ПРЕЗАРЕДИ" + Общо базален инсулин + ОБИ * 2 + Инициализация ... + ДЕЙСТВ + КОНФ + ЦИК + ОПр + OAPS + Вцел + ЛПр + DANA + ППр + ВБ + ОСН + ВП + NSП + Леч + CP + Цел + WEAR + SMS + Изполвай къси имена + Настройки на параметър Δ КЗ Използвай краткоср. Δ вместо разлика от последната КЗ Полезно при данни за КЗ с много шум - Приближава достигане на дневният лимит на иснулин - Стартира подаване на %.2fU - Изпратена калибрация до xDrip - Копирано в клипборд - Копирай в клипборд - Продължителност на инсулиновата активност - Прекъсване - Не показвай отново - Полето не може да бъде празно - Позволени са само числа - Позволени са числа между %1$s - %2$s - Телефонният номер не е валиден - Изпълнение - Получава статус на помпа - Покажи лог - Максимално позволен временен базал Е/ч - Максимален базален IOB - Калибрация - Помпата е спряна - xDrip+ не е инсталиран - Грешна парола - Изпраща статус в NS - Настройки на виртуална помпа - Качва базални стойности - Отключи настройки - Спиране на удължен болус - Спиране на временен базал - Не е разрешена отдалечена калибрация - Грешка при подаване на временен базал - Изпращане на калибрация %.1f към xDrip? - Настройки на удължен болус - Парола за настройки - Настройки на временен базал - Помпата е спряна. Натиснете за обновяване - Настройки на параметър Δ КЗ - Калибрация на КЗ - Възрастен Разширени настройки - Дете - Изчисти опашката - Изчисти log - - Изпрати сега - неуспешно - проверете телефона - Недостъпно - NSCLIENT няма достъп. Грешна API secret? - вътрешен NSClient - Autoscroll - Ще бъде използвано в поле въведено от - Въведи име на устройство - Име на устройство - Въведи API secret (мин. 12 символа) - Вътрешен NSClient - URL: - Въведи Nightscout URL - Nightscout URL - NS API secret - NS API secret - NSCL - Възраст на потребителя - Изберете възраст за определяне лимитите на безопасност - На пауза + Медел: %02X Протокол: %02X Код: %02X Профил + По подразбиране: 3\nТова е основен параметър в сигурността на OpenAPS. Той лимитира максималният базал да бъде 3 пъти най-голямата стойност от дневните базали. Не би трябвало да има нужа от промяна, но внимавайте, защото от опит сме проверили, че максимумите са “3x от най-високия дневен; 4x от текущия”. + current_basal_safety_multiplier + По подразбиране: 4\nТова е другият основен параметър в сигурността на OpenAPS, и другата половина от "3x от най-високия дневен; 4x от текущия". Това означава, че независимо от макс базал настроен в помпата, стойността на базала не може да е по-висока от тази стойност умножена по стойността на базала за текущият час от денонощието. Това е с цел да предпази от прекалено високи стойности на максималния базал преди да разбират как работи алгоритъма. Повечето от Вас няма да имат нужда от смяна на тази стойност и могат да се справят с настойки на другите параметри. + autosens_max + По подразбиране: 1.2\nТова е максималният множител на autosens (а скоро autotune) за да позволи 20% максимален лимит на autosens коефициента, който от своя страна настройва базалите, колко може да намали ISF, и колко ниско може да свали целевата КЗ. + autosens_min + По подразбиране: 0.7\nДругата част от сигурността на autosens, слагайки ограничение на колко ниско може да ограничи базалите, колко да повиши чувствителността (ISF) и целевите КЗ. + autosens_adjust_targets + По подразбиране: разрешено\nТова позволява на autosens да променя и целевите КЗ(освен чувствителност и базал). + bolussnooze_dia_divisor + По подразбиране: 2\nBolus snooze се активира след като поставите болус за основно хранене, така цикъла няма да пуснка/намаля базалите веднага след като сте се хранили. Примерът тук е с 2; така при 3 часа DIA това ще означава че bolus snooze ще бъде внимателно изместен 1.5 часа (3DIA/2). + min_5m_carbimpact + По подразбиране: 3.0\nТова е настройка на количеството на покачване на КЗ при усвояване на въглехидратите за всеки 5 минути. По подразбиране 3мг/дл/5мин. Това се отразява на това колко бързо се усвояват COB според алгоритъма, и как това се отразява в предвиждането на КЗ, когато тя не се покачва или пада с различен темп от очакваното. + Attention!\nNormally you do not have to change these values below. Please CLICK HERE and READ the text and make sure you UNDERSTAND it before change any of these values. + http://openaps.readthedocs.io/en/latest/docs/walkthrough/phase-3/beyond-low-glucose-suspend.html + Позволени са само числа + Позволени са числа между %1$s - %2$s + олето не може да бъде празно + Телефонният номер не е валиден + Грешен тел номер за SMS + Копирай + Копирано + Покажи лог + Калибрация + Калибрация + Изпрати калибрация %.1f на xDrip? + xDrip+ не е инсталиран + Калибрацията е изпратена към xDrip + Не е разрешена отдалечена калибрация + Неуспешно. Получаването трябва да е разрешено в xDrip. + xDrip не получава калибрации + Не показвай отново + Помпата е спряна. Натиснете за обновяване + Помпата е спряна + Получавам статус на помпата + Настройвам временен базал + Спирам временен базал + Настойвам удължен болус + Спирам удължен болус + Обновявам базалите + Спирам връзката + Изпълнявам + Настойки Виртуална Помпа + Качвам статуса в NS + Грешна парола + Парола за настройки + Отключи настройките + Близо до максмалния дневен инсулин + вътрешен NSClient + NSCI + URL: + Autoscroll Рестарт - Покажи опашката - xDrip не приема калибрация - Статус: - Тийнейджър - Раздели IOB на болус и базал IOB на часовника - Покажи подробен IOB - Настройки на часовник - To send calibration %.2f reply with code %s - Calibration sent. Receiving must be enabled in xDrip. - Invalid SMS phone number + Вътрешен NSClient + Nightscout адрес + Въведете Nightscout URL + NS API парола + NS API secret + Въведете NS API secret (мин 12 символа) + Име на устройството + Въведете името на телефона + Ще се използва за полето enteredBy + Изпрати сега + Изчисти опашка + Покажи опашка Опашка: - Firmware + Статус: + пауза + nsclientinternal_url + nsclientinternal_api_secret + danar_bt_name + danar_password + danar_useextended + danar_visualizeextendedaspercentage" + danarprofile_dia + Изчисти лога + nsclientinternal_autoscroll + nsclientinternal_paused + NSCLIENT права за запис. Грешен API secret? + Wear настройки(часовник) + Показвай подробен IOB + аздели IOB на болус и базал IOB на часовника + неуспешно - моля проверете в телефона + Недостъпно + smscommunicator_allowednumbers + smscommunicator_remotecommandsallowed + Възраст на пациента + Дете + Тийнейджър + Възрастен + age + child + teenage + adult + Изберете възраст за определяне лимитите на безопасност + I_understand Glimp - Устройството изглежда не подържа изключване на оптимизиране на батерията - COB - Инсулин - Bluetooh статус - DEV - Деактивиран Loop - Изключи помпата за 10 часа - Изключи помпата за 1 час - Изключи помпата за 2 часа - Изключи помпата за 30 мин. - Изключи помпата за 3 часа - Разреши Loop - Разреши суперболус - Разреши функцията суперболус в съветника. Не я разрешавайте докато не научите какво наистина прави. ТОВА МОЖЕ ДА СЪЗДАДЕ ОПАСНОСТ ОТ ПРЕДОЗИРАНЕ С ИНСУЛИН. - Бързодействащ инсулин - Бързодействащ инсулин с удължаване - ИНС - Loop меню - Loop спрян - Суперболус (%d м.) - За приложението - Спрян (%d м.) - %s трябва да изключите оптимизация на батерията за оптимална работа - Отбелязвай старт на програмата в NS + Устройството изглежда не подържа изключване на оптимизиране на батерията! Моля, позволете рарешение - - Изключи Loop за 10 ч. - Суперболус - "Изключи Loop за 1ч. " - Изключи Loop за 2ч. - Изключи Loop за 3ч. - 15min trend + %s се нуждае от зключване на оптимизиране на батерията за пълна функционалност + Цикъл изключен + Изключен (%d мин) + Суперболус (%d мин) + Меню Цикъл + Изключи цикъла за 1ч + Изключи цикъла за 2ч + Изключи цикъла за 3ч + Изключи цикъла за 10 ч + Изключи помпата за 30 мин. + Изключи помпата за 1 ч + Изключи помпата за 2 ч + Изключи помпата за 3 ч + Изключи помпата за 10 ч + Възстанови + Wrong duration + Loop suspended + Loop resumed + промяна за 15мин COB - Italian + Суперболус + Записвай всяко стартиране на AndroidAPS в NS + ns_logappstartedevent + Рестартирам за да се приложат новите настройки. + DanaRv2 + Инсулин + Бързодействащ инсулин + Novorapid, Novolog, Humalog + ИНС + Бързодействащ инсулин с удължаване + key_usersuperbolus + Разреши използването на Суперболус + Разреши функцията суперболус в съветника. Не я разрешавайте докато не научите какво наистина прави. ТОВА МОЖЕ ДА СЪЗДАДЕ ОПАСНОСТ ОТ ПРЕДОЗИРАНЕ С ИНСУЛИН. + IOB + COB + PRE + BAS + Firmware + Последно свързване + Bluetooh статус + За приложението + Missing SMS permission + DEV + xDrip статус (часовник) + xDrip статус (часовник) + xds + Показвай BGI + Добави BGI към статуса + Без качване на данни в NS + Всички данни за NS се пропускат. AAPS е свързан с NS, но не прави промени в NS + ns_upload_only + ns_noupload + Стъпка за базал + Стъпка за болус + Удължен болус + Вр. цел + Спри удължен болус + Възраст на сензора + Възраст на канюла + Възраст на инсулина + часа + Тип базал + ISF липсва в профила. По подразбиране. + IC липсва в профила. По подразбиране. + Базал липсва в профила. По подразбиране. + Целева КЗ липсва в профила. По подразбиране. + Грешен профил !!! + Смяна на профил + Възраст на батерията на помпата + Смяна на батерия + Опции за аларми + nsalarm_urgent_high + nsalarm_high + nsalarm_low + nsalarm_urgent_low + nsalarm_staledata + nsalarm_urgent_staledata + nsalarm_staledatavalue + nsalarm_urgent_staledatavalue + Много висока + Висока + Ниска + Много ниска + Текущата стойност е %f + Няма данни + Много стари данни + Когато няма данни повече от [мин] + Много стари данни при повече от [мин] + Интервал за autosens [ч] + Брой часове назад за определяне на чувствителността (приемът на въглехидрати е изключен) + openapsama_autosens_period + RAT + do_not_track_profile_switch + Игнорирай събитията от тип Смяна на профил + Всички смени на профила се игнорират и винаги се използва текущия профил + Помпа + OpenAPS + Устройство + Uploader + Определяне на чувствителност + ЧУВСТВ + Алгоритъм на Oref0 + Алгоритъм на AAPS + Настройки за абсорбция + absorption_maxtime + Максимално време за усвояване на храненето [ч] + Брой часове, за които се очаква храненето да бъде напълно усвоено в организма + rangetodisplay + Показвай удължените болуси като % + ВСенз + ВИнс + ВКан + ВБат + OAPS + UPLD + БАЗА + УД. + Заключен екран + Закл + Когато включите Autosense feature трябва да въвеждате ВСИЧКИ въглехидрати. В противен случай те ще се изчисляват грешно като повишена чувствителност!! + SMB резултат + SMB + SMB + key_smb + SMB enable + Super Micro Boluses is used when there are COB and more insulin is needed + UAM + UAM + key_uam + Enable UAM + UnAnounced Meals - Необявени хранения - трябва да помага при неправилно изчислени и въведени въглехидрати. + Rumen SMB + Алгоритъм на Среднопретеглената стойност + OK + Откажи + трябва да е активно за да изпратя стойностите към помпата! + Не всички профили са заредени! + Стойностите не са запазени! From 387cfcccafbf9cca28e326738f05637847e896e1 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 16 Jul 2017 01:28:08 +0200 Subject: [PATCH 07/18] wear menu simplification --- .../plugins/Wear/ActionStringHandler.java | 11 +- .../actions/TempTargetActivity.java | 2 +- .../interaction/menus/FillMenuActivity.java | 30 +++--- .../interaction/menus/MainMenuActivity.java | 102 +++++++----------- .../menus/MainMenuRestrictedActivity.java | 53 --------- .../interaction/menus/StatusMenuActivity.java | 30 ++---- .../interaction/utils/MenuListActivity.java | 6 +- wear/src/main/res/xml/preferences.xml | 9 +- 8 files changed, 75 insertions(+), 168 deletions(-) delete mode 100644 wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuRestrictedActivity.java diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java index a881464e82..8a1f44b8b7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java @@ -157,14 +157,9 @@ public class ActionStringHandler { rMessage = getPumpStatus(); } else if ("loop".equals(act[1])) { rTitle += " LOOP"; - rMessage = getLoopStatus(); - - } else if ("targets".equals(act[1])) { - rTitle += " TARGETS"; - rMessage = getTargetsStatus(); - } else if ("oapsresult".equals(act[1])) { - rTitle += " OAPS RESULT"; - rMessage = getOAPSResultStatus(); + rMessage = "TARGETS:\n" + getTargetsStatus(); + rMessage += "\n\n" + getLoopStatus(); + rMessage += "\n\nOAPS RESULT:\n" + getOAPSResultStatus();; } } else if ("wizard".equals(act[0])) { diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/TempTargetActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/TempTargetActivity.java index 2981066bfb..4b04a72cdc 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/TempTargetActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/TempTargetActivity.java @@ -50,7 +50,7 @@ public class TempTargetActivity extends ViewSelectorActivity { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); isMGDL = sp.getBoolean("units_mgdl", true); - isSingleTarget = sp.getBoolean("singletarget", false); + isSingleTarget = sp.getBoolean("singletarget", true); } diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/FillMenuActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/FillMenuActivity.java index da8daa80cb..a4d1a3d181 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/FillMenuActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/FillMenuActivity.java @@ -14,7 +14,7 @@ public class FillMenuActivity extends MenuListActivity { @Override protected String[] getElements() { - return new String[] { + return new String[]{ "Preset 1", "Preset 2", "Preset 3", @@ -23,23 +23,17 @@ public class FillMenuActivity extends MenuListActivity { } @Override - protected void doAction(int position) { - switch (position) { - case 0: - ListenerService.initiateAction(this, "fillpreset 1"); - break; - case 1: - ListenerService.initiateAction(this, "fillpreset 2"); - break; - case 2: - ListenerService.initiateAction(this, "fillpreset 3"); - break; - case 3: - Intent intent = new Intent(this, FillActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - break; + protected void doAction(String action) { + if ("Preset 1".equals(action)) { + ListenerService.initiateAction(this, "fillpreset 1"); + } else if ("Preset 2".equals(action)) { + ListenerService.initiateAction(this, "fillpreset 2"); + } else if ("Preset 3".equals(action)) { + ListenerService.initiateAction(this, "fillpreset 3"); + } else if ("Free amount".equals(action)) { + Intent intent = new Intent(this, FillActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.startActivity(intent); } - } } diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java index aeea844f42..2d8b29d10a 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java @@ -5,6 +5,8 @@ import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; +import java.util.Vector; + import info.nightscout.androidaps.BuildConfig; import info.nightscout.androidaps.data.ListenerService; import info.nightscout.androidaps.interaction.AAPSPreferences; @@ -39,74 +41,50 @@ public class MainMenuActivity extends MenuListActivity { boolean showPrimeFill = sp.getBoolean("primefill", false); - return new String[] { - "TempT", - "Bolus", - "Wizard", - "Settings", - "Re-Sync", - "Status", - showPrimeFill?"Prime/Fill":""}; + boolean showWizard = sp.getBoolean("showWizard", true); + + Vector menuitems = new Vector(); + menuitems.add("TempT"); + menuitems.add("Bolus"); + if(showWizard) menuitems.add("Wizard"); + menuitems.add("Settings"); + menuitems.add("Status"); + if (showPrimeFill) menuitems.add("Prime/Fill"); + + return menuitems.toArray(new String[menuitems.size()]); } @Override - protected void doAction(int position) { + protected void doAction(String action) { Intent intent; - if(!BuildConfig.WEAR_CONTROL) { - switch (position) { - case 0: - intent = new Intent(this, AAPSPreferences.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - break; - case 1: - ListenerService.requestData(this); - break; - } - return; + if ("Settings".equals(action)) { + intent = new Intent(this, AAPSPreferences.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.startActivity(intent); + } else if ("Re-Sync".equals(action)) { + ListenerService.requestData(this); + } else if ("TempT".equals(action)) { + intent = new Intent(this, TempTargetActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.startActivity(intent); + } else if ("Bolus".equals(action)) { + intent = new Intent(this, BolusActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.startActivity(intent); + } else if ("Wizard".equals(action)) { + intent = new Intent(this, WizardActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.startActivity(intent); + } else if ("Status".equals(action)) { + intent = new Intent(this, StatusMenuActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.startActivity(intent); + } else if ("Prime/Fill".equals(action)) { + intent = new Intent(this, FillMenuActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.startActivity(intent); } - - - switch (position) { - case 0: - intent = new Intent(this, TempTargetActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - break; - case 1: - intent = new Intent(this, BolusActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - break; - case 2: - intent = new Intent(this, WizardActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - break; - case 3: - intent = new Intent(this, AAPSPreferences.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - break; - case 4: - ListenerService.requestData(this); - break; - case 5: - intent = new Intent(this, StatusMenuActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - break; - case 6: - boolean showPrimeFill = sp.getBoolean("primefill", false); - if(showPrimeFill) { - intent = new Intent(this, FillMenuActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - } - break; - } - } } diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuRestrictedActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuRestrictedActivity.java deleted file mode 100644 index 779e9611d2..0000000000 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuRestrictedActivity.java +++ /dev/null @@ -1,53 +0,0 @@ -package info.nightscout.androidaps.interaction.menus; - -import android.content.Intent; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.preference.PreferenceManager; - -import info.nightscout.androidaps.data.ListenerService; -import info.nightscout.androidaps.interaction.AAPSPreferences; -import info.nightscout.androidaps.interaction.actions.BolusActivity; -import info.nightscout.androidaps.interaction.actions.TempTargetActivity; -import info.nightscout.androidaps.interaction.actions.WizardActivity; -import info.nightscout.androidaps.interaction.utils.MenuListActivity; - -/** - * Created by adrian on 09/02/17. - */ - -public class MainMenuRestrictedActivity extends MenuListActivity { - - SharedPreferences sp; - - @Override - protected void onCreate(Bundle savedInstanceState) { - sp = PreferenceManager.getDefaultSharedPreferences(this); - super.onCreate(savedInstanceState); - ListenerService.requestData(this); - } - - @Override - protected String[] getElements() { - return new String[] { - "Settings", - "Re-Sync"}; - } - - @Override - protected void doAction(int position) { - - Intent intent; - switch (position) { - case 0: - intent = new Intent(this, AAPSPreferences.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.startActivity(intent); - break; - case 1: - ListenerService.requestData(this); - break; - } - - } -} diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/StatusMenuActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/StatusMenuActivity.java index a57bd17c8f..58eb0ef254 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/StatusMenuActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/StatusMenuActivity.java @@ -14,32 +14,18 @@ public class StatusMenuActivity extends MenuListActivity { return new String[] { "Pump", "Loop", - "Targets", - "CPP", - "OAPS Result"}; + "CPP"}; } @Override - protected void doAction(int position) { - switch (position) { - - case 0: - ListenerService.initiateAction(this, "status pump"); - break; - case 1: - ListenerService.initiateAction(this, "status loop"); - break; - case 2: - ListenerService.initiateAction(this, "status targets"); - break; - case 3: - ListenerService.initiateAction(this, "opencpp"); - break; - case 4: - ListenerService.initiateAction(this, "status oapsresult"); - break; + protected void doAction(String action) { + if ("Pump".equals(action)) { + ListenerService.initiateAction(this, "status pump"); + } else if ("Loop".equals(action)) { + ListenerService.initiateAction(this, "status loop"); + } else if ("CPP".equals(action)) { + ListenerService.initiateAction(this, "opencpp"); } - } } diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/utils/MenuListActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/utils/MenuListActivity.java index d151196091..9d6fd51126 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/utils/MenuListActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/utils/MenuListActivity.java @@ -22,7 +22,7 @@ public abstract class MenuListActivity extends Activity protected abstract String[] getElements(); - protected abstract void doAction(int position); + protected abstract void doAction(String position); @Override protected void onPause(){ @@ -50,7 +50,7 @@ public abstract class MenuListActivity extends Activity // WearableListView click listener @Override public void onClick(WearableListView.ViewHolder v) { - Integer tag = (Integer) v.itemView.getTag(); + String tag = (String) v.itemView.getTag(); doAction(tag); //ActionsDefinitions.doAction(v.getAdapterPosition(), this); finish(); @@ -105,7 +105,7 @@ public abstract class MenuListActivity extends Activity // replace text contents view.setText(mDataset[position]); // replace list item's metadata - holder.itemView.setTag(position); + holder.itemView.setTag(mDataset[position]); } // Return the size of your dataset diff --git a/wear/src/main/res/xml/preferences.xml b/wear/src/main/res/xml/preferences.xml index 57050ef0f5..b9c6307cac 100644 --- a/wear/src/main/res/xml/preferences.xml +++ b/wear/src/main/res/xml/preferences.xml @@ -121,6 +121,13 @@ app:wear_iconOff="@drawable/settings_off" app:wear_iconOn="@drawable/settings_on"/> + Date: Mon, 17 Jul 2017 16:18:18 +0200 Subject: [PATCH 08/18] wear TDD status --- .../plugins/Wear/ActionStringHandler.java | 128 ++++++++++++++++++ .../interaction/menus/StatusMenuActivity.java | 6 +- 2 files changed, 133 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java index 8a1f44b8b7..c88faad0da 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java @@ -4,8 +4,14 @@ import android.os.Handler; import android.os.HandlerThread; import android.support.annotation.NonNull; +import java.text.DateFormat; import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; +import java.util.LinkedList; +import java.util.List; import info.nightscout.androidaps.BuildConfig; import info.nightscout.androidaps.Config; @@ -15,17 +21,24 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.DetailedBolusInfo; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.BgReading; +import info.nightscout.androidaps.db.DanaRHistoryRecord; import info.nightscout.androidaps.db.DatabaseHelper; import info.nightscout.androidaps.db.Source; import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.interfaces.APSInterface; +import info.nightscout.androidaps.interfaces.DanaRInterface; import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Actions.dialogs.FillDialog; import info.nightscout.androidaps.plugins.Loop.APSResult; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfilePlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Plugin; import info.nightscout.utils.BolusWizard; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; @@ -251,6 +264,58 @@ public class ActionStringHandler { rAction = actionstring; } + } else if("tddstats".equals(act[0])){ + Object activePump = MainApp.getConfigBuilder().getActivePump(); + PumpInterface dana = (PumpInterface) MainApp.getSpecificPlugin(DanaRPlugin.class); + PumpInterface danaV2 = (PumpInterface) MainApp.getSpecificPlugin(DanaRv2Plugin.class); + PumpInterface danaKorean = (PumpInterface) MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); + + + if((dana == null || dana != activePump) && + (danaV2 == null || danaV2 != activePump) && + (danaKorean == null || danaKorean != activePump) + ){ + sendError("Pump does not support TDDs!"); + return; + } else { + // check if DB up to date + List dummies = new LinkedList(); + List historyList = getTDDList(dummies); + + if(isOldData(historyList)){ + rTitle = "TDD"; + rAction = "statusmessage"; + rMessage = "OLD DATA - "; + + //if pump is not busy: try to fetch data + final PumpInterface pump = MainApp.getConfigBuilder().getActivePump(); + if (pump.isBusy()) { + rMessage += MainApp.instance().getString(R.string.pumpbusy); + } else { + rMessage += "trying to fetch data from pump."; + Handler handler = new Handler(handlerThread.getLooper()); + handler.post(new Runnable() { + @Override + public void run() { + ((DanaRInterface)pump).loadHistory(RecordTypes.RECORD_TYPE_DAILY); + List dummies = new LinkedList(); + List historyList = getTDDList(dummies); + if(isOldData(historyList)){ + sendStatusmessage("TDD", "TDD: Still old data! Cannot load from pump."); + } else { + sendStatusmessage("TDD", generateTDDMessage(historyList, dummies)); + } + } + }); + } + } else { + // if up to date: prepare, send (check if CPP is activated -> add CPP stats) + rTitle = "TDD"; + rAction = "statusmessage"; + rMessage = generateTDDMessage(historyList, dummies); + } + } + } else return; @@ -261,6 +326,62 @@ public class ActionStringHandler { lastConfirmActionString = rAction; } + private static String generateTDDMessage(List historyList, List dummies) { + + DateFormat df = new SimpleDateFormat("dd.MM."); + String message = "TDD:\n"; + + //TODO: if CPP add weighted + message += "\n\n"; + + + //add TDDs: + for (DanaRHistoryRecord record : historyList) { + double tdd = record.recordDailyBolus + record.recordDailyBasal; + message += df.format(new Date(record.recordDate)) + " " + DecimalFormatter.to2Decimal(tdd) +"U" + (dummies.contains(record)?"x":"") +"\n"; + } + return message; + } + + public static boolean isOldData(List historyList) { + DateFormat df = new SimpleDateFormat("dd.MM."); + return (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).recordDate)).equals(df.format(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24))))); + } + + @NonNull + public static List getTDDList(List returnDummies) { + List historyList = MainApp.getDbHelper().getDanaRHistoryRecordsByType(RecordTypes.RECORD_TYPE_DAILY); + + //only use newest 10 + historyList = historyList.subList(0, Math.min(10, historyList.size())); + + //fill single gaps + List dummies = (returnDummies!=null)?returnDummies:(new LinkedList()); + DateFormat df = new SimpleDateFormat("dd.MM."); + for(int i = 0; i < historyList.size()-1; i++){ + DanaRHistoryRecord elem1 = historyList.get(i); + DanaRHistoryRecord elem2 = historyList.get(i+1); + + if (!df.format(new Date(elem1.recordDate)).equals(df.format(new Date(elem2.recordDate + 25*60*60*1000)))){ + DanaRHistoryRecord dummy = new DanaRHistoryRecord(); + dummy.recordDate = elem1.recordDate - 24*60*60*1000; + dummy.recordDailyBasal = elem1.recordDailyBasal/2; + dummy.recordDailyBolus = elem1.recordDailyBolus/2; + dummies.add(dummy); + elem1.recordDailyBasal /= 2; + elem1.recordDailyBolus /= 2; + } + } + historyList.addAll(dummies); + Collections.sort(historyList, new Comparator() { + @Override + public int compare(DanaRHistoryRecord lhs, DanaRHistoryRecord rhs) { + return (int) (rhs.recordDate-lhs.recordDate); + } + }); + return historyList; + } + @NonNull private static String getPumpStatus() { return MainApp.getConfigBuilder().shortStatus(false); @@ -501,6 +622,13 @@ public class ActionStringHandler { lastBolusWizard = null; } + private synchronized static void sendStatusmessage(String title, String message) { + WearFragment.getPlugin(MainApp.instance()).requestActionConfirmation(title, message, "statusmessage"); + lastSentTimestamp = System.currentTimeMillis(); + lastConfirmActionString = null; + lastBolusWizard = null; + } + public synchronized static void expectNotificationAction(String message, int id) { String actionstring = "dismissoverviewnotification " + id; WearFragment.getPlugin(MainApp.instance()).requestActionConfirmation("DISMISS", message, actionstring); diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/StatusMenuActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/StatusMenuActivity.java index 58eb0ef254..f17bc23e46 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/StatusMenuActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/StatusMenuActivity.java @@ -14,7 +14,9 @@ public class StatusMenuActivity extends MenuListActivity { return new String[] { "Pump", "Loop", - "CPP"}; + "CPP", + "TDD"}; + } @@ -26,6 +28,8 @@ public class StatusMenuActivity extends MenuListActivity { ListenerService.initiateAction(this, "status loop"); } else if ("CPP".equals(action)) { ListenerService.initiateAction(this, "opencpp"); + } else if ("TDD".equals(action)) { + ListenerService.initiateAction(this, "tddstats"); } } } From e0c1f65b8b39fa8464a6656d13394a48d18bd2b7 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Mon, 17 Jul 2017 22:37:57 +0200 Subject: [PATCH 09/18] wear tdd weighted --- .../plugins/Wear/ActionStringHandler.java | 47 +++++++++++++++++-- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java index c88faad0da..f800d9d531 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java @@ -36,6 +36,7 @@ import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfilePlugin; import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Plugin; @@ -329,16 +330,52 @@ public class ActionStringHandler { private static String generateTDDMessage(List historyList, List dummies) { DateFormat df = new SimpleDateFormat("dd.MM."); - String message = "TDD:\n"; + String message = ""; - //TODO: if CPP add weighted - message += "\n\n"; + CircadianPercentageProfilePlugin cpp = (CircadianPercentageProfilePlugin) MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); + boolean isCPP = (cpp!= null && cpp.isEnabled(PluginBase.PROFILE)); + double refTDD = 100; + if(isCPP) refTDD = cpp.baseBasalSum()*2; + int i = 0; + double sum = 0d; + double weighted03 = 0d; + double weighted05 = 0d; + double weighted07 = 0d; - //add TDDs: + Collections.reverse(historyList); for (DanaRHistoryRecord record : historyList) { double tdd = record.recordDailyBolus + record.recordDailyBasal; - message += df.format(new Date(record.recordDate)) + " " + DecimalFormatter.to2Decimal(tdd) +"U" + (dummies.contains(record)?"x":"") +"\n"; + if (i == 0) { + weighted03 = tdd; + weighted05 = tdd; + weighted07 = tdd; + + } else { + weighted07 = (weighted07 * 0.3 + tdd * 0.7); + weighted05 = (weighted05 * 0.5 + tdd * 0.5); + weighted03 = (weighted03 * 0.7 + tdd * 0.3); + } + i++; + } + message += "weighted:\n"; + message += "0.3: " + DecimalFormatter.to2Decimal(weighted03) + "U " + (isCPP?(DecimalFormatter.to0Decimal(100*weighted03/refTDD) + "%"):"") + "\n"; + message += "0.5: " + DecimalFormatter.to2Decimal(weighted05) + "U " + (isCPP?(DecimalFormatter.to0Decimal(100*weighted05/refTDD) + "%"):"") + "\n"; + message += "0.7: " + DecimalFormatter.to2Decimal(weighted07) + "U " + (isCPP?(DecimalFormatter.to0Decimal(100*weighted07/refTDD) + "%"):"") + "\n"; + message += "\n"; + + PumpInterface pump = MainApp.getConfigBuilder().getActivePump(); + if (pump != null && pump instanceof DanaRPlugin) { + double tdd = DanaRPump.getInstance().dailyTotalUnits; + message += "Today: " + DecimalFormatter.to2Decimal(tdd) + "U " + (isCPP?(DecimalFormatter.to0Decimal(100*tdd/refTDD) + "%"):"") + "\n"; + message += "\n"; + } + + //add TDDs: + Collections.reverse(historyList); + for (DanaRHistoryRecord record : historyList) { + double tdd = record.recordDailyBolus + record.recordDailyBasal; + message += df.format(new Date(record.recordDate)) + " " + DecimalFormatter.to2Decimal(tdd) +"U " + (isCPP?(DecimalFormatter.to0Decimal(100*tdd/refTDD) + "%"):"") + (dummies.contains(record)?"x":"") +"\n"; } return message; } From c3f85faede88ebb508079d8338093068424f9936 Mon Sep 17 00:00:00 2001 From: PoweRGbg Date: Tue, 18 Jul 2017 18:10:24 +0300 Subject: [PATCH 10/18] removed some "unneeded" translations --- app/src/main/res/values-bg/strings.xml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index e1c69f31af..99e1201b64 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -675,18 +675,7 @@ Заключен екран Закл Когато включите Autosense feature трябва да въвеждате ВСИЧКИ въглехидрати. В противен случай те ще се изчисляват грешно като повишена чувствителност!! - SMB резултат - SMB - SMB - key_smb - SMB enable - Super Micro Boluses is used when there are COB and more insulin is needed - UAM - UAM - key_uam - Enable UAM - UnAnounced Meals - Необявени хранения - трябва да помага при неправилно изчислени и въведени въглехидрати. - Rumen SMB + Алгоритъм на Среднопретеглената стойност OK Откажи From c7538737693ba746d92e16a8cb9ab996d87e2970 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Tue, 18 Jul 2017 22:15:17 +0200 Subject: [PATCH 11/18] setting to disable local broadcasts in NSClient --- .../broadcasts/BroadcastAckAlarm.java | 2 ++ .../broadcasts/BroadcastAlarm.java | 4 ++++ .../broadcasts/BroadcastAnnouncement.java | 4 ++++ .../broadcasts/BroadcastCals.java | 4 ++++ .../broadcasts/BroadcastClearAlarm.java | 4 ++++ .../broadcasts/BroadcastDeviceStatus.java | 6 ++++++ .../broadcasts/BroadcastMbgs.java | 4 ++++ .../broadcasts/BroadcastProfile.java | 4 ++++ .../broadcasts/BroadcastQueueStatus.java | 4 ++++ .../broadcasts/BroadcastSgvs.java | 4 ++++ .../broadcasts/BroadcastStatus.java | 4 ++++ .../broadcasts/BroadcastTreatment.java | 19 +++++++++++++++++++ .../broadcasts/BroadcastUrgentAlarm.java | 4 ++++ app/src/main/res/values/strings.xml | 2 ++ .../main/res/xml/pref_nsclientinternal.xml | 5 +++++ 15 files changed, 74 insertions(+) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java index 8b27da530a..3b01e038ab 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java @@ -12,6 +12,7 @@ import java.util.List; import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.plugins.NSClientInternal.data.NSAlarm; +import info.nightscout.utils.SP; /** * Created by mike on 11.06.2017. @@ -21,6 +22,7 @@ public class BroadcastAckAlarm { private static Logger log = LoggerFactory.getLogger(BroadcastAckAlarm.class); public static void handleClearAlarm(NSAlarm originalAlarm, Context context, long silenceTimeInMsec) { + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; Bundle bundle = new Bundle(); bundle.putInt("level", originalAlarm.getLevel()); bundle.putString("group", originalAlarm.getGroup()); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java index 1653a55bc6..01857bd8c1 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; /** * Created by mike on 26.06.2016. @@ -20,6 +21,9 @@ public class BroadcastAlarm { private static Logger log = LoggerFactory.getLogger(BroadcastAlarm.class); public static void handleAlarm(JSONObject alarm, Context context) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("data", alarm.toString()); Intent intent = new Intent(Intents.ACTION_ALARM); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java index a39a59558f..96279a039e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java @@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; /** * Created by mike on 26.06.2016. @@ -21,6 +22,9 @@ public class BroadcastAnnouncement { private static Logger log = LoggerFactory.getLogger(BroadcastAnnouncement.class); public static void handleAnnouncement(JSONObject announcement, Context context) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("data", announcement.toString()); Intent intent = new Intent(Intents.ACTION_ANNOUNCEMENT); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java index 6445f13f94..e8e1cd4758 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; /** * Created by mike on 26.06.2016. @@ -20,6 +21,9 @@ public class BroadcastCals { private static Logger log = LoggerFactory.getLogger(BroadcastCals.class); public static void handleNewCal(JSONArray cals, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("cals", cals.toString()); bundle.putBoolean("delta", isDelta); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java index c3c1e41994..768df01be2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; /** * Created by mike on 26.06.2016. @@ -20,6 +21,9 @@ public class BroadcastClearAlarm { private static Logger log = LoggerFactory.getLogger(BroadcastClearAlarm.class); public static void handleClearAlarm(JSONObject clearalarm, Context context) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("data", clearalarm.toString()); Intent intent = new Intent(Intents.ACTION_CLEAR_ALARM); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java index 1f338b0038..4d1321241a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java @@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; public class BroadcastDeviceStatus { @@ -35,6 +36,11 @@ public class BroadcastDeviceStatus { } } public static void handleNewDeviceStatus(JSONArray statuses, Context context, boolean isDelta) { + + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + + List splitted = BroadcastTreatment.splitArray(statuses); for (JSONArray part: splitted) { Bundle bundle = new Bundle(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java index 7d66352328..d11a542714 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; /** * Created by mike on 26.06.2016. @@ -20,6 +21,9 @@ public class BroadcastMbgs { private static Logger log = LoggerFactory.getLogger(BroadcastMbgs.class); public static void handleNewMbg(JSONArray mbgs, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("mbgs", mbgs.toString()); bundle.putBoolean("delta", isDelta); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java index 0b64da8384..3fe6bf4c35 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java @@ -12,6 +12,7 @@ import java.util.List; import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.data.ProfileStore; +import info.nightscout.utils.SP; /** @@ -21,6 +22,9 @@ public class BroadcastProfile { private static Logger log = LoggerFactory.getLogger(BroadcastProfile.class); public static void handleNewTreatment(ProfileStore profile, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("profile", profile.getData().toString()); bundle.putBoolean("delta", isDelta); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastQueueStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastQueueStatus.java index fbcc1ed7a3..eedeb4574d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastQueueStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastQueueStatus.java @@ -6,12 +6,16 @@ import android.os.Bundle; import android.os.PowerManager; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; /** * Created by mike on 28.02.2016. */ public class BroadcastQueueStatus { public static void handleNewStatus(int size, Context context) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "sendQueue"); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java index 308a1fe395..52e88295c1 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java @@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; /** * Created by mike on 22.02.2016. @@ -21,6 +22,9 @@ public class BroadcastSgvs { private static Logger log = LoggerFactory.getLogger(BroadcastSgvs.class); public static void handleNewSgv(JSONObject sgv, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("sgv", sgv.toString()); bundle.putBoolean("delta", isDelta); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java index 8edd749a95..82870b960e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java @@ -15,6 +15,7 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSettingsStatus; import info.nightscout.androidaps.plugins.NSClientInternal.services.NSClientService; +import info.nightscout.utils.SP; /** * Created by mike on 24.02.2016. @@ -23,6 +24,9 @@ public class BroadcastStatus { private static Logger log = LoggerFactory.getLogger(BroadcastStatus.class); public static void handleNewStatus(NSSettingsStatus status, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); try { bundle.putString("nsclientversionname", MainApp.instance().getPackageManager().getPackageInfo(MainApp.instance().getPackageName(), 0).versionName); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java index 8975b54181..dbd6414152 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java @@ -17,6 +17,7 @@ import java.util.List; import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.plugins.NSClientInternal.data.NSTreatment; +import info.nightscout.utils.SP; /** * Created by mike on 20.02.2016. @@ -25,6 +26,9 @@ public class BroadcastTreatment { private static Logger log = LoggerFactory.getLogger(BroadcastTreatment.class); public static void handleNewTreatment(NSTreatment treatment, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("treatment", treatment.getData().toString()); bundle.putBoolean("delta", isDelta); @@ -42,6 +46,9 @@ public class BroadcastTreatment { } public static void handleNewTreatment(JSONArray treatments, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + List splitted = splitArray(treatments); for (JSONArray part: splitted) { Bundle bundle = new Bundle(); @@ -62,6 +69,9 @@ public class BroadcastTreatment { } public void handleChangedTreatment(JSONObject treatment, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("treatment", treatment.toString()); bundle.putBoolean("delta", isDelta); @@ -78,6 +88,9 @@ public class BroadcastTreatment { } public static void handleChangedTreatment(JSONArray treatments, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + List splitted = splitArray(treatments); for (JSONArray part: splitted) { Bundle bundle = new Bundle(); @@ -98,6 +111,9 @@ public class BroadcastTreatment { } public static void handleRemovedTreatment(JSONObject treatment, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("treatment", treatment.toString()); bundle.putBoolean("delta", isDelta); @@ -116,6 +132,9 @@ public class BroadcastTreatment { } public static void handleRemovedTreatment(JSONArray treatments, Context context, boolean isDelta) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("treatments", treatments.toString()); bundle.putBoolean("delta", isDelta); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java index 3093e610bf..335c500c98 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import info.nightscout.androidaps.Services.Intents; +import info.nightscout.utils.SP; /** * Created by mike on 26.06.2016. @@ -20,6 +21,9 @@ public class BroadcastUrgentAlarm { private static Logger log = LoggerFactory.getLogger(BroadcastUrgentAlarm.class); public static void handleUrgentAlarm(JSONObject urgentalarm, Context context) { + + if(!SP.getBoolean("nsclient_localbroadcasts", true)) return; + Bundle bundle = new Bundle(); bundle.putString("data", urgentalarm.toString()); Intent intent = new Intent(Intents.ACTION_URGENT_ALARM); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a44e5ef758..a8083e7bc6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -580,6 +580,7 @@ Superbolus Log app start to NS ns_logappstartedevent + nsclient_localbroadcasts Exiting application to apply settings. DanaRv2 Insulin @@ -685,4 +686,5 @@ Values not stored! Overview Notifications Pass the Overview Notifications through as wear confirmation messages. + Enable loacal broadcasts to other apps (like xDrip). diff --git a/app/src/main/res/xml/pref_nsclientinternal.xml b/app/src/main/res/xml/pref_nsclientinternal.xml index 8c12efd5de..4eb1553a1c 100644 --- a/app/src/main/res/xml/pref_nsclientinternal.xml +++ b/app/src/main/res/xml/pref_nsclientinternal.xml @@ -27,6 +27,11 @@ android:key="@string/key_ns_logappstartedevent" android:title="@string/ns_logappstartedevent" /> + + Date: Tue, 18 Jul 2017 22:18:10 +0200 Subject: [PATCH 12/18] local broadcasts better setting title --- app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/pref_nsclientinternal.xml | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a8083e7bc6..b22b5f160c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -687,4 +687,5 @@ Overview Notifications Pass the Overview Notifications through as wear confirmation messages. Enable loacal broadcasts to other apps (like xDrip). + Enable local Broadcasts. diff --git a/app/src/main/res/xml/pref_nsclientinternal.xml b/app/src/main/res/xml/pref_nsclientinternal.xml index 4eb1553a1c..5f401d6c0e 100644 --- a/app/src/main/res/xml/pref_nsclientinternal.xml +++ b/app/src/main/res/xml/pref_nsclientinternal.xml @@ -30,7 +30,9 @@ + android:title="@string/ns_localbroadcasts_title" + android:summary="@string/ns_localbroadcasts"/> + From c95879e6adf1a5a26c1a742535b4d1f0a95ba18c Mon Sep 17 00:00:00 2001 From: Johannes Mockenhaupt Date: Wed, 19 Jul 2017 11:45:51 +0200 Subject: [PATCH 13/18] Align OpenAS(A)MA fragments with layout of other fragments. Removes a margin that makes the top elements jump up and down when flipping through tabs. --- app/src/main/res/layout/loop_fragment.xml | 1 - app/src/main/res/layout/openapsama_fragment.xml | 5 ++--- app/src/main/res/layout/openapsma_fragment.xml | 5 ++--- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/layout/loop_fragment.xml b/app/src/main/res/layout/loop_fragment.xml index 23a2f93d18..fb6038dcb3 100644 --- a/app/src/main/res/layout/loop_fragment.xml +++ b/app/src/main/res/layout/loop_fragment.xml @@ -5,7 +5,6 @@ tools:context="info.nightscout.androidaps.plugins.Loop.LoopFragment"> diff --git a/app/src/main/res/layout/openapsama_fragment.xml b/app/src/main/res/layout/openapsama_fragment.xml index f1f4f364ec..a471429567 100644 --- a/app/src/main/res/layout/openapsama_fragment.xml +++ b/app/src/main/res/layout/openapsama_fragment.xml @@ -6,12 +6,11 @@ + android:layout_height="match_parent"> + android:layout_height="match_parent"> Date: Wed, 19 Jul 2017 16:05:13 +0200 Subject: [PATCH 14/18] nsclient remove debug data that puts stress on the broadcast system --- .../NSClientInternal/broadcasts/BroadcastAckAlarm.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastAlarm.java | 8 -------- .../broadcasts/BroadcastAnnouncement.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastCals.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastClearAlarm.java | 7 ------- .../broadcasts/BroadcastDeviceStatus.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastMbgs.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastProfile.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastSgvs.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastStatus.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastTreatment.java | 7 ------- .../NSClientInternal/broadcasts/BroadcastUrgentAlarm.java | 7 ------- 12 files changed, 85 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java index 3b01e038ab..35789a426c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAckAlarm.java @@ -31,13 +31,6 @@ public class BroadcastAckAlarm { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - log.debug("ACKALARM " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } - } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java index 01857bd8c1..03fe04f8fe 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAlarm.java @@ -30,13 +30,5 @@ public class BroadcastAlarm { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - - try{ - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("ALARM " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java index 96279a039e..3f9a43a14a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastAnnouncement.java @@ -31,12 +31,5 @@ public class BroadcastAnnouncement { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("ANNOUNCEMENT " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java index e8e1cd4758..7a7772357c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java @@ -31,12 +31,5 @@ public class BroadcastCals { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("CAL " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java index 768df01be2..4f2716cf85 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastClearAlarm.java @@ -30,12 +30,5 @@ public class BroadcastClearAlarm { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("CLEARALARM " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java index 4d1321241a..4cad77df11 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java @@ -50,13 +50,6 @@ public class BroadcastDeviceStatus { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("DEVICESTATUS " + part.length() + " records " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java index d11a542714..f45ade6b32 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java @@ -31,12 +31,5 @@ public class BroadcastMbgs { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("MBG " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java index 3fe6bf4c35..ec62ccbf6f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java @@ -32,13 +32,6 @@ public class BroadcastProfile { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("PROFILE " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java index 52e88295c1..56350080ef 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java @@ -49,13 +49,6 @@ public class BroadcastSgvs { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("SGV " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java index 82870b960e..15432c8e79 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java @@ -42,12 +42,5 @@ public class BroadcastStatus { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("STATUS: " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java index dbd6414152..66edb99141 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java @@ -142,13 +142,6 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("TREAT_REMOVE " + treatments.length() + " treatments " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java index 335c500c98..442eb729c0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastUrgentAlarm.java @@ -30,12 +30,5 @@ public class BroadcastUrgentAlarm { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("URGENTALARM " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } From 621c32d832e52d972c40841fff063db0eb731927 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Wed, 19 Jul 2017 16:06:36 +0200 Subject: [PATCH 15/18] nsclient remove debug data that puts stress on the broadcast system 2 --- .../broadcasts/BroadcastTreatment.java | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java index 66edb99141..60540d7613 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java @@ -36,13 +36,6 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("TREAT_ADD " + treatment.getEventType() + " " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } public static void handleNewTreatment(JSONArray treatments, Context context, boolean isDelta) { @@ -58,13 +51,6 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - log.debug("TREAT_ADD " + part.length() + " " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } - } } @@ -79,12 +65,6 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("TREAT_CHANGE " + treatment.getString("_id") + " " + x.size() + " receivers"); - } catch (Exception e) { - } } public static void handleChangedTreatment(JSONArray treatments, Context context, boolean isDelta) { @@ -100,13 +80,6 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("TREAT_CHANGE " + part.length() + " " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } } @@ -121,14 +94,6 @@ public class BroadcastTreatment { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - - log.debug("TREAT_REMOVE " + treatment.getString("_id") + " " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } public static void handleRemovedTreatment(JSONArray treatments, Context context, boolean isDelta) { From e6ce35485af2d46c591543cf1bbff2bd63e1e113 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Wed, 19 Jul 2017 16:09:34 +0200 Subject: [PATCH 16/18] nsclient remove debug data that puts stress on the broadcast system 3 --- .../NSClientInternal/broadcasts/BroadcastDeviceStatus.java | 7 ------- .../plugins/NSClientInternal/broadcasts/BroadcastSgvs.java | 7 ------- 2 files changed, 14 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java index 4cad77df11..9053c6becb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java @@ -27,13 +27,6 @@ public class BroadcastDeviceStatus { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("DEVICESTATUS " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } public static void handleNewDeviceStatus(JSONArray statuses, Context context, boolean isDelta) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java index 56350080ef..29e2031869 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java @@ -32,13 +32,6 @@ public class BroadcastSgvs { intent.putExtras(bundle); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); context.sendBroadcast(intent); - try { - List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); - - log.debug("SGV " + x.size() + " receivers"); - } catch (Exception e){ - //for testing - } } public static void handleNewSgv(JSONArray sgvs, Context context, boolean isDelta) { From 76990b7983d02ecd352a4c8c953af742d7a942a7 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Wed, 19 Jul 2017 17:38:20 +0200 Subject: [PATCH 17/18] synchronize interval access --- .../nightscout/androidaps/data/Intervals.java | 16 +++++++------- .../data/NonOverlappingIntervals.java | 4 ++-- .../androidaps/data/OverlappingIntervals.java | 4 ++-- .../androidaps/data/ProfileIntervals.java | 22 +++++++++---------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/data/Intervals.java b/app/src/main/java/info/nightscout/androidaps/data/Intervals.java index a76ea9b4f8..108b4060e0 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/Intervals.java +++ b/app/src/main/java/info/nightscout/androidaps/data/Intervals.java @@ -18,7 +18,7 @@ public abstract class Intervals { LongSparseArray rawData = new LongSparseArray(); // oldest at index 0 - public Intervals reset() { + public synchronized Intervals reset() { rawData = new LongSparseArray(); return this; } @@ -29,7 +29,7 @@ public abstract class Intervals { * The List must be sorted by `T.start()` in ascending order * * */ - public void add(List list) { + public synchronized void add(List list) { for (T interval : list) { rawData.put(interval.start(), interval); } @@ -38,21 +38,21 @@ public abstract class Intervals { - public List getList() { + public synchronized List getList() { List list = new ArrayList<>(); for (int i = 0; i < rawData.size(); i++) list.add(rawData.valueAt(i)); return list; } - public List getReversedList() { + public synchronized List getReversedList() { List list = new ArrayList<>(); for (int i = rawData.size() -1; i>=0; i--) list.add(rawData.valueAt(i)); return list; } - protected int binarySearch(long value) { + protected synchronized int binarySearch(long value) { int lo = 0; int hi = rawData.size() - 1; @@ -73,15 +73,15 @@ public abstract class Intervals { public abstract T getValueByInterval(long time); - public int size() { + public synchronized int size() { return rawData.size(); } - public T get(int index) { + public synchronized T get(int index) { return rawData.valueAt(index); } - public T getReversed(int index) { + public synchronized T getReversed(int index) { return rawData.valueAt(size() - 1 - index); } diff --git a/app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java b/app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java index ca1d5abe63..385eeb9594 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java +++ b/app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java @@ -11,7 +11,7 @@ import info.nightscout.androidaps.interfaces.Interval; public class NonOverlappingIntervals extends Intervals { - protected void merge() { + protected synchronized void merge() { for (int index = 0; index < rawData.size() - 1; index++) { Interval i = rawData.valueAt(index); long startOfNewer = rawData.valueAt(index + 1).start(); @@ -22,7 +22,7 @@ public class NonOverlappingIntervals extends Intervals { } @Nullable - public T getValueByInterval(long time) { + public synchronized T getValueByInterval(long time) { int index = binarySearch(time); if (index >= 0) return rawData.valueAt(index); return null; diff --git a/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java b/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java index 38193a22c9..608fa8d328 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java +++ b/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java @@ -11,7 +11,7 @@ import info.nightscout.androidaps.interfaces.Interval; public class OverlappingIntervals extends Intervals { - protected void merge() { + protected synchronized void merge() { boolean needToCut = false; long cutTime = 0; @@ -30,7 +30,7 @@ public class OverlappingIntervals extends Intervals { } @Nullable - public T getValueByInterval(long time) { + public synchronized T getValueByInterval(long time) { for (int index = rawData.size()-1; index > 0; index--) { //begin with newest T cur = rawData.valueAt(index); if (cur.match(time)){ diff --git a/app/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java b/app/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java index ef255ed901..3633f1079e 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java +++ b/app/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java @@ -19,24 +19,24 @@ public class ProfileIntervals { private LongSparseArray rawData = new LongSparseArray<>(); // oldest at index 0 - public ProfileIntervals reset() { + public synchronized ProfileIntervals reset() { rawData = new LongSparseArray<>(); return this; } - public void add(T newInterval) { + public synchronized void add(T newInterval) { rawData.put(newInterval.start(), newInterval); merge(); } - public void add(List list) { + public synchronized void add(List list) { for (T interval : list) { rawData.put(interval.start(), interval); } merge(); } - private void merge() { + private synchronized void merge() { for (int index = 0; index < rawData.size() - 1; index++) { Interval i = rawData.valueAt(index); long startOfNewer = rawData.valueAt(index + 1).start(); @@ -47,27 +47,27 @@ public class ProfileIntervals { } @Nullable - public Interval getValueToTime(long time) { + public synchronized Interval getValueToTime(long time) { int index = binarySearch(time); if (index >= 0) return rawData.valueAt(index); return null; } - public List getList() { + public synchronized List getList() { List list = new ArrayList<>(); for (int i = 0; i < rawData.size(); i++) list.add(rawData.valueAt(i)); return list; } - public List getReversedList() { + public synchronized List getReversedList() { List list = new ArrayList<>(); for (int i = rawData.size() -1; i>=0; i--) list.add(rawData.valueAt(i)); return list; } - private int binarySearch(long value) { + private synchronized int binarySearch(long value) { if (rawData.size() == 0) return -1; int lo = 0; @@ -95,15 +95,15 @@ public class ProfileIntervals { return -1; // value not present } - public int size() { + public synchronized int size() { return rawData.size(); } - public T get(int index) { + public synchronized T get(int index) { return rawData.valueAt(index); } - public T getReversed(int index) { + public synchronized T getReversed(int index) { return rawData.valueAt(size() - 1 - index); } } \ No newline at end of file From 732e225c7db8051d3a60be1e0ac4e6dce686784a Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Wed, 19 Jul 2017 19:50:40 +0200 Subject: [PATCH 18/18] bulgarian removed non-translatable --- app/src/main/res/values-bg/strings.xml | 44 -------------------------- 1 file changed, 44 deletions(-) diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 99e1201b64..480c780025 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -457,17 +457,11 @@ Медел: %02X Протокол: %02X Код: %02X Профил По подразбиране: 3\nТова е основен параметър в сигурността на OpenAPS. Той лимитира максималният базал да бъде 3 пъти най-голямата стойност от дневните базали. Не би трябвало да има нужа от промяна, но внимавайте, защото от опит сме проверили, че максимумите са “3x от най-високия дневен; 4x от текущия”. - current_basal_safety_multiplier По подразбиране: 4\nТова е другият основен параметър в сигурността на OpenAPS, и другата половина от "3x от най-високия дневен; 4x от текущия". Това означава, че независимо от макс базал настроен в помпата, стойността на базала не може да е по-висока от тази стойност умножена по стойността на базала за текущият час от денонощието. Това е с цел да предпази от прекалено високи стойности на максималния базал преди да разбират как работи алгоритъма. Повечето от Вас няма да имат нужда от смяна на тази стойност и могат да се справят с настойки на другите параметри. - autosens_max По подразбиране: 1.2\nТова е максималният множител на autosens (а скоро autotune) за да позволи 20% максимален лимит на autosens коефициента, който от своя страна настройва базалите, колко може да намали ISF, и колко ниско може да свали целевата КЗ. - autosens_min По подразбиране: 0.7\nДругата част от сигурността на autosens, слагайки ограничение на колко ниско може да ограничи базалите, колко да повиши чувствителността (ISF) и целевите КЗ. - autosens_adjust_targets По подразбиране: разрешено\nТова позволява на autosens да променя и целевите КЗ(освен чувствителност и базал). - bolussnooze_dia_divisor По подразбиране: 2\nBolus snooze се активира след като поставите болус за основно хранене, така цикъла няма да пуснка/намаля базалите веднага след като сте се хранили. Примерът тук е с 2; така при 3 часа DIA това ще означава че bolus snooze ще бъде внимателно изместен 1.5 часа (3DIA/2). - min_5m_carbimpact По подразбиране: 3.0\nТова е настройка на количеството на покачване на КЗ при усвояване на въглехидратите за всеки 5 минути. По подразбиране 3мг/дл/5мин. Това се отразява на това колко бързо се усвояват COB според алгоритъма, и как това се отразява в предвиждането на КЗ, когато тя не се покачва или пада с различен темп от очакваното. Attention!\nNormally you do not have to change these values below. Please CLICK HERE and READ the text and make sure you UNDERSTAND it before change any of these values. http://openaps.readthedocs.io/en/latest/docs/walkthrough/phase-3/beyond-low-glucose-suspend.html @@ -524,34 +518,11 @@ Опашка: Статус: пауза - nsclientinternal_url - nsclientinternal_api_secret - danar_bt_name - danar_password - danar_useextended - danar_visualizeextendedaspercentage" - danarprofile_dia - Изчисти лога - nsclientinternal_autoscroll - nsclientinternal_paused - NSCLIENT права за запис. Грешен API secret? - Wear настройки(часовник) - Показвай подробен IOB - аздели IOB на болус и базал IOB на часовника - неуспешно - моля проверете в телефона - Недостъпно - smscommunicator_allowednumbers - smscommunicator_remotecommandsallowed Възраст на пациента Дете Тийнейджър Възрастен - age - child - teenage - adult Изберете възраст за определяне лимитите на безопасност - I_understand Glimp Устройството изглежда не подържа изключване на оптимизиране на батерията! Моля, позволете рарешение @@ -577,7 +548,6 @@ COB Суперболус Записвай всяко стартиране на AndroidAPS в NS - ns_logappstartedevent Рестартирам за да се приложат новите настройки. DanaRv2 Инсулин @@ -585,7 +555,6 @@ Novorapid, Novolog, Humalog ИНС Бързодействащ инсулин с удължаване - key_usersuperbolus Разреши използването на Суперболус Разреши функцията суперболус в съветника. Не я разрешавайте докато не научите какво наистина прави. ТОВА МОЖЕ ДА СЪЗДАДЕ ОПАСНОСТ ОТ ПРЕДОЗИРАНЕ С ИНСУЛИН. IOB @@ -605,8 +574,6 @@ Добави BGI към статуса Без качване на данни в NS Всички данни за NS се пропускат. AAPS е свързан с NS, но не прави промени в NS - ns_upload_only - ns_noupload Стъпка за базал Стъпка за болус Удължен болус @@ -626,14 +593,6 @@ Възраст на батерията на помпата Смяна на батерия Опции за аларми - nsalarm_urgent_high - nsalarm_high - nsalarm_low - nsalarm_urgent_low - nsalarm_staledata - nsalarm_urgent_staledata - nsalarm_staledatavalue - nsalarm_urgent_staledatavalue Много висока Висока Ниска @@ -645,7 +604,6 @@ Много стари данни при повече от [мин] Интервал за autosens [ч] Брой часове назад за определяне на чувствителността (приемът на въглехидрати е изключен) - openapsama_autosens_period RAT do_not_track_profile_switch Игнорирай събитията от тип Смяна на профил @@ -659,10 +617,8 @@ Алгоритъм на Oref0 Алгоритъм на AAPS Настройки за абсорбция - absorption_maxtime Максимално време за усвояване на храненето [ч] Брой часове, за които се очаква храненето да бъде напълно усвоено в организма - rangetodisplay Показвай удължените болуси като % ВСенз ВИнс