Merge branch 'dev' into logshipper
This commit is contained in:
commit
c7e6474b50
85 changed files with 7324 additions and 1056 deletions
|
@ -63,7 +63,7 @@ android {
|
||||||
targetSdkVersion 25
|
targetSdkVersion 25
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
versionCode 1500
|
versionCode 1500
|
||||||
version "2.0a-dev"
|
version "2.0b-dev"
|
||||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||||
buildConfigField "String", "BUILDVERSION", generateGitBuild()
|
buildConfigField "String", "BUILDVERSION", generateGitBuild()
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
|
|
|
@ -10,6 +10,7 @@ import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.events.Event;
|
import info.nightscout.androidaps.events.Event;
|
||||||
|
|
||||||
/** Logs events has they're being posted to and dispatched from the event bus.
|
/** Logs events has they're being posted to and dispatched from the event bus.
|
||||||
|
@ -18,7 +19,7 @@ import info.nightscout.androidaps.events.Event;
|
||||||
* after 10s (after startup) and then again every 60s.
|
* after 10s (after startup) and then again every 60s.
|
||||||
* */
|
* */
|
||||||
public class LoggingBus extends Bus {
|
public class LoggingBus extends Bus {
|
||||||
private static Logger log = LoggerFactory.getLogger(LoggingBus.class);
|
private static Logger log = LoggerFactory.getLogger(Constants.EVENTS);
|
||||||
|
|
||||||
private static long everyMinute = System.currentTimeMillis() + 10 * 1000;
|
private static long everyMinute = System.currentTimeMillis() + 10 * 1000;
|
||||||
private Map<String, Set<String>> event2Receiver = new HashMap<>();
|
private Map<String, Set<String>> event2Receiver = new HashMap<>();
|
||||||
|
|
|
@ -35,7 +35,10 @@ public class Config {
|
||||||
public static final boolean logCongigBuilderActions = true;
|
public static final boolean logCongigBuilderActions = true;
|
||||||
public static final boolean logAutosensData = false;
|
public static final boolean logAutosensData = false;
|
||||||
public static final boolean logEvents = false;
|
public static final boolean logEvents = false;
|
||||||
public static final boolean logProfile = false;
|
public static final boolean logQueue = true;
|
||||||
|
public static final boolean logBgSource = true;
|
||||||
|
public static final boolean logOverview = true;
|
||||||
|
public static final boolean logNotification = true;
|
||||||
|
|
||||||
// DanaR specific
|
// DanaR specific
|
||||||
public static final boolean logDanaBTComm = true;
|
public static final boolean logDanaBTComm = true;
|
||||||
|
|
|
@ -67,4 +67,12 @@ public class Constants {
|
||||||
|
|
||||||
//SMS Communicator
|
//SMS Communicator
|
||||||
public static final long SMS_CONFIRM_TIMEOUT = T.mins(5).msecs();
|
public static final long SMS_CONFIRM_TIMEOUT = T.mins(5).msecs();
|
||||||
|
|
||||||
|
// logging
|
||||||
|
public static final String AUTOSENS = "AUTOSENS";
|
||||||
|
public static final String EVENTS = "EVENTS";
|
||||||
|
public static final String QUEUE = "QUEUE";
|
||||||
|
public static final String BGSOURCE = "BGSOURCE";
|
||||||
|
public static final String OVERVIEW = "OVERVIEW";
|
||||||
|
public static final String NOTIFICATION = "NOTIFICATION";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package info.nightscout.androidaps;
|
package info.nightscout.androidaps;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.SystemClock;
|
||||||
import android.support.v4.content.res.ResourcesCompat;
|
import android.support.v4.content.res.ResourcesCompat;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.support.v7.widget.PopupMenu;
|
import android.support.v7.widget.PopupMenu;
|
||||||
|
@ -17,11 +17,13 @@ import android.widget.TextView;
|
||||||
|
|
||||||
import com.jjoe64.graphview.GraphView;
|
import com.jjoe64.graphview.GraphView;
|
||||||
import com.squareup.otto.Subscribe;
|
import com.squareup.otto.Subscribe;
|
||||||
|
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
@ -33,11 +35,12 @@ import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
|
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
|
||||||
import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventAutosensCalculationFinished;
|
import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventAutosensCalculationFinished;
|
||||||
|
import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventIobCalculationProgress;
|
||||||
import info.nightscout.androidaps.plugins.Overview.OverviewFragment;
|
import info.nightscout.androidaps.plugins.Overview.OverviewFragment;
|
||||||
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
|
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
|
||||||
import info.nightscout.androidaps.plugins.Overview.graphData.GraphData;
|
import info.nightscout.androidaps.plugins.Overview.graphData.GraphData;
|
||||||
import info.nightscout.utils.DateUtil;
|
import info.nightscout.utils.DateUtil;
|
||||||
import info.nightscout.utils.SP;
|
import info.nightscout.utils.T;
|
||||||
|
|
||||||
public class HistoryBrowseActivity extends AppCompatActivity {
|
public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
private static Logger log = LoggerFactory.getLogger(HistoryBrowseActivity.class);
|
private static Logger log = LoggerFactory.getLogger(HistoryBrowseActivity.class);
|
||||||
|
@ -61,9 +64,11 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
SeekBar seekBar;
|
SeekBar seekBar;
|
||||||
@BindView(R.id.historybrowse_noprofile)
|
@BindView(R.id.historybrowse_noprofile)
|
||||||
TextView noProfile;
|
TextView noProfile;
|
||||||
|
@BindView(R.id.overview_iobcalculationprogess)
|
||||||
|
TextView iobCalculationProgressView;
|
||||||
|
|
||||||
private int rangeToDisplay = 24; // for graph
|
private int rangeToDisplay = 24; // for graph
|
||||||
private long start;
|
private long start = 0;
|
||||||
|
|
||||||
IobCobCalculatorPlugin iobCobCalculatorPlugin;
|
IobCobCalculatorPlugin iobCobCalculatorPlugin;
|
||||||
|
|
||||||
|
@ -90,7 +95,19 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
iobGraph.getGridLabelRenderer().setNumVerticalLabels(5);
|
iobGraph.getGridLabelRenderer().setNumVerticalLabels(5);
|
||||||
|
|
||||||
setupChartMenu();
|
setupChartMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
MainApp.bus().unregister(this);
|
||||||
|
iobCobCalculatorPlugin.stopCalculation("onPause");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
MainApp.bus().register(this);
|
||||||
// set start of current day
|
// set start of current day
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.setTimeInMillis(System.currentTimeMillis());
|
calendar.setTimeInMillis(System.currentTimeMillis());
|
||||||
|
@ -99,33 +116,23 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
calendar.set(Calendar.MINUTE, 0);
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
start = calendar.getTimeInMillis();
|
start = calendar.getTimeInMillis();
|
||||||
}
|
runCalculation("onResume");
|
||||||
|
SystemClock.sleep(1000);
|
||||||
@Override
|
|
||||||
protected void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
updateGUI("onResume");
|
updateGUI("onResume");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@OnClick(R.id.historybrowse_start)
|
|
||||||
void onClickStart() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@OnClick(R.id.historybrowse_left)
|
@OnClick(R.id.historybrowse_left)
|
||||||
void onClickLeft() {
|
void onClickLeft() {
|
||||||
start -= rangeToDisplay * 60 * 60 * 1000L;
|
start -= T.hours(rangeToDisplay).msecs();
|
||||||
updateGUI("left");
|
updateGUI("onClickLeft");
|
||||||
iobCobCalculatorPlugin.clearCache();
|
runCalculation("onClickLeft");
|
||||||
iobCobCalculatorPlugin.runCalculation("onClickLeft", start, true, eventCustomCalculationFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnClick(R.id.historybrowse_right)
|
@OnClick(R.id.historybrowse_right)
|
||||||
void onClickRight() {
|
void onClickRight() {
|
||||||
start += rangeToDisplay * 60 * 60 * 1000L;
|
start += T.hours(rangeToDisplay).msecs();
|
||||||
updateGUI("right");
|
updateGUI("onClickRight");
|
||||||
iobCobCalculatorPlugin.clearCache();
|
runCalculation("onClickRight");
|
||||||
iobCobCalculatorPlugin.runCalculation("onClickRight", start, true, eventCustomCalculationFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnClick(R.id.historybrowse_end)
|
@OnClick(R.id.historybrowse_end)
|
||||||
|
@ -137,9 +144,8 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
calendar.set(Calendar.MINUTE, 0);
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
start = calendar.getTimeInMillis();
|
start = calendar.getTimeInMillis();
|
||||||
updateGUI("resetToMidnight");
|
updateGUI("onClickEnd");
|
||||||
iobCobCalculatorPlugin.clearCache();
|
runCalculation("onClickEnd");
|
||||||
iobCobCalculatorPlugin.runCalculation("onClickEnd", start, true, eventCustomCalculationFinished);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnClick(R.id.historybrowse_zoom)
|
@OnClick(R.id.historybrowse_zoom)
|
||||||
|
@ -159,32 +165,63 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
start = calendar.getTimeInMillis();
|
start = calendar.getTimeInMillis();
|
||||||
updateGUI("resetToMidnight");
|
updateGUI("resetToMidnight");
|
||||||
iobCobCalculatorPlugin.clearCache();
|
runCalculation("onLongClickZoom");
|
||||||
iobCobCalculatorPlugin.runCalculation("onLongClickZoom", start, true, eventCustomCalculationFinished);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnClick(R.id.historybrowse_date)
|
@OnClick(R.id.historybrowse_date)
|
||||||
void onClickDate() {
|
void onClickDate() {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(new Date(start));
|
||||||
|
DatePickerDialog dpd = DatePickerDialog.newInstance(
|
||||||
|
(view, year, monthOfYear, dayOfMonth) -> {
|
||||||
|
Date date = new Date(0);
|
||||||
|
date.setYear(year - 1900);
|
||||||
|
date.setMonth(monthOfYear);
|
||||||
|
date.setDate(dayOfMonth);
|
||||||
|
date.setHours(0);
|
||||||
|
start = date.getTime();
|
||||||
|
updateGUI("onClickDate");
|
||||||
|
runCalculation("onClickDate");
|
||||||
|
},
|
||||||
|
calendar.get(Calendar.YEAR),
|
||||||
|
calendar.get(Calendar.MONTH),
|
||||||
|
calendar.get(Calendar.DAY_OF_MONTH)
|
||||||
|
);
|
||||||
|
dpd.setThemeDark(true);
|
||||||
|
dpd.dismissOnPause(true);
|
||||||
|
dpd.show(getFragmentManager(), "Datepickerdialog");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void runCalculation(String from) {
|
||||||
|
long end = start + T.hours(rangeToDisplay).msecs();
|
||||||
|
iobCobCalculatorPlugin.stopCalculation(from);
|
||||||
|
iobCobCalculatorPlugin.clearCache();
|
||||||
|
iobCobCalculatorPlugin.runCalculation(from, end, true, false, eventCustomCalculationFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onStatusEvent(final EventAutosensCalculationFinished e) {
|
public void onStatusEvent(final EventAutosensCalculationFinished e) {
|
||||||
Activity activity = this;
|
if (e.cause == eventCustomCalculationFinished) {
|
||||||
if (activity != null && e.cause == eventCustomCalculationFinished) {
|
|
||||||
log.debug("EventAutosensCalculationFinished");
|
log.debug("EventAutosensCalculationFinished");
|
||||||
activity.runOnUiThread(new Runnable() {
|
runOnUiThread(() -> {
|
||||||
@Override
|
synchronized (HistoryBrowseActivity.this) {
|
||||||
public void run() {
|
updateGUI("EventAutosensCalculationFinished");
|
||||||
synchronized (HistoryBrowseActivity.this) {
|
|
||||||
updateGUI("EventAutosensCalculationFinished");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onStatusEvent(final EventIobCalculationProgress e) {
|
||||||
|
runOnUiThread(() -> {
|
||||||
|
if (iobCalculationProgressView != null)
|
||||||
|
iobCalculationProgressView.setText(e.progress);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void updateGUI(String from) {
|
void updateGUI(String from) {
|
||||||
|
log.debug("updateGUI from: " + from);
|
||||||
|
|
||||||
if (noProfile == null || buttonDate == null || buttonZoom == null || bgGraph == null || iobGraph == null || seekBar == null)
|
if (noProfile == null || buttonDate == null || buttonZoom == null || bgGraph == null || iobGraph == null || seekBar == null)
|
||||||
return;
|
return;
|
||||||
|
@ -200,17 +237,11 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
final String units = profile.getUnits();
|
final String units = profile.getUnits();
|
||||||
|
final double lowLine = OverviewPlugin.getPlugin().determineLowLine(units);
|
||||||
|
final double highLine = OverviewPlugin.getPlugin().determineHighLine(units);
|
||||||
|
|
||||||
double lowLineSetting = SP.getDouble("low_mark", Profile.fromMgdlToUnits(OverviewPlugin.bgTargetLow, units));
|
buttonDate.setText(DateUtil.dateAndTimeString(start));
|
||||||
double highLineSetting = SP.getDouble("high_mark", Profile.fromMgdlToUnits(OverviewPlugin.bgTargetHigh, units));
|
buttonZoom.setText(String.valueOf(rangeToDisplay));
|
||||||
|
|
||||||
if (lowLineSetting < 1)
|
|
||||||
lowLineSetting = Profile.fromMgdlToUnits(76d, units);
|
|
||||||
if (highLineSetting < 1)
|
|
||||||
highLineSetting = Profile.fromMgdlToUnits(180d, units);
|
|
||||||
|
|
||||||
final double lowLine = lowLineSetting;
|
|
||||||
final double highLine = highLineSetting;
|
|
||||||
|
|
||||||
final boolean showPrediction = false;
|
final boolean showPrediction = false;
|
||||||
|
|
||||||
|
@ -226,20 +257,17 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
//fromTime = toTime - hoursToFetch * 60 * 60 * 1000L;
|
//fromTime = toTime - hoursToFetch * 60 * 60 * 1000L;
|
||||||
//endTime = toTime + predHours * 60 * 60 * 1000L;
|
//endTime = toTime + predHours * 60 * 60 * 1000L;
|
||||||
//} else {
|
//} else {
|
||||||
fromTime = start + 100000;
|
fromTime = start + T.secs(100).msecs();
|
||||||
toTime = start + rangeToDisplay * 60 * 60 * 1000L;
|
toTime = start + T.hours(rangeToDisplay).msecs();
|
||||||
//}
|
//}
|
||||||
|
|
||||||
buttonDate.setText(DateUtil.dateAndTimeString(start));
|
|
||||||
buttonZoom.setText(String.valueOf(rangeToDisplay));
|
|
||||||
|
|
||||||
log.debug("Period: " + DateUtil.dateAndTimeString(fromTime) + " - " + DateUtil.dateAndTimeString(toTime));
|
log.debug("Period: " + DateUtil.dateAndTimeString(fromTime) + " - " + DateUtil.dateAndTimeString(toTime));
|
||||||
|
|
||||||
final long pointer = System.currentTimeMillis();
|
final long pointer = System.currentTimeMillis();
|
||||||
|
|
||||||
// ------------------ 1st graph
|
// ------------------ 1st graph
|
||||||
|
|
||||||
final GraphData graphData = new GraphData(bgGraph, IobCobCalculatorPlugin.getPlugin());
|
final GraphData graphData = new GraphData(bgGraph, iobCobCalculatorPlugin);
|
||||||
|
|
||||||
// **** In range Area ****
|
// **** In range Area ****
|
||||||
graphData.addInRangeArea(fromTime, toTime, lowLine, highLine);
|
graphData.addInRangeArea(fromTime, toTime, lowLine, highLine);
|
||||||
|
@ -267,143 +295,137 @@ public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
|
|
||||||
// ------------------ 2nd graph
|
// ------------------ 2nd graph
|
||||||
|
|
||||||
final GraphData secondGraphData = new GraphData(iobGraph, iobCobCalculatorPlugin);
|
new Thread(() -> {
|
||||||
|
final GraphData secondGraphData = new GraphData(iobGraph, iobCobCalculatorPlugin);
|
||||||
|
|
||||||
boolean useIobForScale = false;
|
boolean useIobForScale = false;
|
||||||
boolean useCobForScale = false;
|
boolean useCobForScale = false;
|
||||||
boolean useDevForScale = false;
|
boolean useDevForScale = false;
|
||||||
boolean useRatioForScale = false;
|
boolean useRatioForScale = false;
|
||||||
boolean useDevSlopeForScale = false;
|
boolean useDSForScale = false;
|
||||||
|
|
||||||
if (showIob) {
|
if (showIob) {
|
||||||
useIobForScale = true;
|
useIobForScale = true;
|
||||||
} else if (showCob) {
|
} else if (showCob) {
|
||||||
useCobForScale = true;
|
useCobForScale = true;
|
||||||
} else if (showDev) {
|
} else if (showDev) {
|
||||||
useDevForScale = true;
|
useDevForScale = true;
|
||||||
} else if (showRat) {
|
} else if (showRat) {
|
||||||
useRatioForScale = true;
|
useRatioForScale = true;
|
||||||
} else if (showDevslope) {
|
} else if (showDevslope) {
|
||||||
useDevSlopeForScale = true;
|
useDSForScale = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showIob)
|
if (showIob)
|
||||||
secondGraphData.addIob(fromTime, toTime, useIobForScale, 1d);
|
secondGraphData.addIob(fromTime, toTime, useIobForScale, 1d);
|
||||||
if (showCob)
|
if (showCob)
|
||||||
secondGraphData.addCob(fromTime, toTime, useCobForScale, useCobForScale ? 1d : 0.5d);
|
secondGraphData.addCob(fromTime, toTime, useCobForScale, useCobForScale ? 1d : 0.5d);
|
||||||
if (showDev)
|
if (showDev)
|
||||||
secondGraphData.addDeviations(fromTime, toTime, useDevForScale, 1d);
|
secondGraphData.addDeviations(fromTime, toTime, useDevForScale, 1d);
|
||||||
if (showRat)
|
if (showRat)
|
||||||
secondGraphData.addRatio(fromTime, toTime, useRatioForScale, 1d);
|
secondGraphData.addRatio(fromTime, toTime, useRatioForScale, 1d);
|
||||||
if (showDevslope)
|
if (showDevslope)
|
||||||
secondGraphData.addDeviationSlope(fromTime, toTime, useDevSlopeForScale, 1d);
|
secondGraphData.addDeviationSlope(fromTime, toTime, useDSForScale, 1d);
|
||||||
|
|
||||||
// **** NOW line ****
|
// **** NOW line ****
|
||||||
// set manual x bounds to have nice steps
|
// set manual x bounds to have nice steps
|
||||||
secondGraphData.formatAxis(fromTime, toTime);
|
secondGraphData.formatAxis(fromTime, toTime);
|
||||||
secondGraphData.addNowLine(pointer);
|
secondGraphData.addNowLine(pointer);
|
||||||
|
|
||||||
// do GUI update
|
// do GUI update
|
||||||
if (showIob || showCob || showDev || showRat || showDevslope) {
|
runOnUiThread(() -> {
|
||||||
iobGraph.setVisibility(View.VISIBLE);
|
if (showIob || showCob || showDev || showRat || showDevslope) {
|
||||||
} else {
|
iobGraph.setVisibility(View.VISIBLE);
|
||||||
iobGraph.setVisibility(View.GONE);
|
} else {
|
||||||
}
|
iobGraph.setVisibility(View.GONE);
|
||||||
// finally enforce drawing of graphs
|
}
|
||||||
graphData.performUpdate();
|
// finally enforce drawing of graphs
|
||||||
secondGraphData.performUpdate();
|
graphData.performUpdate();
|
||||||
|
if (showIob || showCob || showDev || showRat || showDevslope)
|
||||||
|
secondGraphData.performUpdate();
|
||||||
|
});
|
||||||
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupChartMenu() {
|
private void setupChartMenu() {
|
||||||
chartButton = (ImageButton) findViewById(R.id.overview_chartMenuButton);
|
chartButton = (ImageButton) findViewById(R.id.overview_chartMenuButton);
|
||||||
chartButton.setOnClickListener(new View.OnClickListener() {
|
chartButton.setOnClickListener(v -> {
|
||||||
@Override
|
MenuItem item;
|
||||||
public void onClick(View v) {
|
CharSequence title;
|
||||||
MenuItem item;
|
SpannableString s;
|
||||||
CharSequence title;
|
PopupMenu popup = new PopupMenu(v.getContext(), v);
|
||||||
SpannableString s;
|
|
||||||
PopupMenu popup = new PopupMenu(v.getContext(), v);
|
|
||||||
|
|
||||||
|
|
||||||
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.BAS.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_basals));
|
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.BAS.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_basals));
|
||||||
|
title = item.getTitle();
|
||||||
|
s = new SpannableString(title);
|
||||||
|
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.basal, null)), 0, s.length(), 0);
|
||||||
|
item.setTitle(s);
|
||||||
|
item.setCheckable(true);
|
||||||
|
item.setChecked(showBasal);
|
||||||
|
|
||||||
|
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.IOB.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_iob));
|
||||||
|
title = item.getTitle();
|
||||||
|
s = new SpannableString(title);
|
||||||
|
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.iob, null)), 0, s.length(), 0);
|
||||||
|
item.setTitle(s);
|
||||||
|
item.setCheckable(true);
|
||||||
|
item.setChecked(showIob);
|
||||||
|
|
||||||
|
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.COB.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_cob));
|
||||||
|
title = item.getTitle();
|
||||||
|
s = new SpannableString(title);
|
||||||
|
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.cob, null)), 0, s.length(), 0);
|
||||||
|
item.setTitle(s);
|
||||||
|
item.setCheckable(true);
|
||||||
|
item.setChecked(showCob);
|
||||||
|
|
||||||
|
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.DEV.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_deviations));
|
||||||
|
title = item.getTitle();
|
||||||
|
s = new SpannableString(title);
|
||||||
|
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.deviations, null)), 0, s.length(), 0);
|
||||||
|
item.setTitle(s);
|
||||||
|
item.setCheckable(true);
|
||||||
|
item.setChecked(showDev);
|
||||||
|
|
||||||
|
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.SEN.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_sensitivity));
|
||||||
|
title = item.getTitle();
|
||||||
|
s = new SpannableString(title);
|
||||||
|
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.ratio, null)), 0, s.length(), 0);
|
||||||
|
item.setTitle(s);
|
||||||
|
item.setCheckable(true);
|
||||||
|
item.setChecked(showRat);
|
||||||
|
|
||||||
|
if (MainApp.devBranch) {
|
||||||
|
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.DEVSLOPE.ordinal(), Menu.NONE, "Deviation slope");
|
||||||
title = item.getTitle();
|
title = item.getTitle();
|
||||||
s = new SpannableString(title);
|
s = new SpannableString(title);
|
||||||
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.basal, null)), 0, s.length(), 0);
|
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.devslopepos, null)), 0, s.length(), 0);
|
||||||
item.setTitle(s);
|
item.setTitle(s);
|
||||||
item.setCheckable(true);
|
item.setCheckable(true);
|
||||||
item.setChecked(showBasal);
|
item.setChecked(showDevslope);
|
||||||
|
|
||||||
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.IOB.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_iob));
|
|
||||||
title = item.getTitle();
|
|
||||||
s = new SpannableString(title);
|
|
||||||
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.iob, null)), 0, s.length(), 0);
|
|
||||||
item.setTitle(s);
|
|
||||||
item.setCheckable(true);
|
|
||||||
item.setChecked(showIob);
|
|
||||||
|
|
||||||
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.COB.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_cob));
|
|
||||||
title = item.getTitle();
|
|
||||||
s = new SpannableString(title);
|
|
||||||
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.cob, null)), 0, s.length(), 0);
|
|
||||||
item.setTitle(s);
|
|
||||||
item.setCheckable(true);
|
|
||||||
item.setChecked(showCob);
|
|
||||||
|
|
||||||
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.DEV.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_deviations));
|
|
||||||
title = item.getTitle();
|
|
||||||
s = new SpannableString(title);
|
|
||||||
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.deviations, null)), 0, s.length(), 0);
|
|
||||||
item.setTitle(s);
|
|
||||||
item.setCheckable(true);
|
|
||||||
item.setChecked(showDev);
|
|
||||||
|
|
||||||
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.SEN.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_sensitivity));
|
|
||||||
title = item.getTitle();
|
|
||||||
s = new SpannableString(title);
|
|
||||||
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.ratio, null)), 0, s.length(), 0);
|
|
||||||
item.setTitle(s);
|
|
||||||
item.setCheckable(true);
|
|
||||||
item.setChecked(showRat);
|
|
||||||
|
|
||||||
if (MainApp.devBranch) {
|
|
||||||
item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.DEVSLOPE.ordinal(), Menu.NONE, "Deviation slope");
|
|
||||||
title = item.getTitle();
|
|
||||||
s = new SpannableString(title);
|
|
||||||
s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.devslopepos, null)), 0, s.length(), 0);
|
|
||||||
item.setTitle(s);
|
|
||||||
item.setCheckable(true);
|
|
||||||
item.setChecked(showDevslope);
|
|
||||||
}
|
|
||||||
|
|
||||||
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
|
||||||
if (item.getItemId() == OverviewFragment.CHARTTYPE.BAS.ordinal()) {
|
|
||||||
showBasal = !item.isChecked();
|
|
||||||
} else if (item.getItemId() == OverviewFragment.CHARTTYPE.IOB.ordinal()) {
|
|
||||||
showIob = !item.isChecked();
|
|
||||||
} else if (item.getItemId() == OverviewFragment.CHARTTYPE.COB.ordinal()) {
|
|
||||||
showCob = !item.isChecked();
|
|
||||||
} else if (item.getItemId() == OverviewFragment.CHARTTYPE.DEV.ordinal()) {
|
|
||||||
showDev = !item.isChecked();
|
|
||||||
} else if (item.getItemId() == OverviewFragment.CHARTTYPE.SEN.ordinal()) {
|
|
||||||
showRat = !item.isChecked();
|
|
||||||
} else if (item.getItemId() == OverviewFragment.CHARTTYPE.DEVSLOPE.ordinal()) {
|
|
||||||
showDevslope = !item.isChecked();
|
|
||||||
}
|
|
||||||
updateGUI("onGraphCheckboxesCheckedChanged");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
chartButton.setImageResource(R.drawable.ic_arrow_drop_up_white_24dp);
|
|
||||||
popup.setOnDismissListener(new PopupMenu.OnDismissListener() {
|
|
||||||
@Override
|
|
||||||
public void onDismiss(PopupMenu menu) {
|
|
||||||
chartButton.setImageResource(R.drawable.ic_arrow_drop_down_white_24dp);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
popup.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
popup.setOnMenuItemClickListener(item1 -> {
|
||||||
|
if (item1.getItemId() == OverviewFragment.CHARTTYPE.BAS.ordinal()) {
|
||||||
|
showBasal = !item1.isChecked();
|
||||||
|
} else if (item1.getItemId() == OverviewFragment.CHARTTYPE.IOB.ordinal()) {
|
||||||
|
showIob = !item1.isChecked();
|
||||||
|
} else if (item1.getItemId() == OverviewFragment.CHARTTYPE.COB.ordinal()) {
|
||||||
|
showCob = !item1.isChecked();
|
||||||
|
} else if (item1.getItemId() == OverviewFragment.CHARTTYPE.DEV.ordinal()) {
|
||||||
|
showDev = !item1.isChecked();
|
||||||
|
} else if (item1.getItemId() == OverviewFragment.CHARTTYPE.SEN.ordinal()) {
|
||||||
|
showRat = !item1.isChecked();
|
||||||
|
} else if (item1.getItemId() == OverviewFragment.CHARTTYPE.DEVSLOPE.ordinal()) {
|
||||||
|
showDevslope = !item1.isChecked();
|
||||||
|
}
|
||||||
|
updateGUI("onGraphCheckboxesCheckedChanged");
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
chartButton.setImageResource(R.drawable.ic_arrow_drop_up_white_24dp);
|
||||||
|
popup.setOnDismissListener(menu -> chartButton.setImageResource(R.drawable.ic_arrow_drop_down_white_24dp));
|
||||||
|
popup.show();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -352,7 +352,6 @@ public class MainActivity extends AppCompatActivity {
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||||
pluginPreferencesMenuItem = menu.findItem(R.id.nav_plugin_preferences);
|
pluginPreferencesMenuItem = menu.findItem(R.id.nav_plugin_preferences);
|
||||||
menu.findItem(R.id.nav_historybrowser).setVisible(MainApp.devBranch);
|
|
||||||
checkPluginPreferences(findViewById(R.id.pager));
|
checkPluginPreferences(findViewById(R.id.pager));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre
|
||||||
pref.setSummary("******");
|
pref.setSummary("******");
|
||||||
} else if (pref.getKey().equals(MainApp.gs(R.string.key_danars_name))) {
|
} else if (pref.getKey().equals(MainApp.gs(R.string.key_danars_name))) {
|
||||||
pref.setSummary(SP.getString(R.string.key_danars_name, ""));
|
pref.setSummary(SP.getString(R.string.key_danars_name, ""));
|
||||||
} else if (editTextPref.getText() != null && !editTextPref.getText().equals("")) {
|
} else if (editTextPref.getText() != null ) {
|
||||||
((EditTextPreference) pref).setDialogMessage(editTextPref.getDialogMessage());
|
((EditTextPreference) pref).setDialogMessage(editTextPref.getDialogMessage());
|
||||||
pref.setSummary(editTextPref.getText());
|
pref.setSummary(editTextPref.getText());
|
||||||
} else if (pref.getKey().contains("smscommunicator_allowednumbers") && TextUtils.isEmpty(editTextPref.getText().trim())) {
|
} else if (pref.getKey().contains("smscommunicator_allowednumbers") && TextUtils.isEmpty(editTextPref.getText().trim())) {
|
||||||
|
|
|
@ -13,11 +13,8 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
import info.nightscout.androidaps.Constants;
|
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.ProfileStore;
|
|
||||||
import info.nightscout.androidaps.db.BgReading;
|
|
||||||
import info.nightscout.androidaps.db.CareportalEvent;
|
import info.nightscout.androidaps.db.CareportalEvent;
|
||||||
import info.nightscout.androidaps.events.EventNsFood;
|
import info.nightscout.androidaps.events.EventNsFood;
|
||||||
import info.nightscout.androidaps.events.EventNsTreatment;
|
import info.nightscout.androidaps.events.EventNsTreatment;
|
||||||
|
@ -26,15 +23,13 @@ import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin
|
||||||
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSDeviceStatus;
|
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSDeviceStatus;
|
||||||
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSMbg;
|
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSMbg;
|
||||||
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSettingsStatus;
|
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSettingsStatus;
|
||||||
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSgv;
|
|
||||||
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
|
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
|
||||||
import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification;
|
import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification;
|
||||||
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
|
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
|
||||||
import info.nightscout.androidaps.plugins.Overview.notifications.Notification;
|
import info.nightscout.androidaps.plugins.Overview.notifications.Notification;
|
||||||
import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin;
|
import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin;
|
||||||
import info.nightscout.androidaps.plugins.ProfileNS.events.EventNSProfileUpdateGUI;
|
|
||||||
import info.nightscout.androidaps.plugins.PumpDanaR.activities.DanaRNSHistorySync;
|
import info.nightscout.androidaps.plugins.PumpDanaR.activities.DanaRNSHistorySync;
|
||||||
import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventNewSMS;
|
import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorPlugin;
|
||||||
import info.nightscout.androidaps.plugins.Source.SourceDexcomG5Plugin;
|
import info.nightscout.androidaps.plugins.Source.SourceDexcomG5Plugin;
|
||||||
import info.nightscout.androidaps.plugins.Source.SourceGlimpPlugin;
|
import info.nightscout.androidaps.plugins.Source.SourceGlimpPlugin;
|
||||||
import info.nightscout.androidaps.plugins.Source.SourceMM640gPlugin;
|
import info.nightscout.androidaps.plugins.Source.SourceMM640gPlugin;
|
||||||
|
@ -44,20 +39,12 @@ import info.nightscout.androidaps.plugins.Source.SourceXdripPlugin;
|
||||||
import info.nightscout.androidaps.receivers.DataReceiver;
|
import info.nightscout.androidaps.receivers.DataReceiver;
|
||||||
import info.nightscout.utils.BundleLogger;
|
import info.nightscout.utils.BundleLogger;
|
||||||
import info.nightscout.utils.JsonHelper;
|
import info.nightscout.utils.JsonHelper;
|
||||||
import info.nightscout.utils.NSUpload;
|
|
||||||
import info.nightscout.utils.SP;
|
import info.nightscout.utils.SP;
|
||||||
|
|
||||||
|
|
||||||
public class DataService extends IntentService {
|
public class DataService extends IntentService {
|
||||||
private static Logger log = LoggerFactory.getLogger(DataService.class);
|
private static Logger log = LoggerFactory.getLogger(DataService.class);
|
||||||
|
|
||||||
boolean xDripEnabled = false;
|
|
||||||
boolean nsClientEnabled = true;
|
|
||||||
boolean mm640gEnabled = false;
|
|
||||||
boolean glimpEnabled = false;
|
|
||||||
boolean dexcomG5Enabled = false;
|
|
||||||
boolean poctechEnabled = false;
|
|
||||||
|
|
||||||
public DataService() {
|
public DataService() {
|
||||||
super("DataService");
|
super("DataService");
|
||||||
registerBus();
|
registerBus();
|
||||||
|
@ -67,58 +54,6 @@ public class DataService extends IntentService {
|
||||||
protected void onHandleIntent(final Intent intent) {
|
protected void onHandleIntent(final Intent intent) {
|
||||||
if (Config.logFunctionCalls)
|
if (Config.logFunctionCalls)
|
||||||
log.debug("onHandleIntent " + BundleLogger.log(intent.getExtras()));
|
log.debug("onHandleIntent " + BundleLogger.log(intent.getExtras()));
|
||||||
if (ConfigBuilderPlugin.getPlugin().getActiveBgSource() == null) {
|
|
||||||
xDripEnabled = true;
|
|
||||||
nsClientEnabled = false;
|
|
||||||
mm640gEnabled = false;
|
|
||||||
glimpEnabled = false;
|
|
||||||
dexcomG5Enabled = false;
|
|
||||||
poctechEnabled = false;
|
|
||||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceXdripPlugin.class)) {
|
|
||||||
xDripEnabled = true;
|
|
||||||
nsClientEnabled = false;
|
|
||||||
mm640gEnabled = false;
|
|
||||||
glimpEnabled = false;
|
|
||||||
dexcomG5Enabled = false;
|
|
||||||
poctechEnabled = false;
|
|
||||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceNSClientPlugin.class)) {
|
|
||||||
xDripEnabled = false;
|
|
||||||
nsClientEnabled = true;
|
|
||||||
mm640gEnabled = false;
|
|
||||||
glimpEnabled = false;
|
|
||||||
dexcomG5Enabled = false;
|
|
||||||
poctechEnabled = false;
|
|
||||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceMM640gPlugin.class)) {
|
|
||||||
xDripEnabled = false;
|
|
||||||
nsClientEnabled = false;
|
|
||||||
mm640gEnabled = true;
|
|
||||||
glimpEnabled = false;
|
|
||||||
dexcomG5Enabled = false;
|
|
||||||
poctechEnabled = false;
|
|
||||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceGlimpPlugin.class)) {
|
|
||||||
xDripEnabled = false;
|
|
||||||
nsClientEnabled = false;
|
|
||||||
mm640gEnabled = false;
|
|
||||||
glimpEnabled = true;
|
|
||||||
dexcomG5Enabled = false;
|
|
||||||
poctechEnabled = false;
|
|
||||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceDexcomG5Plugin.class)) {
|
|
||||||
xDripEnabled = false;
|
|
||||||
nsClientEnabled = false;
|
|
||||||
mm640gEnabled = false;
|
|
||||||
glimpEnabled = false;
|
|
||||||
dexcomG5Enabled = true;
|
|
||||||
poctechEnabled = false;
|
|
||||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourcePoctechPlugin.class)) {
|
|
||||||
xDripEnabled = false;
|
|
||||||
nsClientEnabled = false;
|
|
||||||
mm640gEnabled = false;
|
|
||||||
glimpEnabled = false;
|
|
||||||
dexcomG5Enabled = false;
|
|
||||||
poctechEnabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean isNSProfile = MainApp.getConfigBuilder().getActiveProfileInterface() != null && MainApp.getConfigBuilder().getActiveProfileInterface().getClass().equals(NSProfilePlugin.class);
|
|
||||||
|
|
||||||
boolean acceptNSData = !SP.getBoolean(R.string.key_ns_upload_only, false);
|
boolean acceptNSData = !SP.getBoolean(R.string.key_ns_upload_only, false);
|
||||||
Bundle bundles = intent.getExtras();
|
Bundle bundles = intent.getExtras();
|
||||||
|
@ -127,71 +62,44 @@ public class DataService extends IntentService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (intent != null) {
|
final String action = intent.getAction();
|
||||||
final String action = intent.getAction();
|
if (Intents.ACTION_NEW_BG_ESTIMATE.equals(action)) {
|
||||||
if (Intents.ACTION_NEW_BG_ESTIMATE.equals(action)) {
|
SourceXdripPlugin.getPlugin().handleNewData(intent);
|
||||||
if (xDripEnabled) {
|
} else if (Intents.NS_EMULATOR.equals(action)) {
|
||||||
handleNewDataFromXDrip(intent);
|
SourceMM640gPlugin.getPlugin().handleNewData(intent);
|
||||||
}
|
} else if (Intents.GLIMP_BG.equals(action)) {
|
||||||
} else if (Intents.NS_EMULATOR.equals(action)) {
|
SourceGlimpPlugin.getPlugin().handleNewData(intent);
|
||||||
if (mm640gEnabled) {
|
} else if (Intents.DEXCOMG5_BG.equals(action)) {
|
||||||
handleNewDataFromMM640g(intent);
|
SourceDexcomG5Plugin.getPlugin().handleNewData(intent);
|
||||||
}
|
} else if (Intents.POCTECH_BG.equals(action)) {
|
||||||
} else if (Intents.GLIMP_BG.equals(action)) {
|
SourcePoctechPlugin.getPlugin().handleNewData(intent);
|
||||||
if (glimpEnabled) {
|
} else if (Intents.ACTION_NEW_SGV.equals(action)) {
|
||||||
handleNewDataFromGlimp(intent);
|
SourceNSClientPlugin.getPlugin().handleNewData(intent);
|
||||||
}
|
} else if (Intents.ACTION_NEW_PROFILE.equals(action)) {
|
||||||
} else if (Intents.DEXCOMG5_BG.equals(action)) {
|
// always handle Profile if NSProfile is enabled without looking at nsUploadOnly
|
||||||
if (dexcomG5Enabled) {
|
NSProfilePlugin.getPlugin().handleNewData(intent);
|
||||||
handleNewDataFromDexcomG5(intent);
|
} else if (acceptNSData &&
|
||||||
}
|
(Intents.ACTION_NEW_TREATMENT.equals(action) ||
|
||||||
} else if (Intents.POCTECH_BG.equals(action)) {
|
Intents.ACTION_CHANGED_TREATMENT.equals(action) ||
|
||||||
if (poctechEnabled) {
|
Intents.ACTION_REMOVED_TREATMENT.equals(action) ||
|
||||||
handleNewDataFromPoctech(intent);
|
Intents.ACTION_NEW_STATUS.equals(action) ||
|
||||||
}
|
Intents.ACTION_NEW_DEVICESTATUS.equals(action) ||
|
||||||
} else if (Intents.ACTION_NEW_SGV.equals(action)) {
|
Intents.ACTION_NEW_FOOD.equals(action) ||
|
||||||
if (nsClientEnabled || SP.getBoolean(R.string.key_ns_autobackfill, true))
|
Intents.ACTION_CHANGED_FOOD.equals(action) ||
|
||||||
handleNewDataFromNSClient(intent);
|
Intents.ACTION_REMOVED_FOOD.equals(action) ||
|
||||||
// Objectives 0
|
Intents.ACTION_NEW_CAL.equals(action) ||
|
||||||
ObjectivesPlugin.bgIsAvailableInNS = true;
|
Intents.ACTION_NEW_MBG.equals(action))
|
||||||
ObjectivesPlugin.saveProgress();
|
) {
|
||||||
} else if (isNSProfile && Intents.ACTION_NEW_PROFILE.equals(action) || Intents.ACTION_NEW_DEVICESTATUS.equals(action)) {
|
handleNewDataFromNSClient(intent);
|
||||||
// always handle Profile if NSProfile is enabled without looking at nsUploadOnly
|
} else if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(action)) {
|
||||||
handleNewDataFromNSClient(intent);
|
SmsCommunicatorPlugin.getPlugin().handleNewData(intent);
|
||||||
} else if (acceptNSData &&
|
|
||||||
(Intents.ACTION_NEW_TREATMENT.equals(action) ||
|
|
||||||
Intents.ACTION_CHANGED_TREATMENT.equals(action) ||
|
|
||||||
Intents.ACTION_REMOVED_TREATMENT.equals(action) ||
|
|
||||||
Intents.ACTION_NEW_STATUS.equals(action) ||
|
|
||||||
Intents.ACTION_NEW_DEVICESTATUS.equals(action) ||
|
|
||||||
Intents.ACTION_NEW_FOOD.equals(action) ||
|
|
||||||
Intents.ACTION_CHANGED_FOOD.equals(action) ||
|
|
||||||
Intents.ACTION_REMOVED_FOOD.equals(action) ||
|
|
||||||
Intents.ACTION_NEW_CAL.equals(action) ||
|
|
||||||
Intents.ACTION_NEW_MBG.equals(action))
|
|
||||||
) {
|
|
||||||
handleNewDataFromNSClient(intent);
|
|
||||||
} else if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(action)) {
|
|
||||||
handleNewSMS(intent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.logFunctionCalls)
|
if (Config.logFunctionCalls)
|
||||||
log.debug("onHandleIntent exit " + intent);
|
log.debug("onHandleIntent exit " + intent);
|
||||||
DataReceiver.completeWakefulIntent(intent);
|
DataReceiver.completeWakefulIntent(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
@Override
|
|
||||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
|
||||||
super.onStartCommand(intent, flags, startId);
|
|
||||||
|
|
||||||
if (Config.logFunctionCalls)
|
|
||||||
log.debug("onStartCommand");
|
|
||||||
|
|
||||||
return START_STICKY;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
|
@ -207,142 +115,6 @@ public class DataService extends IntentService {
|
||||||
MainApp.bus().register(this);
|
MainApp.bus().register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleNewDataFromXDrip(Intent intent) {
|
|
||||||
Bundle bundle = intent.getExtras();
|
|
||||||
if (bundle == null) return;
|
|
||||||
|
|
||||||
BgReading bgReading = new BgReading();
|
|
||||||
|
|
||||||
bgReading.value = bundle.getDouble(Intents.EXTRA_BG_ESTIMATE);
|
|
||||||
bgReading.direction = bundle.getString(Intents.EXTRA_BG_SLOPE_NAME);
|
|
||||||
bgReading.date = bundle.getLong(Intents.EXTRA_TIMESTAMP);
|
|
||||||
bgReading.raw = bundle.getDouble(Intents.EXTRA_RAW);
|
|
||||||
String source = bundle.getString(Intents.XDRIP_DATA_SOURCE_DESCRIPTION, "no Source specified");
|
|
||||||
SourceXdripPlugin.getPlugin().setSource(source);
|
|
||||||
MainApp.getDbHelper().createIfNotExists(bgReading, "XDRIP");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleNewDataFromGlimp(Intent intent) {
|
|
||||||
Bundle bundle = intent.getExtras();
|
|
||||||
if (bundle == null) return;
|
|
||||||
|
|
||||||
BgReading bgReading = new BgReading();
|
|
||||||
|
|
||||||
bgReading.value = bundle.getDouble("mySGV");
|
|
||||||
bgReading.direction = bundle.getString("myTrend");
|
|
||||||
bgReading.date = bundle.getLong("myTimestamp");
|
|
||||||
bgReading.raw = 0;
|
|
||||||
|
|
||||||
MainApp.getDbHelper().createIfNotExists(bgReading, "GLIMP");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleNewDataFromDexcomG5(Intent intent) {
|
|
||||||
// onHandleIntent Bundle{ data => [{"m_time":1511939180,"m_trend":"NotComputable","m_value":335}]; android.support.content.wakelockid => 95; }Bundle
|
|
||||||
|
|
||||||
Bundle bundle = intent.getExtras();
|
|
||||||
if (bundle == null) return;
|
|
||||||
|
|
||||||
BgReading bgReading = new BgReading();
|
|
||||||
|
|
||||||
String data = bundle.getString("data");
|
|
||||||
log.debug("Received Dexcom Data", data);
|
|
||||||
|
|
||||||
try {
|
|
||||||
JSONArray jsonArray = new JSONArray(data);
|
|
||||||
log.debug("Received Dexcom Data size:" + jsonArray.length());
|
|
||||||
for (int i = 0; i < jsonArray.length(); i++) {
|
|
||||||
JSONObject json = jsonArray.getJSONObject(i);
|
|
||||||
bgReading.value = json.getInt("m_value");
|
|
||||||
bgReading.direction = json.getString("m_trend");
|
|
||||||
bgReading.date = json.getLong("m_time") * 1000L;
|
|
||||||
bgReading.raw = 0;
|
|
||||||
boolean isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "DexcomG5");
|
|
||||||
if (isNew && SP.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
|
|
||||||
NSUpload.uploadBg(bgReading);
|
|
||||||
}
|
|
||||||
if (isNew && SP.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
|
|
||||||
NSUpload.sendToXdrip(bgReading);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleNewDataFromPoctech(Intent intent) {
|
|
||||||
|
|
||||||
Bundle bundle = intent.getExtras();
|
|
||||||
if (bundle == null) return;
|
|
||||||
|
|
||||||
BgReading bgReading = new BgReading();
|
|
||||||
|
|
||||||
String data = bundle.getString("data");
|
|
||||||
log.debug("Received Poctech Data", data);
|
|
||||||
|
|
||||||
try {
|
|
||||||
JSONArray jsonArray = new JSONArray(data);
|
|
||||||
log.debug("Received Poctech Data size:" + jsonArray.length());
|
|
||||||
for (int i = 0; i < jsonArray.length(); i++) {
|
|
||||||
JSONObject json = jsonArray.getJSONObject(i);
|
|
||||||
bgReading.value = json.getDouble("current");
|
|
||||||
bgReading.direction = json.getString("direction");
|
|
||||||
bgReading.date = json.getLong("date");
|
|
||||||
bgReading.raw = json.getDouble("raw");
|
|
||||||
if (JsonHelper.safeGetString(json, "units", Constants.MGDL).equals("mmol/L"))
|
|
||||||
bgReading.value = bgReading.value * Constants.MMOLL_TO_MGDL;
|
|
||||||
boolean isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Poctech");
|
|
||||||
if (isNew && SP.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
|
|
||||||
NSUpload.uploadBg(bgReading);
|
|
||||||
}
|
|
||||||
if (isNew && SP.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
|
|
||||||
NSUpload.sendToXdrip(bgReading);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleNewDataFromMM640g(Intent intent) {
|
|
||||||
Bundle bundle = intent.getExtras();
|
|
||||||
if (bundle == null) return;
|
|
||||||
|
|
||||||
final String collection = bundle.getString("collection");
|
|
||||||
if (collection == null) return;
|
|
||||||
|
|
||||||
if (collection.equals("entries")) {
|
|
||||||
final String data = bundle.getString("data");
|
|
||||||
|
|
||||||
if ((data != null) && (data.length() > 0)) {
|
|
||||||
try {
|
|
||||||
final JSONArray json_array = new JSONArray(data);
|
|
||||||
for (int i = 0; i < json_array.length(); i++) {
|
|
||||||
final JSONObject json_object = json_array.getJSONObject(i);
|
|
||||||
final String type = json_object.getString("type");
|
|
||||||
switch (type) {
|
|
||||||
case "sgv":
|
|
||||||
BgReading bgReading = new BgReading();
|
|
||||||
|
|
||||||
bgReading.value = json_object.getDouble("sgv");
|
|
||||||
bgReading.direction = json_object.getString("direction");
|
|
||||||
bgReading.date = json_object.getLong("date");
|
|
||||||
bgReading.raw = json_object.getDouble("sgv");
|
|
||||||
|
|
||||||
MainApp.getDbHelper().createIfNotExists(bgReading, "MM640g");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
log.debug("Unknown entries type: " + type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (JSONException e) {
|
|
||||||
log.error("Got JSON exception: " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleNewDataFromNSClient(Intent intent) {
|
private void handleNewDataFromNSClient(Intent intent) {
|
||||||
Bundle bundles = intent.getExtras();
|
Bundle bundles = intent.getExtras();
|
||||||
if (bundles == null) return;
|
if (bundles == null) return;
|
||||||
|
@ -422,20 +194,6 @@ public class DataService extends IntentService {
|
||||||
log.error("Unhandled exception", e);
|
log.error("Unhandled exception", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Handle profile
|
|
||||||
if (intent.getAction().equals(Intents.ACTION_NEW_PROFILE)) {
|
|
||||||
try {
|
|
||||||
String activeProfile = bundles.getString("activeprofile");
|
|
||||||
String profile = bundles.getString("profile");
|
|
||||||
ProfileStore profileStore = new ProfileStore(new JSONObject(profile));
|
|
||||||
NSProfilePlugin.getPlugin().storeNewProfile(profileStore);
|
|
||||||
MainApp.bus().post(new EventNSProfileUpdateGUI());
|
|
||||||
if (Config.logIncommingData)
|
|
||||||
log.debug("Received profileStore: " + activeProfile + " " + profile);
|
|
||||||
} catch (JSONException e) {
|
|
||||||
log.error("Unhandled exception", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (intent.getAction().equals(Intents.ACTION_NEW_TREATMENT) || intent.getAction().equals(Intents.ACTION_CHANGED_TREATMENT)) {
|
if (intent.getAction().equals(Intents.ACTION_NEW_TREATMENT) || intent.getAction().equals(Intents.ACTION_CHANGED_TREATMENT)) {
|
||||||
try {
|
try {
|
||||||
|
@ -477,27 +235,6 @@ public class DataService extends IntentService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intent.getAction().equals(Intents.ACTION_NEW_SGV)) {
|
|
||||||
try {
|
|
||||||
if (bundles.containsKey("sgv")) {
|
|
||||||
String sgvstring = bundles.getString("sgv");
|
|
||||||
JSONObject sgvJson = new JSONObject(sgvstring);
|
|
||||||
storeSgv(sgvJson);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bundles.containsKey("sgvs")) {
|
|
||||||
String sgvstring = bundles.getString("sgvs");
|
|
||||||
JSONArray jsonArray = new JSONArray(sgvstring);
|
|
||||||
for (int i = 0; i < jsonArray.length(); i++) {
|
|
||||||
JSONObject sgvJson = jsonArray.getJSONObject(i);
|
|
||||||
storeSgv(sgvJson);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Unhandled exception", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (intent.getAction().equals(Intents.ACTION_NEW_MBG)) {
|
if (intent.getAction().equals(Intents.ACTION_NEW_MBG)) {
|
||||||
try {
|
try {
|
||||||
if (bundles.containsKey("mbg")) {
|
if (bundles.containsKey("mbg")) {
|
||||||
|
@ -580,7 +317,7 @@ public class DataService extends IntentService {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eventType.equals(CareportalEvent.ANNOUNCEMENT)) {
|
if (eventType.equals(CareportalEvent.ANNOUNCEMENT)) {
|
||||||
long date = JsonHelper.safeGetLong(json,"mills");
|
long date = JsonHelper.safeGetLong(json, "mills");
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
String enteredBy = JsonHelper.safeGetString(json, "enteredBy", "");
|
String enteredBy = JsonHelper.safeGetString(json, "enteredBy", "");
|
||||||
String notes = JsonHelper.safeGetString(json, "notes", "");
|
String notes = JsonHelper.safeGetString(json, "notes", "");
|
||||||
|
@ -600,17 +337,4 @@ public class DataService extends IntentService {
|
||||||
log.debug("Adding/Updating new MBG: " + careportalEvent.log());
|
log.debug("Adding/Updating new MBG: " + careportalEvent.log());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void storeSgv(JSONObject sgvJson) {
|
|
||||||
NSSgv nsSgv = new NSSgv(sgvJson);
|
|
||||||
BgReading bgReading = new BgReading(nsSgv);
|
|
||||||
MainApp.getDbHelper().createIfNotExists(bgReading, "NS");
|
|
||||||
SourceNSClientPlugin.getPlugin().detectSource(JsonHelper.safeGetString(sgvJson, "device"), JsonHelper.safeGetLong(sgvJson, "mills"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleNewSMS(Intent intent) {
|
|
||||||
Bundle bundle = intent.getExtras();
|
|
||||||
if (bundle == null) return;
|
|
||||||
MainApp.bus().post(new EventNewSMS(bundle));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,14 @@ public class Profile {
|
||||||
protected Profile() {
|
protected Profile() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
if (json != null)
|
||||||
|
return json.toString();
|
||||||
|
else
|
||||||
|
return "Profile has no JSON";
|
||||||
|
}
|
||||||
|
|
||||||
// Constructor from profileStore JSON
|
// Constructor from profileStore JSON
|
||||||
public Profile(JSONObject json, String units) {
|
public Profile(JSONObject json, String units) {
|
||||||
init(json, 100, 0);
|
init(json, 100, 0);
|
||||||
|
@ -295,8 +303,6 @@ public class Profile {
|
||||||
Integer getShitfTimeSecs(Integer originalTime) {
|
Integer getShitfTimeSecs(Integer originalTime) {
|
||||||
Integer shiftedTime = originalTime + timeshift * 60 * 60;
|
Integer shiftedTime = originalTime + timeshift * 60 * 60;
|
||||||
shiftedTime = (shiftedTime + 24 * 60 * 60) % (24 * 60 * 60);
|
shiftedTime = (shiftedTime + 24 * 60 * 60) % (24 * 60 * 60);
|
||||||
if (timeshift != 0 && Config.logProfile)
|
|
||||||
log.debug("(Sec) Original time: " + originalTime + " ShiftedTime: " + shiftedTime);
|
|
||||||
return shiftedTime;
|
return shiftedTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -431,6 +431,23 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
return new ArrayList<BgReading>();
|
return new ArrayList<BgReading>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<BgReading> getBgreadingsDataFromTime(long start, long end, boolean ascending) {
|
||||||
|
try {
|
||||||
|
Dao<BgReading, Long> daoBgreadings = getDaoBgReadings();
|
||||||
|
List<BgReading> bgReadings;
|
||||||
|
QueryBuilder<BgReading, Long> queryBuilder = daoBgreadings.queryBuilder();
|
||||||
|
queryBuilder.orderBy("date", ascending);
|
||||||
|
Where where = queryBuilder.where();
|
||||||
|
where.between("date", start, end).and().gt("value", 38).and().eq("isValid", true);
|
||||||
|
PreparedQuery<BgReading> preparedQuery = queryBuilder.prepare();
|
||||||
|
bgReadings = daoBgreadings.query(preparedQuery);
|
||||||
|
return bgReadings;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
log.error("Unhandled exception", e);
|
||||||
|
}
|
||||||
|
return new ArrayList<BgReading>();
|
||||||
|
}
|
||||||
|
|
||||||
public List<BgReading> getAllBgreadingsDataFromTime(long mills, boolean ascending) {
|
public List<BgReading> getAllBgreadingsDataFromTime(long mills, boolean ascending) {
|
||||||
try {
|
try {
|
||||||
Dao<BgReading, Long> daoBgreadings = getDaoBgReadings();
|
Dao<BgReading, Long> daoBgreadings = getDaoBgReadings();
|
||||||
|
@ -676,7 +693,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
.source(Source.NIGHTSCOUT);
|
.source(Source.NIGHTSCOUT);
|
||||||
createOrUpdate(tempTarget);
|
createOrUpdate(tempTarget);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
log.error("Unhandled exception", e);
|
log.error("Unhandled exception: " + trJson.toString(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -762,7 +779,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (SQLException | JSONException e) {
|
} catch (SQLException | JSONException e) {
|
||||||
log.error("Unhandled exception", e);
|
log.error("Unhandled exception: " + trJson.toString(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -967,7 +984,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
createOrUpdate(tempBasal);
|
createOrUpdate(tempBasal);
|
||||||
}
|
}
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
log.error("Unhandled exception", e);
|
log.error("Unhandled exception: " + trJson.toString(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1345,7 +1362,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
careportalEvent._id = trJson.getString("_id");
|
careportalEvent._id = trJson.getString("_id");
|
||||||
createOrUpdate(careportalEvent);
|
createOrUpdate(careportalEvent);
|
||||||
} catch (SQLException | JSONException e) {
|
} catch (SQLException | JSONException e) {
|
||||||
log.error("Unhandled exception", e);
|
log.error("Unhandled exception: " + trJson.toString(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1520,7 +1537,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
profileSwitch.profilePlugin = trJson.getString("profilePlugin");
|
profileSwitch.profilePlugin = trJson.getString("profilePlugin");
|
||||||
createOrUpdate(profileSwitch);
|
createOrUpdate(profileSwitch);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
log.error("Unhandled exception", e);
|
log.error("Unhandled exception: " + trJson.toString(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
package info.nightscout.androidaps.interfaces;
|
package info.nightscout.androidaps.interfaces;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 20.06.2016.
|
* Created by mike on 20.06.2016.
|
||||||
*/
|
*/
|
||||||
public interface BgSourceInterface {
|
public interface BgSourceInterface {
|
||||||
boolean advancedFilteringSupported();
|
boolean advancedFilteringSupported();
|
||||||
|
|
||||||
|
void handleNewData(Intent intent);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package info.nightscout.androidaps.interfaces;
|
package info.nightscout.androidaps.interfaces;
|
||||||
|
|
||||||
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
|
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
|
||||||
|
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 24.06.2017.
|
* Created by mike on 24.06.2017.
|
||||||
|
@ -11,6 +12,6 @@ public interface SensitivityInterface {
|
||||||
double MIN_HOURS = 1;
|
double MIN_HOURS = 1;
|
||||||
double MIN_HOURS_FULL_AUTOSENS = 4;
|
double MIN_HOURS_FULL_AUTOSENS = 4;
|
||||||
|
|
||||||
AutosensResult detectSensitivity(long fromTime, long toTime);
|
AutosensResult detectSensitivity(IobCobCalculatorPlugin plugin, long fromTime, long toTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,6 @@ public class ActionsFragment extends SubscriberFragment implements View.OnClickL
|
||||||
tempBasalCancel.setOnClickListener(this);
|
tempBasalCancel.setOnClickListener(this);
|
||||||
fill.setOnClickListener(this);
|
fill.setOnClickListener(this);
|
||||||
history.setOnClickListener(this);
|
history.setOnClickListener(this);
|
||||||
history.setVisibility(MainApp.devBranch ? View.VISIBLE : View.GONE);
|
|
||||||
tddStats.setOnClickListener(this);
|
tddStats.setOnClickListener(this);
|
||||||
|
|
||||||
updateGUI();
|
updateGUI();
|
||||||
|
|
|
@ -206,8 +206,11 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
|
||||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||||
double defaultDuration;
|
double defaultDuration;
|
||||||
double defaultTarget = 0;
|
double defaultTarget = 0;
|
||||||
if (profile != null) {
|
if (profile != null && editTemptarget.getValue() == bg) {
|
||||||
defaultTarget = bg;
|
defaultTarget = bg;
|
||||||
|
} else {
|
||||||
|
//prevent changes on screen rotate
|
||||||
|
defaultTarget = editTemptarget.getValue();
|
||||||
}
|
}
|
||||||
boolean erase = false;
|
boolean erase = false;
|
||||||
|
|
||||||
|
@ -222,6 +225,8 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
|
||||||
} else if (MainApp.gs(R.string.hypo).equals(reasonList.get(position))) {
|
} else if (MainApp.gs(R.string.hypo).equals(reasonList.get(position))) {
|
||||||
defaultDuration = helper.determineHypoTTDuration();
|
defaultDuration = helper.determineHypoTTDuration();
|
||||||
defaultTarget = helper.determineHypoTT(units);
|
defaultTarget = helper.determineHypoTT(units);
|
||||||
|
} else if (editDuration.getValue() != 0) {
|
||||||
|
defaultDuration = editDuration.getValue();
|
||||||
} else {
|
} else {
|
||||||
defaultDuration = 0;
|
defaultDuration = 0;
|
||||||
erase = true;
|
erase = true;
|
||||||
|
@ -258,7 +263,6 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
|
||||||
if (sensorRadioButton.isChecked()) meterRadioButton.setChecked(true);
|
if (sensorRadioButton.isChecked()) meterRadioButton.setChecked(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
editBg = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_bginput);
|
editBg = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_bginput);
|
||||||
editTemptarget = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_temptarget);
|
editTemptarget = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_temptarget);
|
||||||
if (profile == null) {
|
if (profile == null) {
|
||||||
|
@ -271,9 +275,14 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
|
||||||
editBg.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false, bgTextWatcher);
|
editBg.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false, bgTextWatcher);
|
||||||
editTemptarget.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false);
|
editTemptarget.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
sensorRadioButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
sensorRadioButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||||
Double bg1 = Profile.fromMgdlToUnits(GlucoseStatus.getGlucoseStatusData() != null ? GlucoseStatus.getGlucoseStatusData().glucose : 0d, profile.getUnits());
|
Double bg1 = Profile.fromMgdlToUnits(GlucoseStatus.getGlucoseStatusData() != null ? GlucoseStatus.getGlucoseStatusData().glucose : 0d, profile.getUnits());
|
||||||
editBg.setValue(bg1);
|
if (savedInstanceState != null && savedInstanceState.getDouble("editBg") != bg1) {
|
||||||
|
editBg.setValue(savedInstanceState.getDouble("editBg"));
|
||||||
|
} else {
|
||||||
|
editBg.setValue(bg1);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Integer maxCarbs = MainApp.getConstraintChecker().getMaxCarbsAllowed().value();
|
Integer maxCarbs = MainApp.getConstraintChecker().getMaxCarbsAllowed().value();
|
||||||
|
@ -378,6 +387,25 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
|
||||||
|
|
||||||
setCancelable(true);
|
setCancelable(true);
|
||||||
getDialog().setCanceledOnTouchOutside(false);
|
getDialog().setCanceledOnTouchOutside(false);
|
||||||
|
//recovering state if there is something
|
||||||
|
// only numberPickers and editTexts
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
editBg.setValue(savedInstanceState.getDouble("editBg"));
|
||||||
|
editTemptarget.setValue(savedInstanceState.getDouble("editTemptarget"));
|
||||||
|
notesEdit.setText(savedInstanceState.getString("notesEdit"));
|
||||||
|
editCarbs.setValue(savedInstanceState.getDouble("editCarbs"));
|
||||||
|
editCarbs.setValue(savedInstanceState.getDouble("editCarbs"));
|
||||||
|
editInsulin.setValue(savedInstanceState.getDouble("editInsulin"));
|
||||||
|
editDuration.setValue(savedInstanceState.getDouble("editDuration"));
|
||||||
|
editPercent.setValue(savedInstanceState.getDouble("editPercent"));
|
||||||
|
editAbsolute.setValue(savedInstanceState.getDouble("editAbsolute"));
|
||||||
|
editCarbTime.setValue(savedInstanceState.getDouble("editCarbTime"));
|
||||||
|
editPercentage.setValue(savedInstanceState.getDouble("editPercentage"));
|
||||||
|
editTimeshift.setValue(savedInstanceState.getDouble("editTimeshift"));
|
||||||
|
// time and date
|
||||||
|
dateButton.setText(savedInstanceState.getString("dateButton"));
|
||||||
|
timeButton.setText(savedInstanceState.getString("timeButton"));
|
||||||
|
}
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -772,4 +800,22 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle savedInstanceState) {
|
||||||
|
savedInstanceState.putString("notesEdit", notesEdit.getText().toString());
|
||||||
|
savedInstanceState.putString("dateButton", dateButton.getText().toString());
|
||||||
|
savedInstanceState.putString("timeButton", timeButton.getText().toString());
|
||||||
|
savedInstanceState.putDouble("editBg", editBg.getValue());
|
||||||
|
savedInstanceState.putDouble("editCarbs", editCarbs.getValue());
|
||||||
|
savedInstanceState.putDouble("editInsulin", editInsulin.getValue());
|
||||||
|
savedInstanceState.putDouble("editDuration", editDuration.getValue());
|
||||||
|
savedInstanceState.putDouble("editPercent", editPercent.getValue());
|
||||||
|
savedInstanceState.putDouble("editAbsolute", editAbsolute.getValue());
|
||||||
|
savedInstanceState.putDouble("editCarbTime", editCarbTime.getValue());
|
||||||
|
savedInstanceState.putDouble("editTemptarget", editTemptarget.getValue());
|
||||||
|
savedInstanceState.putDouble("editPercentage", editPercentage.getValue());
|
||||||
|
savedInstanceState.putDouble("editTimeshift", editTimeshift.getValue());
|
||||||
|
super.onSaveInstanceState(savedInstanceState);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ import info.nightscout.utils.SP;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class AutosensData implements DataPointWithLabelInterface {
|
public class AutosensData implements DataPointWithLabelInterface {
|
||||||
private static Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
|
|
||||||
public void setChartTime(long chartTime) {
|
public void setChartTime(long chartTime) {
|
||||||
this.chartTime = chartTime;
|
this.chartTime = chartTime;
|
||||||
|
|
|
@ -5,11 +5,13 @@ import org.json.JSONObject;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 06.01.2017.
|
* Created by mike on 06.01.2017.
|
||||||
*/
|
*/
|
||||||
public class AutosensResult {
|
public class AutosensResult {
|
||||||
private static Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
|
|
||||||
//default values to show when autosens algorithm is not called
|
//default values to show when autosens algorithm is not called
|
||||||
public double ratio = 1d;
|
public double ratio = 1d;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package info.nightscout.androidaps.plugins.IobCobCalculator;
|
package info.nightscout.androidaps.plugins.IobCobCalculator;
|
||||||
|
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.provider.SyncStateContract;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.util.LongSparseArray;
|
import android.support.v4.util.LongSparseArray;
|
||||||
|
@ -48,7 +49,7 @@ import static info.nightscout.utils.DateUtil.now;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class IobCobCalculatorPlugin extends PluginBase {
|
public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
private Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
|
|
||||||
private static IobCobCalculatorPlugin plugin = null;
|
private static IobCobCalculatorPlugin plugin = null;
|
||||||
|
|
||||||
|
@ -98,6 +99,10 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
return autosensDataTable;
|
return autosensDataTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<BgReading> getBgReadings() {
|
||||||
|
return bgReadings;
|
||||||
|
}
|
||||||
|
|
||||||
public List<BgReading> getBucketedData() {
|
public List<BgReading> getBucketedData() {
|
||||||
return bucketed_data;
|
return bucketed_data;
|
||||||
}
|
}
|
||||||
|
@ -136,13 +141,10 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
return rounded;
|
return rounded;
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadBgData(long start) {
|
void loadBgData(long now) {
|
||||||
if (start < oldestDataAvailable()) {
|
long start = (long) (now - 60 * 60 * 1000L * (24 + dia));
|
||||||
start = oldestDataAvailable();
|
bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime(start, now, false);
|
||||||
log.debug("Limiting BG data to oldest data available: " + DateUtil.dateAndTimeString(start));
|
log.debug("BG data loaded. Size: " + bgReadings.size() + " Start date: " + DateUtil.dateAndTimeString(start) + " End date: " + DateUtil.dateAndTimeString(now));
|
||||||
}
|
|
||||||
bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime((long) (start - 60 * 60 * 1000L * (24 + dia)), false);
|
|
||||||
log.debug("BG data loaded. Size: " + bgReadings.size() + " Start date: " + DateUtil.dateAndTimeString(start));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isAbout5minData() {
|
private boolean isAbout5minData() {
|
||||||
|
@ -294,12 +296,19 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
log.debug("Bucketed data created. Size: " + bucketed_data.size());
|
log.debug("Bucketed data created. Size: " + bucketed_data.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
public long oldestDataAvailable() {
|
public long calculateDetectionStart(long from, boolean limitDataToOldestAvailable) {
|
||||||
long now = System.currentTimeMillis();
|
Profile profile = MainApp.getConfigBuilder().getProfile(from);
|
||||||
|
double dia = Constants.defaultDIA;
|
||||||
|
if (profile != null) dia = profile.getDia();
|
||||||
|
|
||||||
long oldestDataAvailable = TreatmentsPlugin.getPlugin().oldestDataAvailable();
|
long oldestDataAvailable = TreatmentsPlugin.getPlugin().oldestDataAvailable();
|
||||||
long getBGDataFrom = Math.max(oldestDataAvailable, (long) (now - T.hours(1).msecs() * (24 + MainApp.getConfigBuilder().getProfile().getDia())));
|
long getBGDataFrom;
|
||||||
log.debug("Limiting data to oldest available temps: " + new Date(oldestDataAvailable).toString());
|
if (limitDataToOldestAvailable) {
|
||||||
|
getBGDataFrom = Math.max(oldestDataAvailable, (long) (from - T.hours(1).msecs() * (24 + dia)));
|
||||||
|
if (getBGDataFrom == oldestDataAvailable)
|
||||||
|
log.debug("Limiting data to oldest available temps: " + new Date(oldestDataAvailable).toString());
|
||||||
|
} else
|
||||||
|
getBGDataFrom = (long) (from - T.hours(1).msecs() * (24 + dia));
|
||||||
return getBGDataFrom;
|
return getBGDataFrom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,7 +412,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public AutosensData getLastAutosensDataSynchronized(String reason) {
|
public AutosensData getLastAutosensDataSynchronized(String reason) {
|
||||||
if (thread != null && thread.isAlive()) {
|
if (thread != null && thread.isAlive()) {
|
||||||
log.debug("AUTOSENSDATA is waiting for calculation thread: " + reason);
|
log.debug("AUTOSENSDATA is waiting for calculation thread: " + reason);
|
||||||
try {
|
try {
|
||||||
thread.join(5000);
|
thread.join(5000);
|
||||||
|
@ -510,7 +519,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
|
|
||||||
public AutosensResult detectSensitivityWithLock(long fromTime, long toTime) {
|
public AutosensResult detectSensitivityWithLock(long fromTime, long toTime) {
|
||||||
synchronized (dataLock) {
|
synchronized (dataLock) {
|
||||||
return ConfigBuilderPlugin.getActiveSensitivity().detectSensitivity(fromTime, toTime);
|
return ConfigBuilderPlugin.getActiveSensitivity().detectSensitivity(this, fromTime, toTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -529,7 +538,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
log.debug("Ignoring event for non default instance");
|
log.debug("Ignoring event for non default instance");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
runCalculation("onEventAppInitialized", System.currentTimeMillis(), true, ev);
|
runCalculation("onEventAppInitialized", System.currentTimeMillis(), true, true, ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
|
@ -540,10 +549,10 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
stopCalculation("onEventNewBG");
|
stopCalculation("onEventNewBG");
|
||||||
runCalculation("onEventNewBG", System.currentTimeMillis(), true, ev);
|
runCalculation("onEventNewBG", System.currentTimeMillis(), true, true, ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stopCalculation(String from) {
|
public void stopCalculation(String from) {
|
||||||
if (thread != null && thread.getState() != Thread.State.TERMINATED) {
|
if (thread != null && thread.getState() != Thread.State.TERMINATED) {
|
||||||
stopCalculationTrigger = true;
|
stopCalculationTrigger = true;
|
||||||
log.debug("Stopping calculation thread: " + from);
|
log.debug("Stopping calculation thread: " + from);
|
||||||
|
@ -554,13 +563,13 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runCalculation(String from, long start, boolean bgDataReload, Event cause) {
|
public void runCalculation(String from, long end, boolean bgDataReload, boolean limitDataToOldestAvailable, Event cause) {
|
||||||
log.debug("Starting calculation thread: " + from);
|
log.debug("Starting calculation thread: " + from + " to " + DateUtil.dateAndTimeString(end));
|
||||||
if (thread == null || thread.getState() == Thread.State.TERMINATED) {
|
if (thread == null || thread.getState() == Thread.State.TERMINATED) {
|
||||||
if (SensitivityOref1Plugin.getPlugin().isEnabled(PluginType.SENSITIVITY))
|
if (SensitivityOref1Plugin.getPlugin().isEnabled(PluginType.SENSITIVITY))
|
||||||
thread = new IobCobOref1Thread(this, from, start, bgDataReload, cause);
|
thread = new IobCobOref1Thread(this, from, end, bgDataReload, limitDataToOldestAvailable, cause);
|
||||||
else
|
else
|
||||||
thread = new IobCobThread(this, from, start, bgDataReload, cause);
|
thread = new IobCobThread(this, from, end, bgDataReload, limitDataToOldestAvailable, cause);
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -586,7 +595,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
iobTable = new LongSparseArray<>();
|
iobTable = new LongSparseArray<>();
|
||||||
autosensDataTable = new LongSparseArray<>();
|
autosensDataTable = new LongSparseArray<>();
|
||||||
}
|
}
|
||||||
runCalculation("onNewProfile", System.currentTimeMillis(), false, ev);
|
runCalculation("onNewProfile", System.currentTimeMillis(), false, true, ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
|
@ -609,7 +618,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
iobTable = new LongSparseArray<>();
|
iobTable = new LongSparseArray<>();
|
||||||
autosensDataTable = new LongSparseArray<>();
|
autosensDataTable = new LongSparseArray<>();
|
||||||
}
|
}
|
||||||
runCalculation("onEventPreferenceChange", System.currentTimeMillis(), false, ev);
|
runCalculation("onEventPreferenceChange", System.currentTimeMillis(), false, true, ev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -625,7 +634,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
iobTable = new LongSparseArray<>();
|
iobTable = new LongSparseArray<>();
|
||||||
autosensDataTable = new LongSparseArray<>();
|
autosensDataTable = new LongSparseArray<>();
|
||||||
}
|
}
|
||||||
runCalculation("onEventConfigBuilderChange", System.currentTimeMillis(), false, ev);
|
runCalculation("onEventConfigBuilderChange", System.currentTimeMillis(), false, true, ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
// When historical data is changed (comming from NS etc) finished calculations after this date must be invalidated
|
// When historical data is changed (comming from NS etc) finished calculations after this date must be invalidated
|
||||||
|
@ -669,7 +678,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
runCalculation("onEventNewHistoryData", System.currentTimeMillis(), false, ev);
|
runCalculation("onEventNewHistoryData", System.currentTimeMillis(), false, true, ev);
|
||||||
//log.debug("Releasing onNewHistoryData");
|
//log.debug("Releasing onNewHistoryData");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,24 +43,26 @@ import static java.util.Calendar.MINUTE;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class IobCobOref1Thread extends Thread {
|
public class IobCobOref1Thread extends Thread {
|
||||||
private static Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
private final Event cause;
|
private final Event cause;
|
||||||
|
|
||||||
private IobCobCalculatorPlugin iobCobCalculatorPlugin;
|
private IobCobCalculatorPlugin iobCobCalculatorPlugin;
|
||||||
private boolean bgDataReload;
|
private boolean bgDataReload;
|
||||||
|
private boolean limitDataToOldestAvailable;
|
||||||
private String from;
|
private String from;
|
||||||
private long start;
|
private long end;
|
||||||
|
|
||||||
private PowerManager.WakeLock mWakeLock;
|
private PowerManager.WakeLock mWakeLock;
|
||||||
|
|
||||||
public IobCobOref1Thread(IobCobCalculatorPlugin plugin, String from, long start, boolean bgDataReload, Event cause) {
|
public IobCobOref1Thread(IobCobCalculatorPlugin plugin, String from, long end, boolean bgDataReload, boolean limitDataToOldestAvailable, Event cause) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.iobCobCalculatorPlugin = plugin;
|
this.iobCobCalculatorPlugin = plugin;
|
||||||
this.bgDataReload = bgDataReload;
|
this.bgDataReload = bgDataReload;
|
||||||
|
this.limitDataToOldestAvailable = limitDataToOldestAvailable;
|
||||||
this.from = from;
|
this.from = from;
|
||||||
this.cause = cause;
|
this.cause = cause;
|
||||||
this.start = start;
|
this.end = end;
|
||||||
|
|
||||||
PowerManager powerManager = (PowerManager) MainApp.instance().getApplicationContext().getSystemService(Context.POWER_SERVICE);
|
PowerManager powerManager = (PowerManager) MainApp.instance().getApplicationContext().getSystemService(Context.POWER_SERVICE);
|
||||||
mWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "iobCobThread");
|
mWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "iobCobThread");
|
||||||
|
@ -81,15 +83,15 @@ public class IobCobOref1Thread extends Thread {
|
||||||
}
|
}
|
||||||
//log.debug("Locking calculateSensitivityData");
|
//log.debug("Locking calculateSensitivityData");
|
||||||
|
|
||||||
long oldestTimeWithData = iobCobCalculatorPlugin.oldestDataAvailable();
|
long oldestTimeWithData = iobCobCalculatorPlugin.calculateDetectionStart(end, limitDataToOldestAvailable);
|
||||||
|
|
||||||
synchronized (iobCobCalculatorPlugin.dataLock) {
|
synchronized (iobCobCalculatorPlugin.dataLock) {
|
||||||
if (bgDataReload) {
|
if (bgDataReload) {
|
||||||
iobCobCalculatorPlugin.loadBgData(start);
|
iobCobCalculatorPlugin.loadBgData(end);
|
||||||
iobCobCalculatorPlugin.createBucketedData();
|
iobCobCalculatorPlugin.createBucketedData();
|
||||||
}
|
}
|
||||||
List<BgReading> bucketed_data = iobCobCalculatorPlugin.getBucketedData();
|
List<BgReading> bucketed_data = iobCobCalculatorPlugin.getBucketedData();
|
||||||
LongSparseArray<AutosensData> autosensDataTable = IobCobCalculatorPlugin.getPlugin().getAutosensDataTable();
|
LongSparseArray<AutosensData> autosensDataTable = iobCobCalculatorPlugin.getAutosensDataTable();
|
||||||
|
|
||||||
if (bucketed_data == null || bucketed_data.size() < 3) {
|
if (bucketed_data == null || bucketed_data.size() < 3) {
|
||||||
log.debug("Aborting calculation thread (No bucketed data available): " + from);
|
log.debug("Aborting calculation thread (No bucketed data available): " + from);
|
||||||
|
@ -166,7 +168,7 @@ public class IobCobOref1Thread extends Thread {
|
||||||
// https://github.com/openaps/oref0/blob/master/lib/determine-basal/cob-autosens.js#L169
|
// https://github.com/openaps/oref0/blob/master/lib/determine-basal/cob-autosens.js#L169
|
||||||
if (i < bucketed_data.size() - 16) { // we need 1h of data to calculate minDeviationSlope
|
if (i < bucketed_data.size() - 16) { // we need 1h of data to calculate minDeviationSlope
|
||||||
long hourago = bgTime + 10 * 1000 - 60 * 60 * 1000L;
|
long hourago = bgTime + 10 * 1000 - 60 * 60 * 1000L;
|
||||||
AutosensData hourAgoData = IobCobCalculatorPlugin.getPlugin().getAutosensData(hourago);
|
AutosensData hourAgoData = iobCobCalculatorPlugin.getAutosensData(hourago);
|
||||||
if (hourAgoData != null) {
|
if (hourAgoData != null) {
|
||||||
int initialIndex = autosensDataTable.indexOfKey(hourAgoData.time);
|
int initialIndex = autosensDataTable.indexOfKey(hourAgoData.time);
|
||||||
if (Config.logAutosensData)
|
if (Config.logAutosensData)
|
||||||
|
@ -339,7 +341,7 @@ public class IobCobOref1Thread extends Thread {
|
||||||
if (bgTime < now())
|
if (bgTime < now())
|
||||||
autosensDataTable.put(bgTime, autosensData);
|
autosensDataTable.put(bgTime, autosensData);
|
||||||
if (Config.logAutosensData)
|
if (Config.logAutosensData)
|
||||||
log.debug("Running detectSensitivity from: " + DateUtil.dateAndTimeString(oldestTimeWithData) + " to: " + DateUtil.dateAndTimeString(bgTime) + " lastDataTime:" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("Running detectSensitivity from: " + DateUtil.dateAndTimeString(oldestTimeWithData) + " to: " + DateUtil.dateAndTimeString(bgTime) + " lastDataTime:" + iobCobCalculatorPlugin.lastDataTime());
|
||||||
AutosensResult sensitivity = iobCobCalculatorPlugin.detectSensitivityWithLock(oldestTimeWithData, bgTime);
|
AutosensResult sensitivity = iobCobCalculatorPlugin.detectSensitivityWithLock(oldestTimeWithData, bgTime);
|
||||||
if (Config.logAutosensData)
|
if (Config.logAutosensData)
|
||||||
log.debug("Sensitivity result: " + sensitivity.toString());
|
log.debug("Sensitivity result: " + sensitivity.toString());
|
||||||
|
|
|
@ -42,24 +42,26 @@ import static info.nightscout.utils.DateUtil.now;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class IobCobThread extends Thread {
|
public class IobCobThread extends Thread {
|
||||||
private static Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
private final Event cause;
|
private final Event cause;
|
||||||
|
|
||||||
private IobCobCalculatorPlugin iobCobCalculatorPlugin;
|
private IobCobCalculatorPlugin iobCobCalculatorPlugin;
|
||||||
private boolean bgDataReload;
|
private boolean bgDataReload;
|
||||||
|
private boolean limitDataToOldestAvailable;
|
||||||
private String from;
|
private String from;
|
||||||
private long start;
|
private long end;
|
||||||
|
|
||||||
private PowerManager.WakeLock mWakeLock;
|
private PowerManager.WakeLock mWakeLock;
|
||||||
|
|
||||||
public IobCobThread(IobCobCalculatorPlugin plugin, String from, long start, boolean bgDataReload, Event cause) {
|
public IobCobThread(IobCobCalculatorPlugin plugin, String from, long end, boolean bgDataReload, boolean limitDataToOldestAvailable, Event cause) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.iobCobCalculatorPlugin = plugin;
|
this.iobCobCalculatorPlugin = plugin;
|
||||||
this.bgDataReload = bgDataReload;
|
this.bgDataReload = bgDataReload;
|
||||||
|
this.limitDataToOldestAvailable = limitDataToOldestAvailable;
|
||||||
this.from = from;
|
this.from = from;
|
||||||
this.cause = cause;
|
this.cause = cause;
|
||||||
this.start = start;
|
this.end = end;
|
||||||
|
|
||||||
PowerManager powerManager = (PowerManager) MainApp.instance().getApplicationContext().getSystemService(Context.POWER_SERVICE);
|
PowerManager powerManager = (PowerManager) MainApp.instance().getApplicationContext().getSystemService(Context.POWER_SERVICE);
|
||||||
mWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "iobCobThread");
|
mWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "iobCobThread");
|
||||||
|
@ -80,15 +82,15 @@ public class IobCobThread extends Thread {
|
||||||
}
|
}
|
||||||
//log.debug("Locking calculateSensitivityData");
|
//log.debug("Locking calculateSensitivityData");
|
||||||
|
|
||||||
long oldestTimeWithData = iobCobCalculatorPlugin.oldestDataAvailable();
|
long oldestTimeWithData = iobCobCalculatorPlugin.calculateDetectionStart(end, limitDataToOldestAvailable);
|
||||||
|
|
||||||
synchronized (iobCobCalculatorPlugin.dataLock) {
|
synchronized (iobCobCalculatorPlugin.dataLock) {
|
||||||
if (bgDataReload) {
|
if (bgDataReload) {
|
||||||
iobCobCalculatorPlugin.loadBgData(start);
|
iobCobCalculatorPlugin.loadBgData(end);
|
||||||
iobCobCalculatorPlugin.createBucketedData();
|
iobCobCalculatorPlugin.createBucketedData();
|
||||||
}
|
}
|
||||||
List<BgReading> bucketed_data = iobCobCalculatorPlugin.getBucketedData();
|
List<BgReading> bucketed_data = iobCobCalculatorPlugin.getBucketedData();
|
||||||
LongSparseArray<AutosensData> autosensDataTable = IobCobCalculatorPlugin.getPlugin().getAutosensDataTable();
|
LongSparseArray<AutosensData> autosensDataTable = iobCobCalculatorPlugin.getAutosensDataTable();
|
||||||
|
|
||||||
if (bucketed_data == null || bucketed_data.size() < 3) {
|
if (bucketed_data == null || bucketed_data.size() < 3) {
|
||||||
log.debug("Aborting calculation thread (No bucketed data available): " + from);
|
log.debug("Aborting calculation thread (No bucketed data available): " + from);
|
||||||
|
@ -165,7 +167,7 @@ public class IobCobThread extends Thread {
|
||||||
// https://github.com/openaps/oref0/blob/master/lib/determine-basal/cob-autosens.js#L169
|
// https://github.com/openaps/oref0/blob/master/lib/determine-basal/cob-autosens.js#L169
|
||||||
if (i < bucketed_data.size() - 16) { // we need 1h of data to calculate minDeviationSlope
|
if (i < bucketed_data.size() - 16) { // we need 1h of data to calculate minDeviationSlope
|
||||||
long hourago = bgTime + 10 * 1000 - 60 * 60 * 1000L;
|
long hourago = bgTime + 10 * 1000 - 60 * 60 * 1000L;
|
||||||
AutosensData hourAgoData = IobCobCalculatorPlugin.getPlugin().getAutosensData(hourago);
|
AutosensData hourAgoData = iobCobCalculatorPlugin.getAutosensData(hourago);
|
||||||
if (hourAgoData != null) {
|
if (hourAgoData != null) {
|
||||||
int initialIndex = autosensDataTable.indexOfKey(hourAgoData.time);
|
int initialIndex = autosensDataTable.indexOfKey(hourAgoData.time);
|
||||||
if (Config.logAutosensData)
|
if (Config.logAutosensData)
|
||||||
|
@ -266,7 +268,7 @@ public class IobCobThread extends Thread {
|
||||||
if (bgTime < now())
|
if (bgTime < now())
|
||||||
autosensDataTable.put(bgTime, autosensData);
|
autosensDataTable.put(bgTime, autosensData);
|
||||||
if (Config.logAutosensData)
|
if (Config.logAutosensData)
|
||||||
log.debug("Running detectSensitivity from: " + DateUtil.dateAndTimeString(oldestTimeWithData) + " to: " + DateUtil.dateAndTimeString(bgTime) + " lastDataTime:" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("Running detectSensitivity from: " + DateUtil.dateAndTimeString(oldestTimeWithData) + " to: " + DateUtil.dateAndTimeString(bgTime) + " lastDataTime:" + iobCobCalculatorPlugin.lastDataTime());
|
||||||
AutosensResult sensitivity = iobCobCalculatorPlugin.detectSensitivityWithLock(oldestTimeWithData, bgTime);
|
AutosensResult sensitivity = iobCobCalculatorPlugin.detectSensitivityWithLock(oldestTimeWithData, bgTime);
|
||||||
if (Config.logAutosensData)
|
if (Config.logAutosensData)
|
||||||
log.debug("Sensitivity result: " + sensitivity.toString());
|
log.debug("Sensitivity result: " + sensitivity.toString());
|
||||||
|
|
|
@ -179,6 +179,7 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
|
||||||
MainApp.bus().post(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openaps_noasdata)));
|
MainApp.bus().post(new EventOpenAPSUpdateResultGui(MainApp.gs(R.string.openaps_noasdata)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
lastAutosensResult = autosensData.autosensResult;
|
||||||
} else {
|
} else {
|
||||||
lastAutosensResult = new AutosensResult();
|
lastAutosensResult = new AutosensResult();
|
||||||
lastAutosensResult.sensResult = "autosens disabled";
|
lastAutosensResult.sensResult = "autosens disabled";
|
||||||
|
|
|
@ -157,13 +157,22 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
|
||||||
|
|
||||||
BgReading bgReading = DatabaseHelper.actualBg();
|
BgReading bgReading = DatabaseHelper.actualBg();
|
||||||
if (bgReading != null && bgReading.value < 72) {
|
if (bgReading != null && bgReading.value < 72) {
|
||||||
startHypoTTCheckbox.setOnCheckedChangeListener(null);
|
|
||||||
startHypoTTCheckbox.setChecked(true);
|
startHypoTTCheckbox.setChecked(true);
|
||||||
|
// see #onCheckedChanged why listeners are registered like this
|
||||||
|
startHypoTTCheckbox.setOnClickListener(this);
|
||||||
|
} else {
|
||||||
|
startHypoTTCheckbox.setOnCheckedChangeListener(this);
|
||||||
}
|
}
|
||||||
startHypoTTCheckbox.setOnClickListener(this);
|
|
||||||
|
|
||||||
setCancelable(true);
|
setCancelable(true);
|
||||||
getDialog().setCanceledOnTouchOutside(false);
|
getDialog().setCanceledOnTouchOutside(false);
|
||||||
|
|
||||||
|
//recovering state if there is something
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
editCarbs.setValue(savedInstanceState.getDouble("editCarbs"));
|
||||||
|
editTime.setValue(savedInstanceState.getDouble("editTime"));
|
||||||
|
editDuration.setValue(savedInstanceState.getDouble("editDuration"));
|
||||||
|
}
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,6 +180,19 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
|
||||||
return value > 0 ? "+" + value : String.valueOf(value);
|
return value > 0 ? "+" + value : String.valueOf(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle carbsDialogState) {
|
||||||
|
carbsDialogState.putBoolean("startActivityTTCheckbox",startActivityTTCheckbox.isChecked());
|
||||||
|
carbsDialogState.putBoolean("startEatingSoonTTCheckbox", startEatingSoonTTCheckbox.isChecked());
|
||||||
|
carbsDialogState.putBoolean("startHypoTTCheckbox", startHypoTTCheckbox.isChecked());
|
||||||
|
carbsDialogState.putDouble("editTime", editTime.getValue());
|
||||||
|
carbsDialogState.putDouble("editDuration", editDuration.getValue());
|
||||||
|
carbsDialogState.putDouble("editCarbs", editCarbs.getValue());
|
||||||
|
super.onSaveInstanceState(carbsDialogState);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void onClick(View view) {
|
public synchronized void onClick(View view) {
|
||||||
switch (view.getId()) {
|
switch (view.getId()) {
|
||||||
|
@ -228,6 +250,8 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
// Logic to disable a selected radio when pressed: when a checked radio
|
// Logic to disable a selected radio when pressed: when a checked radio
|
||||||
|
|
|
@ -147,6 +147,23 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com
|
||||||
MainApp.bus().unregister(this);
|
MainApp.bus().unregister(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle savedInstanceState) {
|
||||||
|
savedInstanceState.putBoolean("bgCheckbox", bgCheckbox.isChecked());
|
||||||
|
savedInstanceState.putBoolean("ttCheckbox", ttCheckbox.isChecked());
|
||||||
|
savedInstanceState.putBoolean("bolusIobCheckbox", bolusIobCheckbox.isChecked());
|
||||||
|
savedInstanceState.putBoolean("basalIobCheckbox", basalIobCheckbox.isChecked());
|
||||||
|
savedInstanceState.putBoolean("bgtrendCheckbox", bgtrendCheckbox.isChecked());
|
||||||
|
savedInstanceState.putBoolean("cobCheckbox", cobCheckbox.isChecked());
|
||||||
|
savedInstanceState.putDouble("editBg", editBg.getValue());
|
||||||
|
savedInstanceState.putDouble("editCarbs", editCarbs.getValue());
|
||||||
|
savedInstanceState.putDouble("editCorr", editCorr.getValue());
|
||||||
|
savedInstanceState.putDouble("editCarbTime", editCarbTime.getValue());
|
||||||
|
super.onSaveInstanceState(savedInstanceState);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onStatusEvent(final EventNewBG e) {
|
public void onStatusEvent(final EventNewBG e) {
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
|
@ -259,6 +276,13 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com
|
||||||
|
|
||||||
setCancelable(true);
|
setCancelable(true);
|
||||||
getDialog().setCanceledOnTouchOutside(false);
|
getDialog().setCanceledOnTouchOutside(false);
|
||||||
|
//recovering state if there is something
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
editCarbs.setValue(savedInstanceState.getDouble("editCarbs"));
|
||||||
|
editBg.setValue(savedInstanceState.getDouble("editBg"));
|
||||||
|
editCarbTime.setValue(savedInstanceState.getDouble("editCarbTime"));
|
||||||
|
editCorr.setValue(savedInstanceState.getDouble("editCorr"));
|
||||||
|
}
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,7 @@ import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialo
|
||||||
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
|
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin;
|
import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData;
|
||||||
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
|
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
|
||||||
import info.nightscout.androidaps.plugins.IobCobCalculator.CobInfo;
|
import info.nightscout.androidaps.plugins.IobCobCalculator.CobInfo;
|
||||||
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
|
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
|
||||||
|
@ -125,7 +126,7 @@ import info.nightscout.utils.ToastUtils;
|
||||||
import static info.nightscout.utils.DateUtil.now;
|
import static info.nightscout.utils.DateUtil.now;
|
||||||
|
|
||||||
public class OverviewFragment extends Fragment implements View.OnClickListener, View.OnLongClickListener {
|
public class OverviewFragment extends Fragment implements View.OnClickListener, View.OnLongClickListener {
|
||||||
private static Logger log = LoggerFactory.getLogger(OverviewFragment.class);
|
private static Logger log = LoggerFactory.getLogger(Constants.OVERVIEW);
|
||||||
|
|
||||||
TextView timeView;
|
TextView timeView;
|
||||||
TextView bgView;
|
TextView bgView;
|
||||||
|
@ -200,143 +201,136 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
|
|
||||||
try {
|
//check screen width
|
||||||
//check screen width
|
final DisplayMetrics dm = new DisplayMetrics();
|
||||||
final DisplayMetrics dm = new DisplayMetrics();
|
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
|
||||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
|
int screen_width = dm.widthPixels;
|
||||||
int screen_width = dm.widthPixels;
|
int screen_height = dm.heightPixels;
|
||||||
int screen_height = dm.heightPixels;
|
smallWidth = screen_width <= Constants.SMALL_WIDTH;
|
||||||
smallWidth = screen_width <= Constants.SMALL_WIDTH;
|
smallHeight = screen_height <= Constants.SMALL_HEIGHT;
|
||||||
smallHeight = screen_height <= Constants.SMALL_HEIGHT;
|
boolean landscape = screen_height < screen_width;
|
||||||
boolean landscape = screen_height < screen_width;
|
|
||||||
|
|
||||||
View view;
|
View view;
|
||||||
|
|
||||||
if (MainApp.sResources.getBoolean(R.bool.isTablet) && (Config.NSCLIENT || Config.G5UPLOADER)) {
|
if (MainApp.sResources.getBoolean(R.bool.isTablet) && (Config.NSCLIENT || Config.G5UPLOADER)) {
|
||||||
view = inflater.inflate(R.layout.overview_fragment_nsclient_tablet, container, false);
|
view = inflater.inflate(R.layout.overview_fragment_nsclient_tablet, container, false);
|
||||||
} else if (Config.NSCLIENT || Config.G5UPLOADER) {
|
} else if (Config.NSCLIENT || Config.G5UPLOADER) {
|
||||||
view = inflater.inflate(R.layout.overview_fragment_nsclient, container, false);
|
view = inflater.inflate(R.layout.overview_fragment_nsclient, container, false);
|
||||||
shorttextmode = true;
|
shorttextmode = true;
|
||||||
} else if (smallHeight || landscape) {
|
} else if (smallHeight || landscape) {
|
||||||
view = inflater.inflate(R.layout.overview_fragment_smallheight, container, false);
|
view = inflater.inflate(R.layout.overview_fragment_smallheight, container, false);
|
||||||
} else {
|
} else {
|
||||||
view = inflater.inflate(R.layout.overview_fragment, container, false);
|
view = inflater.inflate(R.layout.overview_fragment, container, false);
|
||||||
}
|
|
||||||
|
|
||||||
timeView = (TextView) view.findViewById(R.id.overview_time);
|
|
||||||
bgView = (TextView) view.findViewById(R.id.overview_bg);
|
|
||||||
arrowView = (TextView) view.findViewById(R.id.overview_arrow);
|
|
||||||
if (smallWidth) {
|
|
||||||
arrowView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 35);
|
|
||||||
}
|
|
||||||
sensitivityView = (TextView) view.findViewById(R.id.overview_sensitivity);
|
|
||||||
timeAgoView = (TextView) view.findViewById(R.id.overview_timeago);
|
|
||||||
timeAgoShortView = (TextView) view.findViewById(R.id.overview_timeagoshort);
|
|
||||||
deltaView = (TextView) view.findViewById(R.id.overview_delta);
|
|
||||||
deltaShortView = (TextView) view.findViewById(R.id.overview_deltashort);
|
|
||||||
avgdeltaView = (TextView) view.findViewById(R.id.overview_avgdelta);
|
|
||||||
baseBasalView = (TextView) view.findViewById(R.id.overview_basebasal);
|
|
||||||
extendedBolusView = (TextView) view.findViewById(R.id.overview_extendedbolus);
|
|
||||||
activeProfileView = (TextView) view.findViewById(R.id.overview_activeprofile);
|
|
||||||
pumpStatusView = (TextView) view.findViewById(R.id.overview_pumpstatus);
|
|
||||||
pumpDeviceStatusView = (TextView) view.findViewById(R.id.overview_pump);
|
|
||||||
openapsDeviceStatusView = (TextView) view.findViewById(R.id.overview_openaps);
|
|
||||||
uploaderDeviceStatusView = (TextView) view.findViewById(R.id.overview_uploader);
|
|
||||||
iobCalculationProgressView = (TextView) view.findViewById(R.id.overview_iobcalculationprogess);
|
|
||||||
loopStatusLayout = (LinearLayout) view.findViewById(R.id.overview_looplayout);
|
|
||||||
pumpStatusLayout = (LinearLayout) view.findViewById(R.id.overview_pumpstatuslayout);
|
|
||||||
|
|
||||||
pumpStatusView.setBackgroundColor(MainApp.gc(R.color.colorInitializingBorder));
|
|
||||||
|
|
||||||
iobView = (TextView) view.findViewById(R.id.overview_iob);
|
|
||||||
cobView = (TextView) view.findViewById(R.id.overview_cob);
|
|
||||||
apsModeView = (TextView) view.findViewById(R.id.overview_apsmode);
|
|
||||||
tempTargetView = (TextView) view.findViewById(R.id.overview_temptarget);
|
|
||||||
|
|
||||||
iage = (TextView) view.findViewById(R.id.careportal_insulinage);
|
|
||||||
cage = (TextView) view.findViewById(R.id.careportal_canulaage);
|
|
||||||
sage = (TextView) view.findViewById(R.id.careportal_sensorage);
|
|
||||||
pbage = (TextView) view.findViewById(R.id.careportal_pbage);
|
|
||||||
|
|
||||||
bgGraph = (GraphView) view.findViewById(R.id.overview_bggraph);
|
|
||||||
iobGraph = (GraphView) view.findViewById(R.id.overview_iobgraph);
|
|
||||||
|
|
||||||
treatmentButton = (SingleClickButton) view.findViewById(R.id.overview_treatmentbutton);
|
|
||||||
treatmentButton.setOnClickListener(this);
|
|
||||||
wizardButton = (SingleClickButton) view.findViewById(R.id.overview_wizardbutton);
|
|
||||||
wizardButton.setOnClickListener(this);
|
|
||||||
insulinButton = (SingleClickButton) view.findViewById(R.id.overview_insulinbutton);
|
|
||||||
if (insulinButton != null)
|
|
||||||
insulinButton.setOnClickListener(this);
|
|
||||||
carbsButton = (SingleClickButton) view.findViewById(R.id.overview_carbsbutton);
|
|
||||||
if (carbsButton != null)
|
|
||||||
carbsButton.setOnClickListener(this);
|
|
||||||
acceptTempButton = (SingleClickButton) view.findViewById(R.id.overview_accepttempbutton);
|
|
||||||
if (acceptTempButton != null)
|
|
||||||
acceptTempButton.setOnClickListener(this);
|
|
||||||
quickWizardButton = (SingleClickButton) view.findViewById(R.id.overview_quickwizardbutton);
|
|
||||||
quickWizardButton.setOnClickListener(this);
|
|
||||||
quickWizardButton.setOnLongClickListener(this);
|
|
||||||
calibrationButton = (SingleClickButton) view.findViewById(R.id.overview_calibrationbutton);
|
|
||||||
if (calibrationButton != null)
|
|
||||||
calibrationButton.setOnClickListener(this);
|
|
||||||
cgmButton = (SingleClickButton) view.findViewById(R.id.overview_cgmbutton);
|
|
||||||
if (cgmButton != null)
|
|
||||||
cgmButton.setOnClickListener(this);
|
|
||||||
|
|
||||||
acceptTempLayout = (LinearLayout) view.findViewById(R.id.overview_accepttemplayout);
|
|
||||||
|
|
||||||
notificationsView = (RecyclerView) view.findViewById(R.id.overview_notifications);
|
|
||||||
notificationsView.setHasFixedSize(false);
|
|
||||||
llm = new LinearLayoutManager(view.getContext());
|
|
||||||
notificationsView.setLayoutManager(llm);
|
|
||||||
|
|
||||||
int axisWidth = 50;
|
|
||||||
|
|
||||||
if (dm.densityDpi <= 120)
|
|
||||||
axisWidth = 3;
|
|
||||||
else if (dm.densityDpi <= 160)
|
|
||||||
axisWidth = 10;
|
|
||||||
else if (dm.densityDpi <= 320)
|
|
||||||
axisWidth = 35;
|
|
||||||
else if (dm.densityDpi <= 420)
|
|
||||||
axisWidth = 50;
|
|
||||||
else if (dm.densityDpi <= 560)
|
|
||||||
axisWidth = 70;
|
|
||||||
else
|
|
||||||
axisWidth = 80;
|
|
||||||
|
|
||||||
bgGraph.getGridLabelRenderer().setGridColor(MainApp.gc(R.color.graphgrid));
|
|
||||||
bgGraph.getGridLabelRenderer().reloadStyles();
|
|
||||||
iobGraph.getGridLabelRenderer().setGridColor(MainApp.gc(R.color.graphgrid));
|
|
||||||
iobGraph.getGridLabelRenderer().reloadStyles();
|
|
||||||
iobGraph.getGridLabelRenderer().setHorizontalLabelsVisible(false);
|
|
||||||
bgGraph.getGridLabelRenderer().setLabelVerticalWidth(axisWidth);
|
|
||||||
iobGraph.getGridLabelRenderer().setLabelVerticalWidth(axisWidth);
|
|
||||||
iobGraph.getGridLabelRenderer().setNumVerticalLabels(3);
|
|
||||||
|
|
||||||
rangeToDisplay = SP.getInt(R.string.key_rangetodisplay, 6);
|
|
||||||
|
|
||||||
bgGraph.setOnLongClickListener(new View.OnLongClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onLongClick(View v) {
|
|
||||||
rangeToDisplay += 6;
|
|
||||||
rangeToDisplay = rangeToDisplay > 24 ? 6 : rangeToDisplay;
|
|
||||||
SP.putInt(R.string.key_rangetodisplay, rangeToDisplay);
|
|
||||||
updateGUI("rangeChange");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
setupChartMenu(view);
|
|
||||||
|
|
||||||
return view;
|
|
||||||
} catch (Exception e) {
|
|
||||||
FabricPrivacy.logException(e);
|
|
||||||
log.debug("Runtime Exception", e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
timeView = (TextView) view.findViewById(R.id.overview_time);
|
||||||
|
bgView = (TextView) view.findViewById(R.id.overview_bg);
|
||||||
|
arrowView = (TextView) view.findViewById(R.id.overview_arrow);
|
||||||
|
if (smallWidth) {
|
||||||
|
arrowView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 35);
|
||||||
|
}
|
||||||
|
sensitivityView = (TextView) view.findViewById(R.id.overview_sensitivity);
|
||||||
|
timeAgoView = (TextView) view.findViewById(R.id.overview_timeago);
|
||||||
|
timeAgoShortView = (TextView) view.findViewById(R.id.overview_timeagoshort);
|
||||||
|
deltaView = (TextView) view.findViewById(R.id.overview_delta);
|
||||||
|
deltaShortView = (TextView) view.findViewById(R.id.overview_deltashort);
|
||||||
|
avgdeltaView = (TextView) view.findViewById(R.id.overview_avgdelta);
|
||||||
|
baseBasalView = (TextView) view.findViewById(R.id.overview_basebasal);
|
||||||
|
extendedBolusView = (TextView) view.findViewById(R.id.overview_extendedbolus);
|
||||||
|
activeProfileView = (TextView) view.findViewById(R.id.overview_activeprofile);
|
||||||
|
pumpStatusView = (TextView) view.findViewById(R.id.overview_pumpstatus);
|
||||||
|
pumpDeviceStatusView = (TextView) view.findViewById(R.id.overview_pump);
|
||||||
|
openapsDeviceStatusView = (TextView) view.findViewById(R.id.overview_openaps);
|
||||||
|
uploaderDeviceStatusView = (TextView) view.findViewById(R.id.overview_uploader);
|
||||||
|
iobCalculationProgressView = (TextView) view.findViewById(R.id.overview_iobcalculationprogess);
|
||||||
|
loopStatusLayout = (LinearLayout) view.findViewById(R.id.overview_looplayout);
|
||||||
|
pumpStatusLayout = (LinearLayout) view.findViewById(R.id.overview_pumpstatuslayout);
|
||||||
|
|
||||||
|
pumpStatusView.setBackgroundColor(MainApp.gc(R.color.colorInitializingBorder));
|
||||||
|
|
||||||
|
iobView = (TextView) view.findViewById(R.id.overview_iob);
|
||||||
|
cobView = (TextView) view.findViewById(R.id.overview_cob);
|
||||||
|
apsModeView = (TextView) view.findViewById(R.id.overview_apsmode);
|
||||||
|
tempTargetView = (TextView) view.findViewById(R.id.overview_temptarget);
|
||||||
|
|
||||||
|
iage = (TextView) view.findViewById(R.id.careportal_insulinage);
|
||||||
|
cage = (TextView) view.findViewById(R.id.careportal_canulaage);
|
||||||
|
sage = (TextView) view.findViewById(R.id.careportal_sensorage);
|
||||||
|
pbage = (TextView) view.findViewById(R.id.careportal_pbage);
|
||||||
|
|
||||||
|
bgGraph = (GraphView) view.findViewById(R.id.overview_bggraph);
|
||||||
|
iobGraph = (GraphView) view.findViewById(R.id.overview_iobgraph);
|
||||||
|
|
||||||
|
treatmentButton = (SingleClickButton) view.findViewById(R.id.overview_treatmentbutton);
|
||||||
|
treatmentButton.setOnClickListener(this);
|
||||||
|
wizardButton = (SingleClickButton) view.findViewById(R.id.overview_wizardbutton);
|
||||||
|
wizardButton.setOnClickListener(this);
|
||||||
|
insulinButton = (SingleClickButton) view.findViewById(R.id.overview_insulinbutton);
|
||||||
|
if (insulinButton != null)
|
||||||
|
insulinButton.setOnClickListener(this);
|
||||||
|
carbsButton = (SingleClickButton) view.findViewById(R.id.overview_carbsbutton);
|
||||||
|
if (carbsButton != null)
|
||||||
|
carbsButton.setOnClickListener(this);
|
||||||
|
acceptTempButton = (SingleClickButton) view.findViewById(R.id.overview_accepttempbutton);
|
||||||
|
if (acceptTempButton != null)
|
||||||
|
acceptTempButton.setOnClickListener(this);
|
||||||
|
quickWizardButton = (SingleClickButton) view.findViewById(R.id.overview_quickwizardbutton);
|
||||||
|
quickWizardButton.setOnClickListener(this);
|
||||||
|
quickWizardButton.setOnLongClickListener(this);
|
||||||
|
calibrationButton = (SingleClickButton) view.findViewById(R.id.overview_calibrationbutton);
|
||||||
|
if (calibrationButton != null)
|
||||||
|
calibrationButton.setOnClickListener(this);
|
||||||
|
cgmButton = (SingleClickButton) view.findViewById(R.id.overview_cgmbutton);
|
||||||
|
if (cgmButton != null)
|
||||||
|
cgmButton.setOnClickListener(this);
|
||||||
|
|
||||||
|
acceptTempLayout = (LinearLayout) view.findViewById(R.id.overview_accepttemplayout);
|
||||||
|
|
||||||
|
notificationsView = (RecyclerView) view.findViewById(R.id.overview_notifications);
|
||||||
|
notificationsView.setHasFixedSize(false);
|
||||||
|
llm = new LinearLayoutManager(view.getContext());
|
||||||
|
notificationsView.setLayoutManager(llm);
|
||||||
|
|
||||||
|
int axisWidth = 50;
|
||||||
|
|
||||||
|
if (dm.densityDpi <= 120)
|
||||||
|
axisWidth = 3;
|
||||||
|
else if (dm.densityDpi <= 160)
|
||||||
|
axisWidth = 10;
|
||||||
|
else if (dm.densityDpi <= 320)
|
||||||
|
axisWidth = 35;
|
||||||
|
else if (dm.densityDpi <= 420)
|
||||||
|
axisWidth = 50;
|
||||||
|
else if (dm.densityDpi <= 560)
|
||||||
|
axisWidth = 70;
|
||||||
|
else
|
||||||
|
axisWidth = 80;
|
||||||
|
|
||||||
|
bgGraph.getGridLabelRenderer().setGridColor(MainApp.gc(R.color.graphgrid));
|
||||||
|
bgGraph.getGridLabelRenderer().reloadStyles();
|
||||||
|
iobGraph.getGridLabelRenderer().setGridColor(MainApp.gc(R.color.graphgrid));
|
||||||
|
iobGraph.getGridLabelRenderer().reloadStyles();
|
||||||
|
iobGraph.getGridLabelRenderer().setHorizontalLabelsVisible(false);
|
||||||
|
bgGraph.getGridLabelRenderer().setLabelVerticalWidth(axisWidth);
|
||||||
|
iobGraph.getGridLabelRenderer().setLabelVerticalWidth(axisWidth);
|
||||||
|
iobGraph.getGridLabelRenderer().setNumVerticalLabels(3);
|
||||||
|
|
||||||
|
rangeToDisplay = SP.getInt(R.string.key_rangetodisplay, 6);
|
||||||
|
|
||||||
|
bgGraph.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onLongClick(View v) {
|
||||||
|
rangeToDisplay += 6;
|
||||||
|
rangeToDisplay = rangeToDisplay > 24 ? 6 : rangeToDisplay;
|
||||||
|
SP.putInt(R.string.key_rangetodisplay, rangeToDisplay);
|
||||||
|
updateGUI("rangeChange");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setupChartMenu(view);
|
||||||
|
|
||||||
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupChartMenu(View view) {
|
private void setupChartMenu(View view) {
|
||||||
|
@ -589,7 +583,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
pvd.show(manager, "ProfileViewDialog");
|
pvd.show(manager, "ProfileViewDialog");
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.eatingsoon))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.eatingsoon))) {
|
||||||
DefaultValueHelper defHelper = new DefaultValueHelper();
|
DefaultValueHelper defHelper = new DefaultValueHelper();
|
||||||
double target = defHelper.determineEatingSoonTT(profile.getUnits());
|
double target = defHelper.determineEatingSoonTT(Constants.MGDL);
|
||||||
TempTarget tempTarget = new TempTarget()
|
TempTarget tempTarget = new TempTarget()
|
||||||
.date(System.currentTimeMillis())
|
.date(System.currentTimeMillis())
|
||||||
.duration(defHelper.determineEatingSoonTTDuration())
|
.duration(defHelper.determineEatingSoonTTDuration())
|
||||||
|
@ -600,7 +594,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
|
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.activity))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.activity))) {
|
||||||
DefaultValueHelper defHelper = new DefaultValueHelper();
|
DefaultValueHelper defHelper = new DefaultValueHelper();
|
||||||
double target = defHelper.determineActivityTT(profile.getUnits());
|
double target = defHelper.determineActivityTT(Constants.MGDL);
|
||||||
TempTarget tempTarget = new TempTarget()
|
TempTarget tempTarget = new TempTarget()
|
||||||
.date(now())
|
.date(now())
|
||||||
.duration(defHelper.determineActivityTTDuration())
|
.duration(defHelper.determineActivityTTDuration())
|
||||||
|
@ -611,7 +605,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
|
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.hypo))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.hypo))) {
|
||||||
DefaultValueHelper defHelper = new DefaultValueHelper();
|
DefaultValueHelper defHelper = new DefaultValueHelper();
|
||||||
double target = defHelper.determineHypoTT(profile.getUnits());
|
double target = defHelper.determineHypoTT(Constants.MGDL);
|
||||||
TempTarget tempTarget = new TempTarget()
|
TempTarget tempTarget = new TempTarget()
|
||||||
.date(now())
|
.date(now())
|
||||||
.duration(defHelper.determineHypoTTDuration())
|
.duration(defHelper.determineHypoTTDuration())
|
||||||
|
@ -832,7 +826,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> {
|
builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> {
|
||||||
synchronized (builder) {
|
synchronized (builder) {
|
||||||
if (accepted) {
|
if (accepted) {
|
||||||
log.debug("guarding: already accepted");
|
if (Config.logOverview)
|
||||||
|
log.debug("guarding: already accepted");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
accepted = true;
|
accepted = true;
|
||||||
|
@ -1037,7 +1032,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
public void updateGUI(final String from) {
|
public void updateGUI(final String from) {
|
||||||
log.debug("updateGUI entered from: " + from);
|
if (Config.logOverview)
|
||||||
|
log.debug("updateGUI entered from: " + from);
|
||||||
final Date updateGUIStart = new Date();
|
final Date updateGUIStart = new Date();
|
||||||
|
|
||||||
if (getActivity() == null)
|
if (getActivity() == null)
|
||||||
|
@ -1384,9 +1380,9 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
|
|
||||||
// Sensitivity
|
// Sensitivity
|
||||||
if (sensitivityView != null) {
|
if (sensitivityView != null) {
|
||||||
AutosensResult lastAutosensResult = IobCobCalculatorPlugin.getPlugin().detectSensitivityWithLock(IobCobCalculatorPlugin.getPlugin().oldestDataAvailable(), System.currentTimeMillis());
|
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getLastAutosensDataSynchronized("Overview");
|
||||||
if (lastAutosensResult != null)
|
if (autosensData != null)
|
||||||
sensitivityView.setText(String.format("%.0f%%", lastAutosensResult.ratio * 100));
|
sensitivityView.setText(String.format("%.0f%%", autosensData.autosensResult.ratio * 100));
|
||||||
else
|
else
|
||||||
sensitivityView.setText("");
|
sensitivityView.setText("");
|
||||||
}
|
}
|
||||||
|
@ -1432,7 +1428,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
final long now = System.currentTimeMillis();
|
final long now = System.currentTimeMillis();
|
||||||
|
|
||||||
// ------------------ 1st graph
|
// ------------------ 1st graph
|
||||||
Profiler.log(log, from + " - 1st graph - START", updateGUIStart);
|
if (Config.logOverview)
|
||||||
|
Profiler.log(log, from + " - 1st graph - START", updateGUIStart);
|
||||||
|
|
||||||
final GraphData graphData = new GraphData(bgGraph, IobCobCalculatorPlugin.getPlugin());
|
final GraphData graphData = new GraphData(bgGraph, IobCobCalculatorPlugin.getPlugin());
|
||||||
|
|
||||||
|
@ -1464,7 +1461,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
graphData.addNowLine(now);
|
graphData.addNowLine(now);
|
||||||
|
|
||||||
// ------------------ 2nd graph
|
// ------------------ 2nd graph
|
||||||
Profiler.log(log, from + " - 2nd graph - START", updateGUIStart);
|
if (Config.logOverview)
|
||||||
|
Profiler.log(log, from + " - 2nd graph - START", updateGUIStart);
|
||||||
|
|
||||||
final GraphData secondGraphData = new GraphData(iobGraph, IobCobCalculatorPlugin.getPlugin());
|
final GraphData secondGraphData = new GraphData(iobGraph, IobCobCalculatorPlugin.getPlugin());
|
||||||
|
|
||||||
|
@ -1518,12 +1516,14 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
// finally enforce drawing of graphs
|
// finally enforce drawing of graphs
|
||||||
graphData.performUpdate();
|
graphData.performUpdate();
|
||||||
secondGraphData.performUpdate();
|
secondGraphData.performUpdate();
|
||||||
Profiler.log(log, from + " - onDataChanged", updateGUIStart);
|
if (Config.logOverview)
|
||||||
|
Profiler.log(log, from + " - onDataChanged", updateGUIStart);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
Profiler.log(log, from, updateGUIStart);
|
if (Config.logOverview)
|
||||||
|
Profiler.log(log, from, updateGUIStart);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Notifications
|
//Notifications
|
||||||
|
|
|
@ -7,6 +7,7 @@ import org.json.JSONException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
|
@ -24,7 +25,7 @@ import info.nightscout.utils.SP;
|
||||||
* Created by mike on 05.08.2016.
|
* Created by mike on 05.08.2016.
|
||||||
*/
|
*/
|
||||||
public class OverviewPlugin extends PluginBase {
|
public class OverviewPlugin extends PluginBase {
|
||||||
private static Logger log = LoggerFactory.getLogger(OverviewPlugin.class);
|
private static Logger log = LoggerFactory.getLogger(Constants.OVERVIEW);
|
||||||
|
|
||||||
private static OverviewPlugin overviewPlugin = new OverviewPlugin();
|
private static OverviewPlugin overviewPlugin = new OverviewPlugin();
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ import info.nightscout.androidaps.plugins.Treatments.Treatment;
|
||||||
import info.nightscout.androidaps.events.Event;
|
import info.nightscout.androidaps.events.Event;
|
||||||
|
|
||||||
public class EventOverviewBolusProgress extends Event {
|
public class EventOverviewBolusProgress extends Event {
|
||||||
private static Logger log = LoggerFactory.getLogger(EventOverviewBolusProgress.class);
|
|
||||||
public String status = "";
|
public String status = "";
|
||||||
public Treatment t = null;
|
public Treatment t = null;
|
||||||
public int percent = 0;
|
public int percent = 0;
|
||||||
|
|
|
@ -11,10 +11,14 @@ import com.jjoe64.graphview.series.DataPoint;
|
||||||
import com.jjoe64.graphview.series.LineGraphSeries;
|
import com.jjoe64.graphview.series.LineGraphSeries;
|
||||||
import com.jjoe64.graphview.series.Series;
|
import com.jjoe64.graphview.series.Series;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
import info.nightscout.androidaps.Constants;
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
@ -47,6 +51,7 @@ import info.nightscout.utils.Round;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class GraphData {
|
public class GraphData {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(Constants.OVERVIEW);
|
||||||
|
|
||||||
private GraphView graph;
|
private GraphView graph;
|
||||||
public double maxY = Double.MIN_VALUE;
|
public double maxY = Double.MIN_VALUE;
|
||||||
|
@ -65,14 +70,18 @@ public class GraphData {
|
||||||
|
|
||||||
public void addBgReadings(long fromTime, long toTime, double lowLine, double highLine, List<BgReading> predictions) {
|
public void addBgReadings(long fromTime, long toTime, double lowLine, double highLine, List<BgReading> predictions) {
|
||||||
double maxBgValue = Double.MIN_VALUE;
|
double maxBgValue = Double.MIN_VALUE;
|
||||||
bgReadingsArray = MainApp.getDbHelper().getBgreadingsDataFromTime(fromTime, true);
|
//bgReadingsArray = MainApp.getDbHelper().getBgreadingsDataFromTime(fromTime, true);
|
||||||
|
bgReadingsArray = iobCobCalculatorPlugin.getBgReadings();
|
||||||
List<DataPointWithLabelInterface> bgListArray = new ArrayList<>();
|
List<DataPointWithLabelInterface> bgListArray = new ArrayList<>();
|
||||||
|
|
||||||
if (bgReadingsArray.size() == 0) {
|
if (bgReadingsArray == null || bgReadingsArray.size() == 0) {
|
||||||
|
if (Config.logOverview)
|
||||||
|
log.debug("No BG data.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (BgReading bg : bgReadingsArray) {
|
for (BgReading bg : bgReadingsArray) {
|
||||||
|
if (bg.date < fromTime || bg.date > toTime) continue;
|
||||||
if (bg.value > maxBgValue) maxBgValue = bg.value;
|
if (bg.value > maxBgValue) maxBgValue = bg.value;
|
||||||
bgListArray.add(bg);
|
bgListArray.add(bg);
|
||||||
}
|
}
|
||||||
|
@ -137,7 +146,7 @@ public class GraphData {
|
||||||
for (long time = fromTime; time < toTime; time += 60 * 1000L) {
|
for (long time = fromTime; time < toTime; time += 60 * 1000L) {
|
||||||
Profile profile = MainApp.getConfigBuilder().getProfile(time);
|
Profile profile = MainApp.getConfigBuilder().getProfile(time);
|
||||||
if (profile == null) continue;
|
if (profile == null) continue;
|
||||||
BasalData basalData = IobCobCalculatorPlugin.getPlugin().getBasalData(profile, time);
|
BasalData basalData = iobCobCalculatorPlugin.getBasalData(profile, time);
|
||||||
double baseBasalValue = basalData.basal;
|
double baseBasalValue = basalData.basal;
|
||||||
double absoluteLineValue = baseBasalValue;
|
double absoluteLineValue = baseBasalValue;
|
||||||
double tempBasalValue = 0;
|
double tempBasalValue = 0;
|
||||||
|
@ -321,13 +330,13 @@ public class GraphData {
|
||||||
}
|
}
|
||||||
|
|
||||||
private double getNearestBg(long date) {
|
private double getNearestBg(long date) {
|
||||||
for (int r = bgReadingsArray.size() - 1; r >= 0; r--) {
|
for (int r = 0; r < bgReadingsArray.size(); r++) {
|
||||||
BgReading reading = bgReadingsArray.get(r);
|
BgReading reading = bgReadingsArray.get(r);
|
||||||
if (reading.date > date) continue;
|
if (reading.date > date) continue;
|
||||||
return Profile.fromMgdlToUnits(reading.value, units);
|
return Profile.fromMgdlToUnits(reading.value, units);
|
||||||
}
|
}
|
||||||
return bgReadingsArray.size() > 0
|
return bgReadingsArray.size() > 0
|
||||||
? Profile.fromMgdlToUnits(bgReadingsArray.get(0).value, units) : 0;
|
? Profile.fromMgdlToUnits(bgReadingsArray.get(0).value, units) : Profile.fromMgdlToUnits(100, units);
|
||||||
}
|
}
|
||||||
|
|
||||||
// scale in % of vertical size (like 0.3)
|
// scale in % of vertical size (like 0.3)
|
||||||
|
@ -342,7 +351,7 @@ public class GraphData {
|
||||||
Profile profile = MainApp.getConfigBuilder().getProfile(time);
|
Profile profile = MainApp.getConfigBuilder().getProfile(time);
|
||||||
double iob = 0d;
|
double iob = 0d;
|
||||||
if (profile != null)
|
if (profile != null)
|
||||||
iob = IobCobCalculatorPlugin.getPlugin().calculateFromTreatmentsAndTempsSynchronized(time, profile).iob;
|
iob = iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(time, profile).iob;
|
||||||
if (Math.abs(lastIob - iob) > 0.02) {
|
if (Math.abs(lastIob - iob) > 0.02) {
|
||||||
if (Math.abs(lastIob - iob) > 0.2)
|
if (Math.abs(lastIob - iob) > 0.2)
|
||||||
iobArray.add(new ScaledDataPoint(time, lastIob, iobScale));
|
iobArray.add(new ScaledDataPoint(time, lastIob, iobScale));
|
||||||
|
@ -380,7 +389,7 @@ public class GraphData {
|
||||||
Scale cobScale = new Scale();
|
Scale cobScale = new Scale();
|
||||||
|
|
||||||
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
|
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
|
||||||
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getAutosensData(time);
|
AutosensData autosensData = iobCobCalculatorPlugin.getAutosensData(time);
|
||||||
if (autosensData != null) {
|
if (autosensData != null) {
|
||||||
int cob = (int) autosensData.cob;
|
int cob = (int) autosensData.cob;
|
||||||
if (cob != lastCob) {
|
if (cob != lastCob) {
|
||||||
|
@ -438,7 +447,7 @@ public class GraphData {
|
||||||
Scale devScale = new Scale();
|
Scale devScale = new Scale();
|
||||||
|
|
||||||
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
|
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
|
||||||
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getAutosensData(time);
|
AutosensData autosensData = iobCobCalculatorPlugin.getAutosensData(time);
|
||||||
if (autosensData != null) {
|
if (autosensData != null) {
|
||||||
int color = MainApp.gc(R.color.deviationblack); // "="
|
int color = MainApp.gc(R.color.deviationblack); // "="
|
||||||
if (autosensData.type.equals("") || autosensData.type.equals("non-meal")) {
|
if (autosensData.type.equals("") || autosensData.type.equals("non-meal")) {
|
||||||
|
@ -488,7 +497,7 @@ public class GraphData {
|
||||||
Scale ratioScale = new Scale();
|
Scale ratioScale = new Scale();
|
||||||
|
|
||||||
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
|
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
|
||||||
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getAutosensData(time);
|
AutosensData autosensData = iobCobCalculatorPlugin.getAutosensData(time);
|
||||||
if (autosensData != null) {
|
if (autosensData != null) {
|
||||||
ratioArray.add(new ScaledDataPoint(time, autosensData.autosensResult.ratio - 1, ratioScale));
|
ratioArray.add(new ScaledDataPoint(time, autosensData.autosensResult.ratio - 1, ratioScale));
|
||||||
maxRatioValueFound = Math.max(maxRatioValueFound, autosensData.autosensResult.ratio - 1);
|
maxRatioValueFound = Math.max(maxRatioValueFound, autosensData.autosensResult.ratio - 1);
|
||||||
|
@ -504,11 +513,11 @@ public class GraphData {
|
||||||
ratioSeries.setThickness(3);
|
ratioSeries.setThickness(3);
|
||||||
|
|
||||||
if (useForScale) {
|
if (useForScale) {
|
||||||
maxY = maxRatioValueFound;
|
maxY = Math.max(maxRatioValueFound, Math.abs(minRatioValueFound));
|
||||||
minY = minRatioValueFound;
|
minY = -maxY;
|
||||||
}
|
}
|
||||||
|
|
||||||
ratioScale.setMultiplier(maxY * scale / maxRatioValueFound);
|
ratioScale.setMultiplier(maxY * scale / Math.max(maxRatioValueFound, Math.abs(minRatioValueFound)));
|
||||||
|
|
||||||
addSeries(ratioSeries);
|
addSeries(ratioSeries);
|
||||||
}
|
}
|
||||||
|
@ -525,7 +534,7 @@ public class GraphData {
|
||||||
Scale dsMinScale = new Scale();
|
Scale dsMinScale = new Scale();
|
||||||
|
|
||||||
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
|
for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) {
|
||||||
AutosensData autosensData = IobCobCalculatorPlugin.getPlugin().getAutosensData(time);
|
AutosensData autosensData = iobCobCalculatorPlugin.getAutosensData(time);
|
||||||
if (autosensData != null) {
|
if (autosensData != null) {
|
||||||
dsMaxArray.add(new ScaledDataPoint(time, autosensData.slopeFromMaxDeviation, dsMaxScale));
|
dsMaxArray.add(new ScaledDataPoint(time, autosensData.slopeFromMaxDeviation, dsMaxScale));
|
||||||
dsMinArray.add(new ScaledDataPoint(time, autosensData.slopeFromMinDeviation, dsMinScale));
|
dsMinArray.add(new ScaledDataPoint(time, autosensData.slopeFromMinDeviation, dsMinScale));
|
||||||
|
@ -604,8 +613,10 @@ public class GraphData {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
graph.getViewport().setMaxY(Round.ceilTo(maxY, 1d));
|
double step = 1d;
|
||||||
graph.getViewport().setMinY(Round.floorTo(minY, 1d));
|
if (maxY < 1) step = 0.1d;
|
||||||
|
graph.getViewport().setMaxY(Round.ceilTo(maxY, step));
|
||||||
|
graph.getViewport().setMinY(Round.floorTo(minY, step));
|
||||||
graph.getViewport().setYAxisBoundsManual(true);
|
graph.getViewport().setYAxisBoundsManual(true);
|
||||||
|
|
||||||
// draw it
|
// draw it
|
||||||
|
|
|
@ -20,8 +20,6 @@ import info.nightscout.utils.SP;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Notification {
|
public class Notification {
|
||||||
private static Logger log = LoggerFactory.getLogger(Notification.class);
|
|
||||||
|
|
||||||
public static final int URGENT = 0;
|
public static final int URGENT = 0;
|
||||||
public static final int NORMAL = 1;
|
public static final int NORMAL = 1;
|
||||||
public static final int LOW = 2;
|
public static final int LOW = 2;
|
||||||
|
|
|
@ -15,6 +15,8 @@ import org.slf4j.LoggerFactory;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastAckAlarm;
|
import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastAckAlarm;
|
||||||
|
@ -24,7 +26,7 @@ import info.nightscout.utils.DateUtil;
|
||||||
import info.nightscout.utils.SP;
|
import info.nightscout.utils.SP;
|
||||||
|
|
||||||
public class NotificationRecyclerViewAdapter extends RecyclerView.Adapter<NotificationRecyclerViewAdapter.NotificationsViewHolder> {
|
public class NotificationRecyclerViewAdapter extends RecyclerView.Adapter<NotificationRecyclerViewAdapter.NotificationsViewHolder> {
|
||||||
private static Logger log = LoggerFactory.getLogger(NotificationRecyclerViewAdapter.class);
|
private static Logger log = LoggerFactory.getLogger(Constants.NOTIFICATION);
|
||||||
|
|
||||||
private List<Notification> notificationsList;
|
private List<Notification> notificationsList;
|
||||||
|
|
||||||
|
@ -96,11 +98,13 @@ public class NotificationRecyclerViewAdapter extends RecyclerView.Adapter<Notifi
|
||||||
BroadcastAckAlarm.handleClearAlarm(notification.nsAlarm, MainApp.instance().getApplicationContext(), 60 * 60 * 1000L);
|
BroadcastAckAlarm.handleClearAlarm(notification.nsAlarm, MainApp.instance().getApplicationContext(), 60 * 60 * 1000L);
|
||||||
}
|
}
|
||||||
// Adding current time to snooze if we got staleData
|
// Adding current time to snooze if we got staleData
|
||||||
log.debug("Notification text is: " + notification.text);
|
if (Config.logNotification)
|
||||||
|
log.debug("Notification text is: " + notification.text);
|
||||||
if (notification.text.equals(MainApp.gs(R.string.nsalarm_staledata))) {
|
if (notification.text.equals(MainApp.gs(R.string.nsalarm_staledata))) {
|
||||||
NotificationStore nstore = OverviewPlugin.getPlugin().notificationStore;
|
NotificationStore nstore = OverviewPlugin.getPlugin().notificationStore;
|
||||||
long msToSnooze = SP.getInt("nsalarm_staledatavalue", 15) * 60 * 1000L;
|
long msToSnooze = SP.getInt("nsalarm_staledatavalue", 15) * 60 * 1000L;
|
||||||
log.debug("snooze nsalarm_staledatavalue in minutes is " + SP.getInt("nsalarm_staledatavalue", 15) + "\n in ms is: " + msToSnooze + " currentTimeMillis is: " + System.currentTimeMillis());
|
if (Config.logNotification)
|
||||||
|
log.debug("snooze nsalarm_staledatavalue in minutes is " + SP.getInt("nsalarm_staledatavalue", 15) + "\n in ms is: " + msToSnooze + " currentTimeMillis is: " + System.currentTimeMillis());
|
||||||
nstore.snoozeTo(System.currentTimeMillis() + (SP.getInt("nsalarm_staledatavalue", 15) * 60 * 1000L));
|
nstore.snoozeTo(System.currentTimeMillis() + (SP.getInt("nsalarm_staledatavalue", 15) * 60 * 1000L));
|
||||||
}
|
}
|
||||||
if (notification instanceof NotificationWithAction) {
|
if (notification instanceof NotificationWithAction) {
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.Services.AlarmSoundService;
|
import info.nightscout.androidaps.Services.AlarmSoundService;
|
||||||
|
@ -33,11 +34,10 @@ import info.nightscout.utils.SP;
|
||||||
|
|
||||||
public class NotificationStore {
|
public class NotificationStore {
|
||||||
|
|
||||||
public static final String CHANNEL_ID = "AndroidAPS-Overview";
|
private static final String CHANNEL_ID = "AndroidAPS-Overview";
|
||||||
|
|
||||||
private static Logger log = LoggerFactory.getLogger(NotificationStore.class);
|
private static Logger log = LoggerFactory.getLogger(Constants.NOTIFICATION);
|
||||||
public List<Notification> store = new ArrayList<Notification>();
|
public List<Notification> store = new ArrayList<>();
|
||||||
public long snoozedUntil = 0L;
|
|
||||||
private boolean usesChannels;
|
private boolean usesChannels;
|
||||||
|
|
||||||
public NotificationStore() {
|
public NotificationStore() {
|
||||||
|
@ -52,7 +52,8 @@ public class NotificationStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized boolean add(Notification n) {
|
public synchronized boolean add(Notification n) {
|
||||||
log.info("Notification received: " + n.text);
|
if (Config.logNotification)
|
||||||
|
log.debug("Notification received: " + n.text);
|
||||||
for (Notification storeNotification : store) {
|
for (Notification storeNotification : store) {
|
||||||
if (storeNotification.id == n.id) {
|
if (storeNotification.id == n.id) {
|
||||||
storeNotification.date = n.date;
|
storeNotification.date = n.date;
|
||||||
|
@ -107,7 +108,8 @@ public class NotificationStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void snoozeTo(long timeToSnooze) {
|
public void snoozeTo(long timeToSnooze) {
|
||||||
log.debug("Snoozing alarm until: " + timeToSnooze);
|
if (Config.logNotification)
|
||||||
|
log.debug("Snoozing alarm until: " + timeToSnooze);
|
||||||
SP.putLong("snoozedTo", timeToSnooze);
|
SP.putLong("snoozedTo", timeToSnooze);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +118,8 @@ public class NotificationStore {
|
||||||
Notification notification = new Notification(Notification.NSALARM, MainApp.gs(R.string.nsalarm_staledata), Notification.URGENT);
|
Notification notification = new Notification(Notification.NSALARM, MainApp.gs(R.string.nsalarm_staledata), Notification.URGENT);
|
||||||
SP.putLong("snoozedTo", System.currentTimeMillis());
|
SP.putLong("snoozedTo", System.currentTimeMillis());
|
||||||
add(notification);
|
add(notification);
|
||||||
log.debug("Snoozed to current time and added back notification!");
|
if (Config.logNotification)
|
||||||
|
log.debug("Snoozed to current time and added back notification!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +128,7 @@ public class NotificationStore {
|
||||||
NotificationManager mgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
NotificationManager mgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), R.mipmap.blueowl);
|
Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), R.mipmap.blueowl);
|
||||||
int smallIcon = R.drawable.ic_notification;
|
int smallIcon = R.drawable.ic_notification;
|
||||||
if (Config.NSCLIENT || Config.G5UPLOADER){
|
if (Config.NSCLIENT || Config.G5UPLOADER) {
|
||||||
largeIcon = BitmapFactory.decodeResource(MainApp.instance().getResources(), R.mipmap.yellowowl);
|
largeIcon = BitmapFactory.decodeResource(MainApp.instance().getResources(), R.mipmap.yellowowl);
|
||||||
smallIcon = R.drawable.nsclient_smallicon;
|
smallIcon = R.drawable.nsclient_smallicon;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
package info.nightscout.androidaps.plugins.ProfileNS;
|
package info.nightscout.androidaps.plugins.ProfileNS;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
|
||||||
import com.squareup.otto.Subscribe;
|
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -65,12 +64,24 @@ public class NSProfilePlugin extends PluginBase implements ProfileInterface {
|
||||||
MainApp.bus().unregister(this);
|
MainApp.bus().unregister(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
public void handleNewData(Intent intent) {
|
||||||
public void storeNewProfile(ProfileStore newProfile) {
|
try {
|
||||||
profile = new ProfileStore(newProfile.getData());
|
Bundle bundles = intent.getExtras();
|
||||||
storeNSProfile();
|
if (bundles == null) return;
|
||||||
MainApp.bus().post(new EventNSProfileUpdateGUI());
|
|
||||||
MainApp.bus().post(new EventProfileStoreChanged());
|
String activeProfile = bundles.getString("activeprofile");
|
||||||
|
String profileString = bundles.getString("profile");
|
||||||
|
profile = new ProfileStore(new JSONObject(profileString));
|
||||||
|
storeNSProfile();
|
||||||
|
if (isEnabled(PluginType.PROFILE)) {
|
||||||
|
MainApp.bus().post(new EventProfileStoreChanged());
|
||||||
|
MainApp.bus().post(new EventNSProfileUpdateGUI());
|
||||||
|
}
|
||||||
|
if (Config.logIncommingData)
|
||||||
|
log.debug("Received profileStore: " + activeProfile + " " + profile);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.error("Unhandled exception", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void storeNSProfile() {
|
private void storeNSProfile() {
|
||||||
|
|
|
@ -45,6 +45,10 @@ public class DanaRUserOptionsActivity extends Activity {
|
||||||
NumberPicker shutdown;
|
NumberPicker shutdown;
|
||||||
NumberPicker lowReservoir;
|
NumberPicker lowReservoir;
|
||||||
Button saveToPumpButton;
|
Button saveToPumpButton;
|
||||||
|
// This is for Dana pumps only
|
||||||
|
boolean isRS = MainApp.getSpecificPlugin(DanaRSPlugin.class) != null && MainApp.getSpecificPlugin(DanaRSPlugin.class).isEnabled(PluginType.PUMP);
|
||||||
|
boolean isDanaR = MainApp.getSpecificPlugin(DanaRPlugin.class) != null && MainApp.getSpecificPlugin(DanaRPlugin.class).isEnabled(PluginType.PUMP);
|
||||||
|
boolean isDanaRv2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class) != null && MainApp.getSpecificPlugin(DanaRv2Plugin.class).isEnabled(PluginType.PUMP);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
|
@ -125,8 +129,8 @@ public class DanaRUserOptionsActivity extends Activity {
|
||||||
|
|
||||||
public void setData() {
|
public void setData() {
|
||||||
DanaRPump pump = DanaRPump.getInstance();
|
DanaRPump pump = DanaRPump.getInstance();
|
||||||
|
// in DanaRS timeDisplay values are reversed
|
||||||
timeFormat.setChecked(pump.timeDisplayType != 0);
|
timeFormat.setChecked((!isRS && pump.timeDisplayType != 0) || (isRS && pump.timeDisplayType == 0));
|
||||||
buttonScroll.setChecked(pump.buttonScrollOnOff != 0);
|
buttonScroll.setChecked(pump.buttonScrollOnOff != 0);
|
||||||
beep.setChecked(pump.beepAndAlarm > 4);
|
beep.setChecked(pump.beepAndAlarm > 4);
|
||||||
screenTimeout.setValue((double) pump.lcdOnTimeSec);
|
screenTimeout.setValue((double) pump.lcdOnTimeSec);
|
||||||
|
@ -142,19 +146,22 @@ public class DanaRUserOptionsActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onSaveClick() {
|
public void onSaveClick() {
|
||||||
boolean isRS = MainApp.getSpecificPlugin(DanaRSPlugin.class) != null && MainApp.getSpecificPlugin(DanaRSPlugin.class).isEnabled(PluginType.PUMP);
|
|
||||||
boolean isDanaR = MainApp.getSpecificPlugin(DanaRPlugin.class) != null && MainApp.getSpecificPlugin(DanaRPlugin.class).isEnabled(PluginType.PUMP);
|
|
||||||
boolean isDanaRv2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class) != null && MainApp.getSpecificPlugin(DanaRv2Plugin.class).isEnabled(PluginType.PUMP);
|
|
||||||
if (!isRS && !isDanaR && !isDanaRv2) {
|
if (!isRS && !isDanaR && !isDanaRv2) {
|
||||||
//exit if pump is not DanaRS, Dana!, or DanaR with upgraded firmware
|
//exit if pump is not DanaRS, Dana!, or DanaR with upgraded firmware
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DanaRPump pump = DanaRPump.getInstance();
|
DanaRPump pump = DanaRPump.getInstance();
|
||||||
|
|
||||||
if (timeFormat.isChecked())
|
if (timeFormat.isChecked())
|
||||||
pump.timeDisplayType = 1;
|
pump.timeDisplayType = 1;
|
||||||
else
|
else
|
||||||
pump.timeDisplayType = 0;
|
pump.timeDisplayType = 0;
|
||||||
|
// displayTime on RS is reversed
|
||||||
|
if (isRS) {
|
||||||
|
if (timeFormat.isChecked())
|
||||||
|
pump.timeDisplayType = 0;
|
||||||
|
else
|
||||||
|
pump.timeDisplayType = 1;
|
||||||
|
}
|
||||||
if (buttonScroll.isChecked())
|
if (buttonScroll.isChecked())
|
||||||
pump.buttonScrollOnOff = 1;
|
pump.buttonScrollOnOff = 1;
|
||||||
else
|
else
|
||||||
|
|
|
@ -151,7 +151,7 @@ public class BLEComm {
|
||||||
isConnecting = false;
|
isConnecting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnect(String from) {
|
public synchronized void disconnect(String from) {
|
||||||
log.debug("disconnect from: " + from);
|
log.debug("disconnect from: " + from);
|
||||||
|
|
||||||
// cancel previous scheduled disconnection to prevent closing upcomming connection
|
// cancel previous scheduled disconnection to prevent closing upcomming connection
|
||||||
|
@ -187,17 +187,7 @@ public class BLEComm {
|
||||||
|
|
||||||
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
|
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
|
||||||
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
|
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
|
||||||
log.debug("onConnectionStateChange");
|
onConnectionStateChangeSynchronized(gatt, status, newState); // call it synchronized
|
||||||
|
|
||||||
if (newState == BluetoothProfile.STATE_CONNECTED) {
|
|
||||||
mBluetoothGatt.discoverServices();
|
|
||||||
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
|
|
||||||
close();
|
|
||||||
isConnected = false;
|
|
||||||
isConnecting = false;
|
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED));
|
|
||||||
log.debug("Device was disconnected " + gatt.getDevice().getName());//Device was disconnected
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
|
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
|
||||||
|
@ -325,6 +315,20 @@ public class BLEComm {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public synchronized void onConnectionStateChangeSynchronized(BluetoothGatt gatt, int status, int newState) {
|
||||||
|
log.debug("onConnectionStateChange");
|
||||||
|
|
||||||
|
if (newState == BluetoothProfile.STATE_CONNECTED) {
|
||||||
|
mBluetoothGatt.discoverServices();
|
||||||
|
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
|
||||||
|
close();
|
||||||
|
isConnected = false;
|
||||||
|
isConnecting = false;
|
||||||
|
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED));
|
||||||
|
log.debug("Device was disconnected " + gatt.getDevice().getName());//Device was disconnected
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private final byte[] readBuffer = new byte[1024];
|
private final byte[] readBuffer = new byte[1024];
|
||||||
private int bufferLength = 0;
|
private int bufferLength = 0;
|
||||||
|
|
||||||
|
|
|
@ -3,28 +3,31 @@ package info.nightscout.androidaps.plugins.Sensitivity;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||||
import info.nightscout.androidaps.interfaces.SensitivityInterface;
|
import info.nightscout.androidaps.interfaces.SensitivityInterface;
|
||||||
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
|
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
|
||||||
|
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
|
||||||
import info.nightscout.utils.Round;
|
import info.nightscout.utils.Round;
|
||||||
import info.nightscout.utils.SP;
|
import info.nightscout.utils.SP;
|
||||||
import info.nightscout.utils.SafeParse;
|
import info.nightscout.utils.SafeParse;
|
||||||
|
|
||||||
public abstract class AbstractSensitivityPlugin extends PluginBase implements SensitivityInterface {
|
public abstract class AbstractSensitivityPlugin extends PluginBase implements SensitivityInterface {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static final Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
|
|
||||||
public AbstractSensitivityPlugin(PluginDescription pluginDescription) {
|
public AbstractSensitivityPlugin(PluginDescription pluginDescription) {
|
||||||
super(pluginDescription);
|
super(pluginDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract AutosensResult detectSensitivity(long fromTime, long toTime);
|
public abstract AutosensResult detectSensitivity(IobCobCalculatorPlugin plugin, long fromTime, long toTime);
|
||||||
|
|
||||||
public AutosensResult fillResult(double ratio, double carbsAbsorbed, String pastSensitivity,
|
AutosensResult fillResult(double ratio, double carbsAbsorbed, String pastSensitivity,
|
||||||
String ratioLimit, String sensResult, int deviationsArraySize) {
|
String ratioLimit, String sensResult, int deviationsArraySize) {
|
||||||
return this.fillResult(ratio, carbsAbsorbed, pastSensitivity, ratioLimit, sensResult,
|
return this.fillResult(ratio, carbsAbsorbed, pastSensitivity, ratioLimit, sensResult,
|
||||||
deviationsArraySize,
|
deviationsArraySize,
|
||||||
SafeParse.stringToDouble(SP.getString(R.string.key_openapsama_autosens_min, "0.7")),
|
SafeParse.stringToDouble(SP.getString(R.string.key_openapsama_autosens_min, "0.7")),
|
||||||
|
@ -32,8 +35,8 @@ public abstract class AbstractSensitivityPlugin extends PluginBase implements Se
|
||||||
}
|
}
|
||||||
|
|
||||||
public AutosensResult fillResult(double ratio, double carbsAbsorbed, String pastSensitivity,
|
public AutosensResult fillResult(double ratio, double carbsAbsorbed, String pastSensitivity,
|
||||||
String ratioLimit, String sensResult, int deviationsArraySize,
|
String ratioLimit, String sensResult, int deviationsArraySize,
|
||||||
double ratioMin, double ratioMax) {
|
double ratioMin, double ratioMax) {
|
||||||
double rawRatio = ratio;
|
double rawRatio = ratio;
|
||||||
ratio = Math.max(ratio, ratioMin);
|
ratio = Math.max(ratio, ratioMin);
|
||||||
ratio = Math.min(ratio, ratioMax);
|
ratio = Math.min(ratio, ratioMax);
|
||||||
|
@ -51,7 +54,8 @@ public abstract class AbstractSensitivityPlugin extends PluginBase implements Se
|
||||||
|
|
||||||
if (ratio != rawRatio) {
|
if (ratio != rawRatio) {
|
||||||
ratioLimit += "Ratio limited from " + rawRatio + " to " + ratio;
|
ratioLimit += "Ratio limited from " + rawRatio + " to " + ratio;
|
||||||
log.debug(ratioLimit);
|
if (Config.logAutosensData)
|
||||||
|
log.debug(ratioLimit);
|
||||||
}
|
}
|
||||||
|
|
||||||
AutosensResult output = new AutosensResult();
|
AutosensResult output = new AutosensResult();
|
||||||
|
@ -64,5 +68,4 @@ public abstract class AbstractSensitivityPlugin extends PluginBase implements Se
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
|
@ -28,7 +29,7 @@ import info.nightscout.utils.SP;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
|
public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
|
||||||
private static Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
|
|
||||||
static SensitivityAAPSPlugin plugin = null;
|
static SensitivityAAPSPlugin plugin = null;
|
||||||
|
|
||||||
|
@ -49,8 +50,8 @@ public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AutosensResult detectSensitivity(long fromTime, long toTime) {
|
public AutosensResult detectSensitivity(IobCobCalculatorPlugin iobCobCalculatorPlugin, long fromTime, long toTime) {
|
||||||
LongSparseArray<AutosensData> autosensDataTable = IobCobCalculatorPlugin.getPlugin().getAutosensDataTable();
|
LongSparseArray<AutosensData> autosensDataTable = iobCobCalculatorPlugin.getAutosensDataTable();
|
||||||
|
|
||||||
String age = SP.getString(R.string.key_age, "");
|
String age = SP.getString(R.string.key_age, "");
|
||||||
int defaultHours = 24;
|
int defaultHours = 24;
|
||||||
|
@ -67,13 +68,13 @@ public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (autosensDataTable == null || autosensDataTable.size() < 4) {
|
if (autosensDataTable == null || autosensDataTable.size() < 4) {
|
||||||
log.debug("No autosens data available. lastDataTime=" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("No autosens data available. lastDataTime=" + iobCobCalculatorPlugin.lastDataTime());
|
||||||
return new AutosensResult();
|
return new AutosensResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
AutosensData current = IobCobCalculatorPlugin.getPlugin().getAutosensData(toTime); // this is running inside lock already
|
AutosensData current = iobCobCalculatorPlugin.getAutosensData(toTime); // this is running inside lock already
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + iobCobCalculatorPlugin.lastDataTime());
|
||||||
return new AutosensResult();
|
return new AutosensResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
|
@ -27,7 +28,7 @@ import info.nightscout.utils.DateUtil;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class SensitivityOref0Plugin extends AbstractSensitivityPlugin {
|
public class SensitivityOref0Plugin extends AbstractSensitivityPlugin {
|
||||||
private static Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
|
|
||||||
static SensitivityOref0Plugin plugin = null;
|
static SensitivityOref0Plugin plugin = null;
|
||||||
|
|
||||||
|
@ -48,8 +49,8 @@ public class SensitivityOref0Plugin extends AbstractSensitivityPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AutosensResult detectSensitivity(long fromTime, long toTime) {
|
public AutosensResult detectSensitivity(IobCobCalculatorPlugin iobCobCalculatorPlugin, long fromTime, long toTime) {
|
||||||
LongSparseArray<AutosensData> autosensDataTable = IobCobCalculatorPlugin.getPlugin().getAutosensDataTable();
|
LongSparseArray<AutosensData> autosensDataTable = iobCobCalculatorPlugin.getAutosensDataTable();
|
||||||
|
|
||||||
int hoursForDetection = 24;
|
int hoursForDetection = 24;
|
||||||
|
|
||||||
|
@ -62,13 +63,13 @@ public class SensitivityOref0Plugin extends AbstractSensitivityPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (autosensDataTable == null || autosensDataTable.size() < 4) {
|
if (autosensDataTable == null || autosensDataTable.size() < 4) {
|
||||||
log.debug("No autosens data available. lastDataTime=" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("No autosens data available. lastDataTime=" + iobCobCalculatorPlugin.lastDataTime());
|
||||||
return new AutosensResult();
|
return new AutosensResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
AutosensData current = IobCobCalculatorPlugin.getPlugin().getAutosensData(toTime); // this is running inside lock already
|
AutosensData current = iobCobCalculatorPlugin.getAutosensData(toTime); // this is running inside lock already
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + iobCobCalculatorPlugin.lastDataTime());
|
||||||
return new AutosensResult();
|
return new AutosensResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
|
@ -27,7 +28,7 @@ import info.nightscout.utils.DateUtil;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
|
public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
|
||||||
private static Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
|
|
||||||
static SensitivityOref1Plugin plugin = null;
|
static SensitivityOref1Plugin plugin = null;
|
||||||
|
|
||||||
|
@ -48,10 +49,10 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AutosensResult detectSensitivity(long fromTime, long toTime) {
|
public AutosensResult detectSensitivity(IobCobCalculatorPlugin iobCobCalculatorPlugin, long fromTime, long toTime) {
|
||||||
// todo this method is called from the IobCobCalculatorPlugin, which leads to a circular
|
// todo this method is called from the IobCobCalculatorPlugin, which leads to a circular
|
||||||
// dependency, this should be avoided
|
// dependency, this should be avoided
|
||||||
LongSparseArray<AutosensData> autosensDataTable = IobCobCalculatorPlugin.getPlugin().getAutosensDataTable();
|
LongSparseArray<AutosensData> autosensDataTable = iobCobCalculatorPlugin.getAutosensDataTable();
|
||||||
|
|
||||||
Profile profile = MainApp.getConfigBuilder().getProfile();
|
Profile profile = MainApp.getConfigBuilder().getProfile();
|
||||||
|
|
||||||
|
@ -61,14 +62,14 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (autosensDataTable == null || autosensDataTable.size() < 4) {
|
if (autosensDataTable == null || autosensDataTable.size() < 4) {
|
||||||
log.debug("No autosens data available. lastDataTime=" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("No autosens data available. lastDataTime=" + iobCobCalculatorPlugin.lastDataTime());
|
||||||
return new AutosensResult();
|
return new AutosensResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
// the current
|
// the current
|
||||||
AutosensData current = IobCobCalculatorPlugin.getPlugin().getAutosensData(toTime); // this is running inside lock already
|
AutosensData current = iobCobCalculatorPlugin.getAutosensData(toTime); // this is running inside lock already
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + iobCobCalculatorPlugin.lastDataTime());
|
||||||
return new AutosensResult();
|
return new AutosensResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,10 +121,12 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
|
||||||
|
|
||||||
// when we have less than 8h worth of deviation data, add up to 90m of zero deviations
|
// when we have less than 8h worth of deviation data, add up to 90m of zero deviations
|
||||||
// this dampens any large sensitivity changes detected based on too little data, without ignoring them completely
|
// this dampens any large sensitivity changes detected based on too little data, without ignoring them completely
|
||||||
log.debug("Using most recent " + deviationsArray.size() + " deviations");
|
if (Config.logAutosensData)
|
||||||
|
log.debug("Using most recent " + deviationsArray.size() + " deviations");
|
||||||
if (deviationsArray.size() < 96) {
|
if (deviationsArray.size() < 96) {
|
||||||
int pad = Math.round((1 - deviationsArray.size() / 96) * 18);
|
int pad = Math.round((1 - deviationsArray.size() / 96) * 18);
|
||||||
log.debug("Adding " + pad + " more zero deviations");
|
if (Config.logAutosensData)
|
||||||
|
log.debug("Adding " + pad + " more zero deviations");
|
||||||
for (int d = 0; d < pad; d++) {
|
for (int d = 0; d < pad; d++) {
|
||||||
//process.stderr.write(".");
|
//process.stderr.write(".");
|
||||||
deviationsArray.add(0d);
|
deviationsArray.add(0d);
|
||||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
|
@ -26,7 +27,7 @@ import info.nightscout.utils.SP;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin {
|
public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin {
|
||||||
private static Logger log = LoggerFactory.getLogger("AUTOSENS");
|
private static Logger log = LoggerFactory.getLogger(Constants.AUTOSENS);
|
||||||
|
|
||||||
private static SensitivityWeightedAveragePlugin plugin = null;
|
private static SensitivityWeightedAveragePlugin plugin = null;
|
||||||
|
|
||||||
|
@ -47,8 +48,8 @@ public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AutosensResult detectSensitivity(long fromTime, long toTime) {
|
public AutosensResult detectSensitivity(IobCobCalculatorPlugin iobCobCalculatorPlugin, long fromTime, long toTime) {
|
||||||
LongSparseArray<AutosensData> autosensDataTable = IobCobCalculatorPlugin.getPlugin().getAutosensDataTable();
|
LongSparseArray<AutosensData> autosensDataTable = iobCobCalculatorPlugin.getAutosensDataTable();
|
||||||
|
|
||||||
String age = SP.getString(R.string.key_age, "");
|
String age = SP.getString(R.string.key_age, "");
|
||||||
int defaultHours = 24;
|
int defaultHours = 24;
|
||||||
|
@ -58,14 +59,14 @@ public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin
|
||||||
int hoursForDetection = SP.getInt(R.string.key_openapsama_autosens_period, defaultHours);
|
int hoursForDetection = SP.getInt(R.string.key_openapsama_autosens_period, defaultHours);
|
||||||
|
|
||||||
if (autosensDataTable == null || autosensDataTable.size() < 4) {
|
if (autosensDataTable == null || autosensDataTable.size() < 4) {
|
||||||
log.debug("No autosens data available. lastDataTime=" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("No autosens data available. lastDataTime=" + iobCobCalculatorPlugin.lastDataTime());
|
||||||
return new AutosensResult();
|
return new AutosensResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
AutosensData current = IobCobCalculatorPlugin.getPlugin().getAutosensData(toTime); // this is running inside lock already
|
AutosensData current = iobCobCalculatorPlugin.getAutosensData(toTime); // this is running inside lock already
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
if (Config.logAutosensData)
|
if (Config.logAutosensData)
|
||||||
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + IobCobCalculatorPlugin.getPlugin().lastDataTime());
|
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + iobCobCalculatorPlugin.lastDataTime());
|
||||||
return new AutosensResult();
|
return new AutosensResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package info.nightscout.androidaps.plugins.SmsCommunicator;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.telephony.SmsManager;
|
import android.telephony.SmsManager;
|
||||||
import android.telephony.SmsMessage;
|
import android.telephony.SmsMessage;
|
||||||
|
@ -39,7 +40,6 @@ import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
||||||
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
|
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
|
||||||
import info.nightscout.androidaps.plugins.Overview.notifications.Notification;
|
import info.nightscout.androidaps.plugins.Overview.notifications.Notification;
|
||||||
import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventNewSMS;
|
|
||||||
import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventSmsCommunicatorUpdateGui;
|
import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventSmsCommunicatorUpdateGui;
|
||||||
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
|
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
|
@ -165,10 +165,11 @@ public class SmsCommunicatorPlugin extends PluginBase {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
public void handleNewData(Intent intent) {
|
||||||
public void onStatusEvent(final EventNewSMS ev) {
|
Bundle bundle = intent.getExtras();
|
||||||
|
if (bundle == null) return;
|
||||||
|
|
||||||
Object[] pdus = (Object[]) ev.bundle.get("pdus");
|
Object[] pdus = (Object[]) bundle.get("pdus");
|
||||||
if (pdus != null) {
|
if (pdus != null) {
|
||||||
// For every SMS message received
|
// For every SMS message received
|
||||||
for (Object pdu : pdus) {
|
for (Object pdu : pdus) {
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
package info.nightscout.androidaps.plugins.SmsCommunicator.events;
|
|
||||||
|
|
||||||
import android.os.Bundle;
|
|
||||||
|
|
||||||
import info.nightscout.androidaps.events.Event;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by mike on 13.07.2016.
|
|
||||||
*/
|
|
||||||
public class EventNewSMS extends Event {
|
|
||||||
public Bundle bundle;
|
|
||||||
public EventNewSMS(Bundle bundle) {
|
|
||||||
this.bundle = bundle;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,17 +1,32 @@
|
||||||
package info.nightscout.androidaps.plugins.Source;
|
package info.nightscout.androidaps.plugins.Source;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
import info.nightscout.androidaps.db.BgReading;
|
||||||
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||||
import info.nightscout.androidaps.interfaces.PluginType;
|
import info.nightscout.androidaps.interfaces.PluginType;
|
||||||
|
import info.nightscout.utils.NSUpload;
|
||||||
|
import info.nightscout.utils.SP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 28.11.2017.
|
* Created by mike on 28.11.2017.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class SourceDexcomG5Plugin extends PluginBase implements BgSourceInterface {
|
public class SourceDexcomG5Plugin extends PluginBase implements BgSourceInterface {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(Constants.BGSOURCE);
|
||||||
|
|
||||||
private static SourceDexcomG5Plugin plugin = null;
|
private static SourceDexcomG5Plugin plugin = null;
|
||||||
|
|
||||||
|
@ -37,4 +52,43 @@ public class SourceDexcomG5Plugin extends PluginBase implements BgSourceInterfac
|
||||||
public boolean advancedFilteringSupported() {
|
public boolean advancedFilteringSupported() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleNewData(Intent intent) {
|
||||||
|
// onHandleIntent Bundle{ data => [{"m_time":1511939180,"m_trend":"NotComputable","m_value":335}]; android.support.content.wakelockid => 95; }Bundle
|
||||||
|
|
||||||
|
if (!isEnabled(PluginType.BGSOURCE)) return;
|
||||||
|
|
||||||
|
Bundle bundle = intent.getExtras();
|
||||||
|
if (bundle == null) return;
|
||||||
|
|
||||||
|
BgReading bgReading = new BgReading();
|
||||||
|
|
||||||
|
String data = bundle.getString("data");
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received Dexcom Data", data);
|
||||||
|
|
||||||
|
try {
|
||||||
|
JSONArray jsonArray = new JSONArray(data);
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received Dexcom Data size:" + jsonArray.length());
|
||||||
|
for (int i = 0; i < jsonArray.length(); i++) {
|
||||||
|
JSONObject json = jsonArray.getJSONObject(i);
|
||||||
|
bgReading.value = json.getInt("m_value");
|
||||||
|
bgReading.direction = json.getString("m_trend");
|
||||||
|
bgReading.date = json.getLong("m_time") * 1000L;
|
||||||
|
bgReading.raw = 0;
|
||||||
|
boolean isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "DexcomG5");
|
||||||
|
if (isNew && SP.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
|
||||||
|
NSUpload.uploadBg(bgReading);
|
||||||
|
}
|
||||||
|
if (isNew && SP.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
|
||||||
|
NSUpload.sendToXdrip(bgReading);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.error("Exception: ", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,27 @@
|
||||||
package info.nightscout.androidaps.plugins.Source;
|
package info.nightscout.androidaps.plugins.Source;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
import info.nightscout.androidaps.db.BgReading;
|
||||||
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||||
import info.nightscout.androidaps.interfaces.PluginType;
|
import info.nightscout.androidaps.interfaces.PluginType;
|
||||||
|
import info.nightscout.utils.BundleLogger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 05.08.2016.
|
* Created by mike on 05.08.2016.
|
||||||
*/
|
*/
|
||||||
public class SourceGlimpPlugin extends PluginBase implements BgSourceInterface {
|
public class SourceGlimpPlugin extends PluginBase implements BgSourceInterface {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(Constants.BGSOURCE);
|
||||||
|
|
||||||
private static SourceGlimpPlugin plugin = null;
|
private static SourceGlimpPlugin plugin = null;
|
||||||
|
|
||||||
|
@ -32,4 +44,25 @@ public class SourceGlimpPlugin extends PluginBase implements BgSourceInterface {
|
||||||
public boolean advancedFilteringSupported() {
|
public boolean advancedFilteringSupported() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleNewData(Intent intent) {
|
||||||
|
|
||||||
|
if (!isEnabled(PluginType.BGSOURCE)) return;
|
||||||
|
|
||||||
|
Bundle bundle = intent.getExtras();
|
||||||
|
if (bundle == null) return;
|
||||||
|
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received Glimp Data: " + BundleLogger.log(bundle));
|
||||||
|
|
||||||
|
BgReading bgReading = new BgReading();
|
||||||
|
|
||||||
|
bgReading.value = bundle.getDouble("mySGV");
|
||||||
|
bgReading.direction = bundle.getString("myTrend");
|
||||||
|
bgReading.date = bundle.getLong("myTimestamp");
|
||||||
|
bgReading.raw = 0;
|
||||||
|
|
||||||
|
MainApp.getDbHelper().createIfNotExists(bgReading, "GLIMP");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,19 @@
|
||||||
package info.nightscout.androidaps.plugins.Source;
|
package info.nightscout.androidaps.plugins.Source;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
import info.nightscout.androidaps.db.BgReading;
|
||||||
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||||
|
@ -10,6 +23,8 @@ import info.nightscout.androidaps.interfaces.PluginType;
|
||||||
* Created by mike on 05.08.2016.
|
* Created by mike on 05.08.2016.
|
||||||
*/
|
*/
|
||||||
public class SourceMM640gPlugin extends PluginBase implements BgSourceInterface {
|
public class SourceMM640gPlugin extends PluginBase implements BgSourceInterface {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(Constants.BGSOURCE);
|
||||||
|
|
||||||
private static SourceMM640gPlugin plugin = null;
|
private static SourceMM640gPlugin plugin = null;
|
||||||
|
|
||||||
public static SourceMM640gPlugin getPlugin() {
|
public static SourceMM640gPlugin getPlugin() {
|
||||||
|
@ -31,4 +46,49 @@ public class SourceMM640gPlugin extends PluginBase implements BgSourceInterface
|
||||||
public boolean advancedFilteringSupported() {
|
public boolean advancedFilteringSupported() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleNewData(Intent intent) {
|
||||||
|
|
||||||
|
if (!isEnabled(PluginType.BGSOURCE)) return;
|
||||||
|
|
||||||
|
Bundle bundle = intent.getExtras();
|
||||||
|
if (bundle == null) return;
|
||||||
|
|
||||||
|
final String collection = bundle.getString("collection");
|
||||||
|
if (collection == null) return;
|
||||||
|
|
||||||
|
if (collection.equals("entries")) {
|
||||||
|
final String data = bundle.getString("data");
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received MM640g Data: ", data);
|
||||||
|
|
||||||
|
if ((data != null) && (data.length() > 0)) {
|
||||||
|
try {
|
||||||
|
final JSONArray json_array = new JSONArray(data);
|
||||||
|
for (int i = 0; i < json_array.length(); i++) {
|
||||||
|
final JSONObject json_object = json_array.getJSONObject(i);
|
||||||
|
final String type = json_object.getString("type");
|
||||||
|
switch (type) {
|
||||||
|
case "sgv":
|
||||||
|
BgReading bgReading = new BgReading();
|
||||||
|
|
||||||
|
bgReading.value = json_object.getDouble("sgv");
|
||||||
|
bgReading.direction = json_object.getString("direction");
|
||||||
|
bgReading.date = json_object.getLong("date");
|
||||||
|
bgReading.raw = json_object.getDouble("sgv");
|
||||||
|
|
||||||
|
MainApp.getDbHelper().createIfNotExists(bgReading, "MM640g");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Unknown entries type: " + type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.error("Exception: ", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,32 @@
|
||||||
package info.nightscout.androidaps.plugins.Source;
|
package info.nightscout.androidaps.plugins.Source;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
import info.nightscout.androidaps.db.BgReading;
|
||||||
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||||
import info.nightscout.androidaps.interfaces.PluginType;
|
import info.nightscout.androidaps.interfaces.PluginType;
|
||||||
|
import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSgv;
|
||||||
|
import info.nightscout.utils.JsonHelper;
|
||||||
|
import info.nightscout.utils.SP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 05.08.2016.
|
* Created by mike on 05.08.2016.
|
||||||
*/
|
*/
|
||||||
public class SourceNSClientPlugin extends PluginBase implements BgSourceInterface {
|
public class SourceNSClientPlugin extends PluginBase implements BgSourceInterface {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(Constants.BGSOURCE);
|
||||||
|
|
||||||
private static SourceNSClientPlugin plugin = null;
|
private static SourceNSClientPlugin plugin = null;
|
||||||
|
|
||||||
|
@ -39,6 +55,50 @@ public class SourceNSClientPlugin extends PluginBase implements BgSourceInterfac
|
||||||
return isAdvancedFilteringEnabled;
|
return isAdvancedFilteringEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleNewData(Intent intent) {
|
||||||
|
|
||||||
|
if (!isEnabled(PluginType.BGSOURCE) && !SP.getBoolean(R.string.key_ns_autobackfill, true))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Bundle bundles = intent.getExtras();
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (bundles.containsKey("sgv")) {
|
||||||
|
String sgvstring = bundles.getString("sgv");
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received NS Data: " + sgvstring);
|
||||||
|
|
||||||
|
JSONObject sgvJson = new JSONObject(sgvstring);
|
||||||
|
storeSgv(sgvJson);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bundles.containsKey("sgvs")) {
|
||||||
|
String sgvstring = bundles.getString("sgvs");
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received NS Data: " + sgvstring);
|
||||||
|
JSONArray jsonArray = new JSONArray(sgvstring);
|
||||||
|
for (int i = 0; i < jsonArray.length(); i++) {
|
||||||
|
JSONObject sgvJson = jsonArray.getJSONObject(i);
|
||||||
|
storeSgv(sgvJson);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Unhandled exception", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Objectives 0
|
||||||
|
ObjectivesPlugin.bgIsAvailableInNS = true;
|
||||||
|
ObjectivesPlugin.saveProgress();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void storeSgv(JSONObject sgvJson) {
|
||||||
|
NSSgv nsSgv = new NSSgv(sgvJson);
|
||||||
|
BgReading bgReading = new BgReading(nsSgv);
|
||||||
|
MainApp.getDbHelper().createIfNotExists(bgReading, "NS");
|
||||||
|
SourceNSClientPlugin.getPlugin().detectSource(JsonHelper.safeGetString(sgvJson, "device"), JsonHelper.safeGetLong(sgvJson, "mills"));
|
||||||
|
}
|
||||||
|
|
||||||
public void detectSource(String source, long timeStamp) {
|
public void detectSource(String source, long timeStamp) {
|
||||||
if (timeStamp > lastBGTimeStamp) {
|
if (timeStamp > lastBGTimeStamp) {
|
||||||
if (source.contains("G5 Native") || source.contains("AndroidAPS-DexcomG5"))
|
if (source.contains("G5 Native") || source.contains("AndroidAPS-DexcomG5"))
|
||||||
|
|
|
@ -1,16 +1,32 @@
|
||||||
package info.nightscout.androidaps.plugins.Source;
|
package info.nightscout.androidaps.plugins.Source;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
import info.nightscout.androidaps.db.BgReading;
|
||||||
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||||
import info.nightscout.androidaps.interfaces.PluginType;
|
import info.nightscout.androidaps.interfaces.PluginType;
|
||||||
|
import info.nightscout.utils.JsonHelper;
|
||||||
|
import info.nightscout.utils.NSUpload;
|
||||||
|
import info.nightscout.utils.SP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 05.08.2016.
|
* Created by mike on 05.08.2016.
|
||||||
*/
|
*/
|
||||||
public class SourcePoctechPlugin extends PluginBase implements BgSourceInterface {
|
public class SourcePoctechPlugin extends PluginBase implements BgSourceInterface {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(Constants.BGSOURCE);
|
||||||
|
|
||||||
private static SourcePoctechPlugin plugin = null;
|
private static SourcePoctechPlugin plugin = null;
|
||||||
|
|
||||||
|
@ -36,4 +52,44 @@ public class SourcePoctechPlugin extends PluginBase implements BgSourceInterface
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleNewData(Intent intent) {
|
||||||
|
|
||||||
|
if (!isEnabled(PluginType.BGSOURCE)) return;
|
||||||
|
|
||||||
|
Bundle bundle = intent.getExtras();
|
||||||
|
if (bundle == null) return;
|
||||||
|
|
||||||
|
BgReading bgReading = new BgReading();
|
||||||
|
|
||||||
|
String data = bundle.getString("data");
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received Poctech Data", data);
|
||||||
|
|
||||||
|
try {
|
||||||
|
JSONArray jsonArray = new JSONArray(data);
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received Poctech Data size:" + jsonArray.length());
|
||||||
|
for (int i = 0; i < jsonArray.length(); i++) {
|
||||||
|
JSONObject json = jsonArray.getJSONObject(i);
|
||||||
|
bgReading.value = json.getDouble("current");
|
||||||
|
bgReading.direction = json.getString("direction");
|
||||||
|
bgReading.date = json.getLong("date");
|
||||||
|
bgReading.raw = json.getDouble("raw");
|
||||||
|
if (JsonHelper.safeGetString(json, "units", Constants.MGDL).equals("mmol/L"))
|
||||||
|
bgReading.value = bgReading.value * Constants.MMOLL_TO_MGDL;
|
||||||
|
boolean isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Poctech");
|
||||||
|
if (isNew && SP.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
|
||||||
|
NSUpload.uploadBg(bgReading);
|
||||||
|
}
|
||||||
|
if (isNew && SP.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
|
||||||
|
NSUpload.sendToXdrip(bgReading);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.error("Exception: ", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,31 @@
|
||||||
package info.nightscout.androidaps.plugins.Source;
|
package info.nightscout.androidaps.plugins.Source;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
import info.nightscout.androidaps.Services.Intents;
|
||||||
|
import info.nightscout.androidaps.db.BgReading;
|
||||||
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||||
import info.nightscout.androidaps.interfaces.PluginType;
|
import info.nightscout.androidaps.interfaces.PluginType;
|
||||||
|
import info.nightscout.utils.BundleLogger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 05.08.2016.
|
* Created by mike on 05.08.2016.
|
||||||
*/
|
*/
|
||||||
public class SourceXdripPlugin extends PluginBase implements BgSourceInterface {
|
public class SourceXdripPlugin extends PluginBase implements BgSourceInterface {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(Constants.BGSOURCE);
|
||||||
|
|
||||||
private static SourceXdripPlugin plugin = null;
|
private static SourceXdripPlugin plugin = null;
|
||||||
|
|
||||||
boolean advancedFiltering;
|
boolean advancedFiltering;
|
||||||
|
|
||||||
public static SourceXdripPlugin getPlugin() {
|
public static SourceXdripPlugin getPlugin() {
|
||||||
|
@ -35,6 +48,28 @@ public class SourceXdripPlugin extends PluginBase implements BgSourceInterface {
|
||||||
return advancedFiltering;
|
return advancedFiltering;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleNewData(Intent intent) {
|
||||||
|
|
||||||
|
if (!isEnabled(PluginType.BGSOURCE)) return;
|
||||||
|
|
||||||
|
Bundle bundle = intent.getExtras();
|
||||||
|
if (bundle == null) return;
|
||||||
|
|
||||||
|
if (Config.logBgSource)
|
||||||
|
log.debug("Received xDrip data: " + BundleLogger.log(intent.getExtras()));
|
||||||
|
|
||||||
|
BgReading bgReading = new BgReading();
|
||||||
|
|
||||||
|
bgReading.value = bundle.getDouble(Intents.EXTRA_BG_ESTIMATE);
|
||||||
|
bgReading.direction = bundle.getString(Intents.EXTRA_BG_SLOPE_NAME);
|
||||||
|
bgReading.date = bundle.getLong(Intents.EXTRA_TIMESTAMP);
|
||||||
|
bgReading.raw = bundle.getDouble(Intents.EXTRA_RAW);
|
||||||
|
String source = bundle.getString(Intents.XDRIP_DATA_SOURCE_DESCRIPTION, "no Source specified");
|
||||||
|
SourceXdripPlugin.getPlugin().setSource(source);
|
||||||
|
MainApp.getDbHelper().createIfNotExists(bgReading, "XDRIP");
|
||||||
|
}
|
||||||
|
|
||||||
public void setSource(String source) {
|
public void setSource(String source) {
|
||||||
this.advancedFiltering = source.contains("G5 Native");
|
this.advancedFiltering = source.contains("G5 Native");
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||||
|
@ -75,7 +77,7 @@ import info.nightscout.androidaps.queue.commands.CommandTempBasalPercent;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandQueue {
|
public class CommandQueue {
|
||||||
private static Logger log = LoggerFactory.getLogger(CommandQueue.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
private final LinkedList<Command> queue = new LinkedList<>();
|
private final LinkedList<Command> queue = new LinkedList<>();
|
||||||
protected Command performing;
|
protected Command performing;
|
||||||
|
@ -109,12 +111,14 @@ public class CommandQueue {
|
||||||
|
|
||||||
private synchronized void inject(Command command) {
|
private synchronized void inject(Command command) {
|
||||||
// inject as a first command
|
// inject as a first command
|
||||||
log.debug("QUEUE: Adding as first: " + command.getClass().getSimpleName() + " - " + command.status());
|
if (Config.logQueue)
|
||||||
|
log.debug("Adding as first: " + command.getClass().getSimpleName() + " - " + command.status());
|
||||||
queue.addFirst(command);
|
queue.addFirst(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void add(Command command) {
|
private synchronized void add(Command command) {
|
||||||
log.debug("QUEUE: Adding: " + command.getClass().getSimpleName() + " - " + command.status());
|
if (Config.logQueue)
|
||||||
|
log.debug("Adding: " + command.getClass().getSimpleName() + " - " + command.status());
|
||||||
queue.add(command);
|
queue.add(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,15 +151,18 @@ public class CommandQueue {
|
||||||
// start thread again if not already running
|
// start thread again if not already running
|
||||||
protected synchronized void notifyAboutNewCommand() {
|
protected synchronized void notifyAboutNewCommand() {
|
||||||
while (thread != null && thread.getState() != Thread.State.TERMINATED && thread.waitingForDisconnect) {
|
while (thread != null && thread.getState() != Thread.State.TERMINATED && thread.waitingForDisconnect) {
|
||||||
log.debug("QUEUE: Waiting for previous thread finish");
|
if (Config.logQueue)
|
||||||
|
log.debug("Waiting for previous thread finish");
|
||||||
SystemClock.sleep(500);
|
SystemClock.sleep(500);
|
||||||
}
|
}
|
||||||
if (thread == null || thread.getState() == Thread.State.TERMINATED) {
|
if (thread == null || thread.getState() == Thread.State.TERMINATED) {
|
||||||
thread = new QueueThread(this);
|
thread = new QueueThread(this);
|
||||||
thread.start();
|
thread.start();
|
||||||
log.debug("QUEUE: Starting new thread");
|
if (Config.logQueue)
|
||||||
|
log.debug("Starting new thread");
|
||||||
} else {
|
} else {
|
||||||
log.debug("QUEUE: Thread is already running");
|
if (Config.logQueue)
|
||||||
|
log.debug("Thread is already running");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,8 +171,8 @@ public class CommandQueue {
|
||||||
tempCommandQueue.readStatus(reason, callback);
|
tempCommandQueue.readStatus(reason, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized boolean bolusInQueue(){
|
public synchronized boolean bolusInQueue() {
|
||||||
if(isRunning(Command.CommandType.BOLUS)) return true;
|
if (isRunning(Command.CommandType.BOLUS)) return true;
|
||||||
for (int i = 0; i < queue.size(); i++) {
|
for (int i = 0; i < queue.size(); i++) {
|
||||||
if (queue.get(i).commandType == Command.CommandType.BOLUS) {
|
if (queue.get(i).commandType == Command.CommandType.BOLUS) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -180,17 +187,19 @@ public class CommandQueue {
|
||||||
|
|
||||||
if (type == Command.CommandType.SMB_BOLUS) {
|
if (type == Command.CommandType.SMB_BOLUS) {
|
||||||
if (isRunning(Command.CommandType.BOLUS) || bolusInQueue()) {
|
if (isRunning(Command.CommandType.BOLUS) || bolusInQueue()) {
|
||||||
log.debug("Rejecting SMB since a bolus is queue/running");
|
if (Config.logQueue)
|
||||||
|
log.debug("Rejecting SMB since a bolus is queue/running");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (detailedBolusInfo.lastKnownBolusTime < TreatmentsPlugin.getPlugin().getLastBolusTime()) {
|
if (detailedBolusInfo.lastKnownBolusTime < TreatmentsPlugin.getPlugin().getLastBolusTime()) {
|
||||||
log.debug("Rejecting bolus, another bolus was issued since request time");
|
if (Config.logQueue)
|
||||||
|
log.debug("Rejecting bolus, another bolus was issued since request time");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(type.equals(Command.CommandType.BOLUS) && detailedBolusInfo.carbs > 0 && detailedBolusInfo.insulin == 0){
|
if (type.equals(Command.CommandType.BOLUS) && detailedBolusInfo.carbs > 0 && detailedBolusInfo.insulin == 0) {
|
||||||
type = Command.CommandType.CARBS_ONLY_TREATMENT;
|
type = Command.CommandType.CARBS_ONLY_TREATMENT;
|
||||||
//Carbs only can be added in parallel as they can be "in the future".
|
//Carbs only can be added in parallel as they can be "in the future".
|
||||||
} else {
|
} else {
|
||||||
|
@ -213,7 +222,7 @@ public class CommandQueue {
|
||||||
add(new CommandSMBBolus(detailedBolusInfo, callback));
|
add(new CommandSMBBolus(detailedBolusInfo, callback));
|
||||||
} else {
|
} else {
|
||||||
add(new CommandBolus(detailedBolusInfo, callback, type));
|
add(new CommandBolus(detailedBolusInfo, callback, type));
|
||||||
if(type.equals(Command.CommandType.BOLUS)) {
|
if (type.equals(Command.CommandType.BOLUS)) {
|
||||||
// Bring up bolus progress dialog (start here, so the dialog is shown when the bolus is requested,
|
// Bring up bolus progress dialog (start here, so the dialog is shown when the bolus is requested,
|
||||||
// not when the Bolus command is starting. The command closes the dialog upon completion).
|
// not when the Bolus command is starting. The command closes the dialog upon completion).
|
||||||
showBolusProgressDialog(detailedBolusInfo.insulin, detailedBolusInfo.context);
|
showBolusProgressDialog(detailedBolusInfo.insulin, detailedBolusInfo.context);
|
||||||
|
@ -337,7 +346,8 @@ public class CommandQueue {
|
||||||
// returns true if command is queued
|
// returns true if command is queued
|
||||||
public boolean setProfile(Profile profile, Callback callback) {
|
public boolean setProfile(Profile profile, Callback callback) {
|
||||||
if (isThisProfileSet(profile)) {
|
if (isThisProfileSet(profile)) {
|
||||||
log.debug("QUEUE: Correct profile already set");
|
if (Config.logQueue)
|
||||||
|
log.debug("Correct profile already set");
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(new PumpEnactResult().success(true).enacted(false)).run();
|
callback.result(new PumpEnactResult().success(true).enacted(false)).run();
|
||||||
return false;
|
return false;
|
||||||
|
@ -381,7 +391,8 @@ public class CommandQueue {
|
||||||
// returns true if command is queued
|
// returns true if command is queued
|
||||||
public boolean readStatus(String reason, Callback callback) {
|
public boolean readStatus(String reason, Callback callback) {
|
||||||
if (isLastScheduled(Command.CommandType.READSTATUS)) {
|
if (isLastScheduled(Command.CommandType.READSTATUS)) {
|
||||||
log.debug("QUEUE: READSTATUS " + reason + " ignored as duplicated");
|
if (Config.logQueue)
|
||||||
|
log.debug("READSTATUS " + reason + " ignored as duplicated");
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(executingNowError()).run();
|
callback.result(executingNowError()).run();
|
||||||
return false;
|
return false;
|
||||||
|
@ -496,8 +507,10 @@ public class CommandQueue {
|
||||||
if (activePump != null && current != null) {
|
if (activePump != null && current != null) {
|
||||||
boolean result = activePump.isThisProfileSet(profile);
|
boolean result = activePump.isThisProfileSet(profile);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
log.debug("Current profile: " + current.getData().toString());
|
if (Config.logQueue) {
|
||||||
log.debug("New profile: " + profile.getData().toString());
|
log.debug("Current profile: " + current.toString());
|
||||||
|
log.debug("New profile: " + profile.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
} else return true;
|
} else return true;
|
||||||
|
|
|
@ -8,6 +8,7 @@ import android.os.SystemClock;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
import info.nightscout.androidaps.Constants;
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
@ -26,7 +27,7 @@ import info.nightscout.utils.SP;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class QueueThread extends Thread {
|
public class QueueThread extends Thread {
|
||||||
private static Logger log = LoggerFactory.getLogger(QueueThread.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
private CommandQueue queue;
|
private CommandQueue queue;
|
||||||
|
|
||||||
|
@ -54,7 +55,8 @@ public class QueueThread extends Thread {
|
||||||
while (true) {
|
while (true) {
|
||||||
PumpInterface pump = ConfigBuilderPlugin.getActivePump();
|
PumpInterface pump = ConfigBuilderPlugin.getActivePump();
|
||||||
if (pump == null) {
|
if (pump == null) {
|
||||||
log.debug("QUEUE: pump == null");
|
if (Config.logQueue)
|
||||||
|
log.debug("pump == null");
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.pumpNotInitialized)));
|
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.pumpNotInitialized)));
|
||||||
SystemClock.sleep(1000);
|
SystemClock.sleep(1000);
|
||||||
continue;
|
continue;
|
||||||
|
@ -64,15 +66,17 @@ public class QueueThread extends Thread {
|
||||||
if (!pump.isConnected() && secondsElapsed > Constants.PUMP_MAX_CONNECTION_TIME_IN_SECONDS) {
|
if (!pump.isConnected() && secondsElapsed > Constants.PUMP_MAX_CONNECTION_TIME_IN_SECONDS) {
|
||||||
MainApp.bus().post(new EventDismissBolusprogressIfRunning(null));
|
MainApp.bus().post(new EventDismissBolusprogressIfRunning(null));
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.connectiontimedout)));
|
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.connectiontimedout)));
|
||||||
log.debug("QUEUE: timed out");
|
if (Config.logQueue)
|
||||||
|
log.debug("timed out");
|
||||||
pump.stopConnecting();
|
pump.stopConnecting();
|
||||||
|
|
||||||
//BLUETOOTH-WATCHDOG
|
//BLUETOOTH-WATCHDOG
|
||||||
boolean watchdog = SP.getBoolean(R.string.key_btwatchdog, false);
|
boolean watchdog = SP.getBoolean(R.string.key_btwatchdog, false);
|
||||||
long last_watchdog = SP.getLong(R.string.key_btwatchdog_lastbark, 0l);
|
long last_watchdog = SP.getLong(R.string.key_btwatchdog_lastbark, 0l);
|
||||||
watchdog = watchdog && System.currentTimeMillis() - last_watchdog > (Constants.MIN_WATCHDOG_INTERVAL_IN_SECONDS * 1000);
|
watchdog = watchdog && System.currentTimeMillis() - last_watchdog > (Constants.MIN_WATCHDOG_INTERVAL_IN_SECONDS * 1000);
|
||||||
if(watchdog) {
|
if (watchdog) {
|
||||||
log.debug("BT watchdog - toggeling the phonest bluetooth");
|
if (Config.logQueue)
|
||||||
|
log.debug("BT watchdog - toggeling the phonest bluetooth");
|
||||||
//write time
|
//write time
|
||||||
SP.putLong(R.string.key_btwatchdog_lastbark, System.currentTimeMillis());
|
SP.putLong(R.string.key_btwatchdog_lastbark, System.currentTimeMillis());
|
||||||
//toggle BT
|
//toggle BT
|
||||||
|
@ -91,7 +95,8 @@ public class QueueThread extends Thread {
|
||||||
pump.connect("watchdog");
|
pump.connect("watchdog");
|
||||||
} else {
|
} else {
|
||||||
queue.clear();
|
queue.clear();
|
||||||
log.debug("QUEUE: no connection possible");
|
if (Config.logQueue)
|
||||||
|
log.debug("no connection possible");
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING));
|
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING));
|
||||||
pump.disconnect("Queue empty");
|
pump.disconnect("Queue empty");
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED));
|
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED));
|
||||||
|
@ -100,7 +105,8 @@ public class QueueThread extends Thread {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pump.isConnecting()) {
|
if (pump.isConnecting()) {
|
||||||
log.debug("QUEUE: connecting " + secondsElapsed);
|
if (Config.logQueue)
|
||||||
|
log.debug("connecting " + secondsElapsed);
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTING, (int) secondsElapsed));
|
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTING, (int) secondsElapsed));
|
||||||
SystemClock.sleep(1000);
|
SystemClock.sleep(1000);
|
||||||
continue;
|
continue;
|
||||||
|
@ -108,7 +114,8 @@ public class QueueThread extends Thread {
|
||||||
|
|
||||||
|
|
||||||
if (!pump.isConnected()) {
|
if (!pump.isConnected()) {
|
||||||
log.debug("QUEUE: connect");
|
if (Config.logQueue)
|
||||||
|
log.debug("connect");
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTING, (int) secondsElapsed));
|
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTING, (int) secondsElapsed));
|
||||||
pump.connect("Connection needed");
|
pump.connect("Connection needed");
|
||||||
SystemClock.sleep(1000);
|
SystemClock.sleep(1000);
|
||||||
|
@ -118,12 +125,14 @@ public class QueueThread extends Thread {
|
||||||
if (queue.performing() == null) {
|
if (queue.performing() == null) {
|
||||||
if (!connectLogged) {
|
if (!connectLogged) {
|
||||||
connectLogged = true;
|
connectLogged = true;
|
||||||
log.debug("QUEUE: connection time " + secondsElapsed + "s");
|
if (Config.logQueue)
|
||||||
|
log.debug("connection time " + secondsElapsed + "s");
|
||||||
}
|
}
|
||||||
// Pickup 1st command and set performing variable
|
// Pickup 1st command and set performing variable
|
||||||
if (queue.size() > 0) {
|
if (queue.size() > 0) {
|
||||||
queue.pickup();
|
queue.pickup();
|
||||||
log.debug("QUEUE: performing " + queue.performing().status());
|
if (Config.logQueue)
|
||||||
|
log.debug("performing " + queue.performing().status());
|
||||||
MainApp.bus().post(new EventQueueChanged());
|
MainApp.bus().post(new EventQueueChanged());
|
||||||
queue.performing().execute();
|
queue.performing().execute();
|
||||||
queue.resetPerforming();
|
queue.resetPerforming();
|
||||||
|
@ -138,14 +147,17 @@ public class QueueThread extends Thread {
|
||||||
long secondsFromLastCommand = (System.currentTimeMillis() - lastCommandTime) / 1000;
|
long secondsFromLastCommand = (System.currentTimeMillis() - lastCommandTime) / 1000;
|
||||||
if (secondsFromLastCommand >= 5) {
|
if (secondsFromLastCommand >= 5) {
|
||||||
waitingForDisconnect = true;
|
waitingForDisconnect = true;
|
||||||
log.debug("QUEUE: queue empty. disconnect");
|
if (Config.logQueue)
|
||||||
|
log.debug("queue empty. disconnect");
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING));
|
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING));
|
||||||
pump.disconnect("Queue empty");
|
pump.disconnect("Queue empty");
|
||||||
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED));
|
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED));
|
||||||
log.debug("QUEUE: disconnected");
|
if (Config.logQueue)
|
||||||
|
log.debug("disconnected");
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
log.debug("QUEUE: waiting for disconnect");
|
if (Config.logQueue)
|
||||||
|
log.debug("waiting for disconnect");
|
||||||
SystemClock.sleep(1000);
|
SystemClock.sleep(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,6 +166,4 @@ public class QueueThread extends Thread {
|
||||||
mWakeLock.release();
|
mWakeLock.release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package info.nightscout.androidaps.queue.commands;
|
package info.nightscout.androidaps.queue.commands;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
|
@ -9,6 +14,8 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
* Created by mike on 09.11.2017.
|
* Created by mike on 09.11.2017.
|
||||||
*/
|
*/
|
||||||
public abstract class Command {
|
public abstract class Command {
|
||||||
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
public enum CommandType {
|
public enum CommandType {
|
||||||
BOLUS,
|
BOLUS,
|
||||||
SMB_BOLUS,
|
SMB_BOLUS,
|
||||||
|
@ -33,6 +40,8 @@ public abstract class Command {
|
||||||
PumpEnactResult result = new PumpEnactResult();
|
PumpEnactResult result = new PumpEnactResult();
|
||||||
result.success = false;
|
result.success = false;
|
||||||
result.comment = MainApp.gs(R.string.connectiontimedout);
|
result.comment = MainApp.gs(R.string.connectiontimedout);
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result cancel");
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(result).run();
|
callback.result(result).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package info.nightscout.androidaps.queue.commands;
|
package info.nightscout.androidaps.queue.commands;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
|
@ -14,6 +19,8 @@ import info.nightscout.utils.DecimalFormatter;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandBolus extends Command {
|
public class CommandBolus extends Command {
|
||||||
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
DetailedBolusInfo detailedBolusInfo;
|
DetailedBolusInfo detailedBolusInfo;
|
||||||
|
|
||||||
public CommandBolus(DetailedBolusInfo detailedBolusInfo, Callback callback, CommandType type) {
|
public CommandBolus(DetailedBolusInfo detailedBolusInfo, Callback callback, CommandType type) {
|
||||||
|
@ -28,6 +35,8 @@ public class CommandBolus extends Command {
|
||||||
|
|
||||||
BolusProgressDialog.bolusEnded = true;
|
BolusProgressDialog.bolusEnded = true;
|
||||||
MainApp.bus().post(new EventDismissBolusprogressIfRunning(r));
|
MainApp.bus().post(new EventDismissBolusprogressIfRunning(r));
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||||
|
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
|
@ -14,7 +14,7 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandCancelExtendedBolus extends Command {
|
public class CommandCancelExtendedBolus extends Command {
|
||||||
private static Logger log = LoggerFactory.getLogger(CommandCancelExtendedBolus.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
public CommandCancelExtendedBolus(Callback callback) {
|
public CommandCancelExtendedBolus(Callback callback) {
|
||||||
commandType = CommandType.EXTENDEDBOLUS;
|
commandType = CommandType.EXTENDEDBOLUS;
|
||||||
|
@ -24,8 +24,8 @@ public class CommandCancelExtendedBolus extends Command {
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().cancelExtendedBolus();
|
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().cancelExtendedBolus();
|
||||||
if (Config.logCongigBuilderActions)
|
if (Config.logQueue)
|
||||||
log.debug("cancelExtendedBolus success: " + r.success + " enacted: " + r.enacted);
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package info.nightscout.androidaps.queue.commands;
|
package info.nightscout.androidaps.queue.commands;
|
||||||
|
|
||||||
import info.nightscout.androidaps.MainApp;
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
|
@ -10,6 +14,8 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandCancelTempBasal extends Command {
|
public class CommandCancelTempBasal extends Command {
|
||||||
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
boolean enforceNew;
|
boolean enforceNew;
|
||||||
|
|
||||||
public CommandCancelTempBasal(boolean enforceNew, Callback callback) {
|
public CommandCancelTempBasal(boolean enforceNew, Callback callback) {
|
||||||
|
@ -21,6 +27,8 @@ public class CommandCancelTempBasal extends Command {
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().cancelTempBasal(enforceNew);
|
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().cancelTempBasal(enforceNew);
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
|
@ -14,7 +14,7 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandExtendedBolus extends Command {
|
public class CommandExtendedBolus extends Command {
|
||||||
private static Logger log = LoggerFactory.getLogger(CommandExtendedBolus.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
private double insulin;
|
private double insulin;
|
||||||
private int durationInMinutes;
|
private int durationInMinutes;
|
||||||
|
@ -29,8 +29,8 @@ public class CommandExtendedBolus extends Command {
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().setExtendedBolus(insulin, durationInMinutes);
|
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().setExtendedBolus(insulin, durationInMinutes);
|
||||||
if (Config.logCongigBuilderActions)
|
if (Config.logQueue)
|
||||||
log.debug("setExtendedBolus rate: " + insulin + " durationInMinutes: " + durationInMinutes + " success: " + r.success + " enacted: " + r.enacted);
|
log.debug("Result rate: " + insulin + " durationInMinutes: " + durationInMinutes + " success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package info.nightscout.androidaps.queue.commands;
|
package info.nightscout.androidaps.queue.commands;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.interfaces.DanaRInterface;
|
import info.nightscout.androidaps.interfaces.DanaRInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
|
@ -11,6 +16,8 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandLoadEvents extends Command {
|
public class CommandLoadEvents extends Command {
|
||||||
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
public CommandLoadEvents(Callback callback) {
|
public CommandLoadEvents(Callback callback) {
|
||||||
commandType = CommandType.LOADEVENTS;
|
commandType = CommandType.LOADEVENTS;
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
|
@ -22,6 +29,8 @@ public class CommandLoadEvents extends Command {
|
||||||
if (pump instanceof DanaRInterface) {
|
if (pump instanceof DanaRInterface) {
|
||||||
DanaRInterface danaPump = (DanaRInterface) pump;
|
DanaRInterface danaPump = (DanaRInterface) pump;
|
||||||
PumpEnactResult r = danaPump.loadEvents();
|
PumpEnactResult r = danaPump.loadEvents();
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,23 @@
|
||||||
package info.nightscout.androidaps.queue.commands;
|
package info.nightscout.androidaps.queue.commands;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.interfaces.DanaRInterface;
|
import info.nightscout.androidaps.interfaces.DanaRInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
import info.nightscout.androidaps.queue.commands.Command;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 10.11.2017.
|
* Created by mike on 10.11.2017.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandLoadHistory extends Command {
|
public class CommandLoadHistory extends Command {
|
||||||
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
byte type;
|
byte type;
|
||||||
|
|
||||||
public CommandLoadHistory(byte type, Callback callback) {
|
public CommandLoadHistory(byte type, Callback callback) {
|
||||||
|
@ -26,6 +32,8 @@ public class CommandLoadHistory extends Command {
|
||||||
if (pump instanceof DanaRInterface) {
|
if (pump instanceof DanaRInterface) {
|
||||||
DanaRInterface danaPump = (DanaRInterface) pump;
|
DanaRInterface danaPump = (DanaRInterface) pump;
|
||||||
PumpEnactResult r = danaPump.loadHistory(type);
|
PumpEnactResult r = danaPump.loadHistory(type);
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package info.nightscout.androidaps.queue.commands;
|
package info.nightscout.androidaps.queue.commands;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
|
@ -10,6 +15,8 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandLoadTDDs extends Command {
|
public class CommandLoadTDDs extends Command {
|
||||||
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
|
|
||||||
public CommandLoadTDDs(Callback callback) {
|
public CommandLoadTDDs(Callback callback) {
|
||||||
commandType = CommandType.LOADHISTORY; //belongs to the history group of commands
|
commandType = CommandType.LOADHISTORY; //belongs to the history group of commands
|
||||||
|
@ -20,9 +27,11 @@ public class CommandLoadTDDs extends Command {
|
||||||
public void execute() {
|
public void execute() {
|
||||||
PumpInterface pump = ConfigBuilderPlugin.getActivePump();
|
PumpInterface pump = ConfigBuilderPlugin.getActivePump();
|
||||||
PumpEnactResult r = pump.loadTDDs();
|
PumpEnactResult r = pump.loadTDDs();
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String status() {
|
public String status() {
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package info.nightscout.androidaps.queue.commands;
|
package info.nightscout.androidaps.queue.commands;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
import info.nightscout.utils.LocalAlertUtils;
|
import info.nightscout.utils.LocalAlertUtils;
|
||||||
|
@ -9,6 +14,8 @@ import info.nightscout.utils.LocalAlertUtils;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandReadStatus extends Command {
|
public class CommandReadStatus extends Command {
|
||||||
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
String reason;
|
String reason;
|
||||||
|
|
||||||
public CommandReadStatus(String reason, Callback callback) {
|
public CommandReadStatus(String reason, Callback callback) {
|
||||||
|
@ -21,6 +28,8 @@ public class CommandReadStatus extends Command {
|
||||||
public void execute() {
|
public void execute() {
|
||||||
ConfigBuilderPlugin.getActivePump().getPumpStatus();
|
ConfigBuilderPlugin.getActivePump().getPumpStatus();
|
||||||
LocalAlertUtils.notifyPumpStatusRead();
|
LocalAlertUtils.notifyPumpStatusRead();
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("CommandReadStatus executed. Reason: " + reason);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(null).run();
|
callback.result(null).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package info.nightscout.androidaps.queue.commands;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
|
@ -20,7 +22,8 @@ import info.nightscout.utils.T;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandSMBBolus extends Command {
|
public class CommandSMBBolus extends Command {
|
||||||
private static Logger log = LoggerFactory.getLogger(CommandSMBBolus.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
DetailedBolusInfo detailedBolusInfo;
|
DetailedBolusInfo detailedBolusInfo;
|
||||||
|
|
||||||
public CommandSMBBolus(DetailedBolusInfo detailedBolusInfo, Callback callback) {
|
public CommandSMBBolus(DetailedBolusInfo detailedBolusInfo, Callback callback) {
|
||||||
|
@ -34,20 +37,25 @@ public class CommandSMBBolus extends Command {
|
||||||
PumpEnactResult r;
|
PumpEnactResult r;
|
||||||
long lastBolusTime = TreatmentsPlugin.getPlugin().getLastBolusTime();
|
long lastBolusTime = TreatmentsPlugin.getPlugin().getLastBolusTime();
|
||||||
if (lastBolusTime != 0 && lastBolusTime + T.mins(3).msecs() > DateUtil.now()) {
|
if (lastBolusTime != 0 && lastBolusTime + T.mins(3).msecs() > DateUtil.now()) {
|
||||||
log.debug("SMB requsted but still in 3 min interval");
|
if (Config.logQueue)
|
||||||
|
log.debug("SMB requsted but still in 3 min interval");
|
||||||
r = new PumpEnactResult().enacted(false).success(false).comment("SMB requsted but still in 3 min interval");
|
r = new PumpEnactResult().enacted(false).success(false).comment("SMB requsted but still in 3 min interval");
|
||||||
} else if (detailedBolusInfo.deliverAt != 0 && detailedBolusInfo.deliverAt + T.mins(1).msecs() > System.currentTimeMillis())
|
} else if (detailedBolusInfo.deliverAt != 0 && detailedBolusInfo.deliverAt + T.mins(1).msecs() > System.currentTimeMillis()) {
|
||||||
r = ConfigBuilderPlugin.getActivePump().deliverTreatment(detailedBolusInfo);
|
r = ConfigBuilderPlugin.getActivePump().deliverTreatment(detailedBolusInfo);
|
||||||
else {
|
} else {
|
||||||
r = new PumpEnactResult().enacted(false).success(false).comment("SMB request too old");
|
r = new PumpEnactResult().enacted(false).success(false).comment("SMB request too old");
|
||||||
log.debug("SMB bolus canceled. delivetAt=" + detailedBolusInfo.deliverAt + " now=" + System.currentTimeMillis());
|
if (Config.logQueue)
|
||||||
|
log.debug("SMB bolus canceled. delivetAt: " + DateUtil.dateAndTimeString(detailedBolusInfo.deliverAt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||||
|
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String status() {
|
public String status() {
|
||||||
return "SMBBOLUS " + DecimalFormatter.to1Decimal(detailedBolusInfo.insulin) + "U";
|
return "SMBBOLUS " + DecimalFormatter.to2Decimal(detailedBolusInfo.insulin) + "U";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package info.nightscout.androidaps.queue.commands;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
|
@ -20,7 +22,8 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandSetProfile extends Command {
|
public class CommandSetProfile extends Command {
|
||||||
private static Logger log = LoggerFactory.getLogger(CommandSetProfile.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
private Profile profile;
|
private Profile profile;
|
||||||
|
|
||||||
public CommandSetProfile(Profile profile, Callback callback) {
|
public CommandSetProfile(Profile profile, Callback callback) {
|
||||||
|
@ -32,13 +35,16 @@ public class CommandSetProfile extends Command {
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
if (ConfigBuilderPlugin.getCommandQueue().isThisProfileSet(profile)) {
|
if (ConfigBuilderPlugin.getCommandQueue().isThisProfileSet(profile)) {
|
||||||
log.debug("QUEUE: Correct profile already set");
|
if (Config.logQueue)
|
||||||
|
log.debug("Correct profile already set. profile: " + profile.toString());
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(new PumpEnactResult().success(true).enacted(false)).run();
|
callback.result(new PumpEnactResult().success(true).enacted(false)).run();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().setNewBasalProfile(profile);
|
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().setNewBasalProfile(profile);
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted + " profile: " + profile.toString());
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
|
|
||||||
|
|
|
@ -3,13 +3,12 @@ package info.nightscout.androidaps.queue.commands;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.interfaces.DanaRInterface;
|
import info.nightscout.androidaps.interfaces.DanaRInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PluginType;
|
|
||||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Plugin;
|
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,7 +16,8 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandSetUserSettings extends Command {
|
public class CommandSetUserSettings extends Command {
|
||||||
private static Logger log = LoggerFactory.getLogger(CommandSetUserSettings.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
public CommandSetUserSettings(Callback callback) {
|
public CommandSetUserSettings(Callback callback) {
|
||||||
commandType = CommandType.SETUSERSETTINGS;
|
commandType = CommandType.SETUSERSETTINGS;
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
|
@ -28,11 +28,9 @@ public class CommandSetUserSettings extends Command {
|
||||||
PumpInterface pump = ConfigBuilderPlugin.getActivePump();
|
PumpInterface pump = ConfigBuilderPlugin.getActivePump();
|
||||||
if (pump instanceof DanaRInterface) {
|
if (pump instanceof DanaRInterface) {
|
||||||
DanaRInterface danaPump = (DanaRInterface) pump;
|
DanaRInterface danaPump = (DanaRInterface) pump;
|
||||||
boolean isDanaRv2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class) != null && MainApp.getSpecificPlugin(DanaRv2Plugin.class).isEnabled(PluginType.PUMP);
|
|
||||||
if(isDanaRv2){
|
|
||||||
log.debug("MsgSetUserOptions detected for DanaRv2");
|
|
||||||
}
|
|
||||||
PumpEnactResult r = danaPump.setUserOptions();
|
PumpEnactResult r = danaPump.setUserOptions();
|
||||||
|
if (Config.logQueue)
|
||||||
|
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
|
@ -15,7 +16,7 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandTempBasalAbsolute extends Command {
|
public class CommandTempBasalAbsolute extends Command {
|
||||||
private static Logger log = LoggerFactory.getLogger(CommandTempBasalAbsolute.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
int durationInMinutes;
|
int durationInMinutes;
|
||||||
double absoluteRate;
|
double absoluteRate;
|
||||||
|
@ -34,8 +35,8 @@ public class CommandTempBasalAbsolute extends Command {
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().setTempBasalAbsolute(absoluteRate, durationInMinutes, profile, enforceNew);
|
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().setTempBasalAbsolute(absoluteRate, durationInMinutes, profile, enforceNew);
|
||||||
if (Config.logCongigBuilderActions)
|
if (Config.logQueue)
|
||||||
log.debug("setTempBasalAbsolute rate: " + absoluteRate + " durationInMinutes: " + durationInMinutes + " success: " + r.success + " enacted: " + r.enacted);
|
log.debug("Result rate: " + absoluteRate + " durationInMinutes: " + durationInMinutes + " success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
|
@ -14,7 +15,7 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class CommandTempBasalPercent extends Command {
|
public class CommandTempBasalPercent extends Command {
|
||||||
private static Logger log = LoggerFactory.getLogger(CommandTempBasalPercent.class);
|
private Logger log = LoggerFactory.getLogger(Constants.QUEUE);
|
||||||
|
|
||||||
int durationInMinutes;
|
int durationInMinutes;
|
||||||
int percent;
|
int percent;
|
||||||
|
@ -33,8 +34,8 @@ public class CommandTempBasalPercent extends Command {
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().setTempBasalPercent(percent, durationInMinutes, profile, enforceNew);
|
PumpEnactResult r = ConfigBuilderPlugin.getActivePump().setTempBasalPercent(percent, durationInMinutes, profile, enforceNew);
|
||||||
if (Config.logCongigBuilderActions)
|
if (Config.logQueue)
|
||||||
log.debug("setTempBasalPercent percent: " + percent + " durationInMinutes: " + durationInMinutes + " success: " + r.success + " enacted: " + r.enacted);
|
log.debug("Result percent: " + percent + " durationInMinutes: " + durationInMinutes + " success: " + r.success + " enacted: " + r.enacted);
|
||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.result(r).run();
|
callback.result(r).run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,41 +27,35 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageButton
|
|
||||||
android:id="@+id/historybrowse_start"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:srcCompat="@drawable/ic_first_page_black_24dp" />
|
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/historybrowse_left"
|
android:id="@+id/historybrowse_left"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
app:srcCompat="@drawable/ic_chevron_left_black_24dp" />
|
app:srcCompat="@drawable/ic_chevron_left_black_24dp" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/historybrowse_date"
|
android:id="@+id/historybrowse_date"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text="Button" />
|
android:text="Button" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/historybrowse_right"
|
android:id="@+id/historybrowse_right"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
app:srcCompat="@drawable/ic_chevron_right_black_24dp" />
|
app:srcCompat="@drawable/ic_chevron_right_black_24dp" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/historybrowse_end"
|
android:id="@+id/historybrowse_end"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
app:srcCompat="@drawable/ic_last_page_black_24dp" />
|
app:srcCompat="@drawable/ic_last_page_black_24dp" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/historybrowse_zoom"
|
android:id="@+id/historybrowse_zoom"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text="24" />
|
android:text="24" />
|
||||||
|
|
||||||
|
|
|
@ -248,7 +248,7 @@
|
||||||
<string name="danar_glucose">КЗ</string>
|
<string name="danar_glucose">КЗ</string>
|
||||||
<string name="danar_carbohydrate">въглехидрати</string>
|
<string name="danar_carbohydrate">въглехидрати</string>
|
||||||
<string name="danar_alarm">аларма</string>
|
<string name="danar_alarm">аларма</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">Общо %d записа качени</string>
|
<string name="danar_totaluploaded">Общо %1$d записа качени</string>
|
||||||
<string name="danar_sbolus">S болус</string>
|
<string name="danar_sbolus">S болус</string>
|
||||||
<string name="danar_history_alarm">Аларми</string>
|
<string name="danar_history_alarm">Аларми</string>
|
||||||
<string name="danar_history_basalhours">Базален по часове</string>
|
<string name="danar_history_basalhours">Базален по часове</string>
|
||||||
|
@ -259,7 +259,7 @@
|
||||||
<string name="danar_history_glucose">КЗ</string>
|
<string name="danar_history_glucose">КЗ</string>
|
||||||
<string name="danar_history_refill">Презареждане</string>
|
<string name="danar_history_refill">Презареждане</string>
|
||||||
<string name="danar_history_syspend">Спиране</string>
|
<string name="danar_history_syspend">Спиране</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Свързва се с помпата за %d сек.</string>
|
<string name="danar_history_connectingfor">Свързва се с помпата за %1$d сек.</string>
|
||||||
<string name="danar_password_title">Парола за помпата</string>
|
<string name="danar_password_title">Парола за помпата</string>
|
||||||
<string name="wrongpumppassword">Грешна парола за помпата!</string>
|
<string name="wrongpumppassword">Грешна парола за помпата!</string>
|
||||||
<string name="pumpbusy">Помпата е заета</string>
|
<string name="pumpbusy">Помпата е заета</string>
|
||||||
|
@ -354,13 +354,13 @@
|
||||||
<string name="MM640g">MM640g</string>
|
<string name="MM640g">MM640g</string>
|
||||||
<string name="ongoingnotificaction">Текущи известия</string>
|
<string name="ongoingnotificaction">Текущи известия</string>
|
||||||
<string name="old_data">СТАРИ ДАННИ</string>
|
<string name="old_data">СТАРИ ДАННИ</string>
|
||||||
<string name="minago">преди %d мин</string>
|
<string name="minago">преди %1$d мин</string>
|
||||||
<string name="sms_minago">%dmin ago</string>
|
<string name="sms_minago">%dmin ago</string>
|
||||||
<string name="localprofile">Локален профил</string>
|
<string name="localprofile">Локален профил</string>
|
||||||
<string name="openapsama">OpenAPS AMA</string>
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
<string name="short_avgdelta">Краткоср. Δ:</string>
|
<string name="short_avgdelta">Краткоср. Δ:</string>
|
||||||
<string name="long_avgdelta">Дългоср. Δ:</string>
|
<string name="long_avgdelta">Дългоср. Δ:</string>
|
||||||
<string name="array_of_elements">Масив от %d елемента.Актуална стойност:</string>
|
<string name="array_of_elements">Масив от %1$d елемента.Актуална стойност:</string>
|
||||||
<string name="openapsma_autosensdata_label">Autosens данни</string>
|
<string name="openapsma_autosensdata_label">Autosens данни</string>
|
||||||
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
||||||
<string name="openapsama_useautosens">Разреши AMA autosens</string>
|
<string name="openapsama_useautosens">Разреши AMA autosens</string>
|
||||||
|
@ -465,10 +465,10 @@
|
||||||
<string name="adult">Възрастен</string>
|
<string name="adult">Възрастен</string>
|
||||||
<string name="patientage_summary">Изберете възраст за определяне лимитите на безопасност</string>
|
<string name="patientage_summary">Изберете възраст за определяне лимитите на безопасност</string>
|
||||||
<string name="Glimp">Glimp</string>
|
<string name="Glimp">Glimp</string>
|
||||||
<string name="needwhitelisting" formatted="false">%s се нуждае от зключване на оптимизиране на батерията за пълна функционалност</string>
|
<string name="needwhitelisting">%1$s се нуждае от зключване на оптимизиране на батерията за пълна функционалност</string>
|
||||||
<string name="loopsuspended">Loop изключен</string>
|
<string name="loopsuspended">Loop изключен</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Изключен (%d мин)</string>
|
<string name="loopsuspendedfor">Изключен (%1$d мин)</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Суперболус (%d мин)</string>
|
<string name="loopsuperbolusfor">Суперболус (%1$d мин)</string>
|
||||||
<string name="suspendloopfor1h">Изключи Loop за 1ч</string>
|
<string name="suspendloopfor1h">Изключи Loop за 1ч</string>
|
||||||
<string name="suspendloopfor2h">Изключи Loop за 2ч</string>
|
<string name="suspendloopfor2h">Изключи Loop за 2ч</string>
|
||||||
<string name="suspendloopfor3h">Изключи Loop за 3ч</string>
|
<string name="suspendloopfor3h">Изключи Loop за 3ч</string>
|
||||||
|
@ -656,11 +656,11 @@
|
||||||
<string name="startingbolus">Стартира доставка на болус</string>
|
<string name="startingbolus">Стартира доставка на болус</string>
|
||||||
<string name="unsupportedfirmware">Неподдържан фърмуер на помпата</string>
|
<string name="unsupportedfirmware">Неподдържан фърмуер на помпата</string>
|
||||||
<string name="urgent_alarm">Спешна аларма</string>
|
<string name="urgent_alarm">Спешна аларма</string>
|
||||||
<string name="waitingforestimatedbolusend" formatted="false">Очаква края на болуса. Остават %d сек.</string>
|
<string name="waitingforestimatedbolusend">Очаква края на болуса. Остават %1$d сек.</string>
|
||||||
<string name="wear_detailed_delta_summary">Показвай делта с още един десетичен знак</string>
|
<string name="wear_detailed_delta_summary">Показвай делта с още един десетичен знак</string>
|
||||||
<string name="wear_detailed_delta_title">Показвай подробна делта</string>
|
<string name="wear_detailed_delta_title">Показвай подробна делта</string>
|
||||||
<string name="yes">Да</string>
|
<string name="yes">Да</string>
|
||||||
<string name="zerovalueinprofile" formatted="false">Невалиден профил: %s</string>
|
<string name="zerovalueinprofile">Невалиден профил: %1$s</string>
|
||||||
<string name="shortenergy">En</string>
|
<string name="shortenergy">En</string>
|
||||||
<string name="raise_notifications_as_android_notifications">Използвай системни известия за аларми и съобщения</string>
|
<string name="raise_notifications_as_android_notifications">Използвай системни известия за аларми и съобщения</string>
|
||||||
<string name="combo_warning">Внимание</string>
|
<string name="combo_warning">Внимание</string>
|
||||||
|
@ -698,7 +698,7 @@
|
||||||
<string name="combo_programming_bolus">Програмиране на помпа за болус</string>
|
<string name="combo_programming_bolus">Програмиране на помпа за болус</string>
|
||||||
<string name="combo_pump_state_label">Състояние</string>
|
<string name="combo_pump_state_label">Състояние</string>
|
||||||
<string name="combo_pump_activity_label">Активност</string>
|
<string name="combo_pump_activity_label">Активност</string>
|
||||||
<string name="combo_no_pump_connection" formatted="false">Няма връзка от %d мин.</string>
|
<string name="combo_no_pump_connection">Няма връзка от %1$d мин.</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d мин. остават)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d мин. остават)</string>
|
||||||
<string name="combo_pump_state_initializing">Инициализация</string>
|
<string name="combo_pump_state_initializing">Инициализация</string>
|
||||||
<string name="combo_pump_state_suspended_due_to_error">Прекратен поради грешка</string>
|
<string name="combo_pump_state_suspended_due_to_error">Прекратен поради грешка</string>
|
||||||
|
@ -818,8 +818,8 @@
|
||||||
<string name="start_eating_soon_tt">Старт на вр. цел за Eating soon</string>
|
<string name="start_eating_soon_tt">Старт на вр. цел за Eating soon</string>
|
||||||
<string name="temptargetshort">Вр.цел</string>
|
<string name="temptargetshort">Вр.цел</string>
|
||||||
<string name="start_hypo_tt">Старт на вр. цел при хипо</string>
|
<string name="start_hypo_tt">Старт на вр. цел при хипо</string>
|
||||||
<string name="objectivenotstarted" formatted="false">ЦЕЛ %d не е стартирана</string>
|
<string name="objectivenotstarted">ЦЕЛ %1$d не е стартирана</string>
|
||||||
<string name="objectivenotfinished" formatted="false">ЦЕЛ %d не е завършена</string>
|
<string name="objectivenotfinished">ЦЕЛ %1$d не е завършена</string>
|
||||||
<string name="pumpisnottempbasalcapable">Помпата не може да подава временен базал</string>
|
<string name="pumpisnottempbasalcapable">Помпата не може да подава временен базал</string>
|
||||||
<string name="novalidbasalrate">Няма валидна базална прочетена от помпата</string>
|
<string name="novalidbasalrate">Няма валидна базална прочетена от помпата</string>
|
||||||
<string name="closedmodedisabledinpreferences">Closed loop е забранен в настройките</string>
|
<string name="closedmodedisabledinpreferences">Closed loop е забранен в настройките</string>
|
||||||
|
@ -845,8 +845,8 @@
|
||||||
<string name="smbalwaysdisabled">SMB \"винаги\" и \"след въглехидрати\" е забранен, защото е активен източник на КЗ, който не поддържа необходимата филтрация</string>
|
<string name="smbalwaysdisabled">SMB \"винаги\" и \"след въглехидрати\" е забранен, защото е активен източник на КЗ, който не поддържа необходимата филтрация</string>
|
||||||
<string name="smbnotallowedinopenloopmode">SMB не е позволен в режим open loop</string>
|
<string name="smbnotallowedinopenloopmode">SMB не е позволен в режим open loop</string>
|
||||||
<string name="food_short">Храна</string>
|
<string name="food_short">Храна</string>
|
||||||
<string name="waitingfortimesynchronization" formatted="false">Очаква синхронизация (%d sec)</string>
|
<string name="waitingfortimesynchronization">Очаква синхронизация (%1$d sec)</string>
|
||||||
<string name="loopdisconnectedfor" formatted="false">Прекъснат (%d m)</string>
|
<string name="loopdisconnectedfor">Прекъснат (%1$d m)</string>
|
||||||
<string name="automatic_careportal_events">Автоматично careportal събитие</string>
|
<string name="automatic_careportal_events">Автоматично careportal събитие</string>
|
||||||
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Автоматично изпраща смяна на резервоар, сет и аларми на помпата към Nightscout</string>
|
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Автоматично изпраща смяна на резервоар, сет и аларми на помпата към Nightscout</string>
|
||||||
<string name="openapssmb_maxiob_title">Максималният общ IOB OpenAPS не може да бъде повече от [U]</string>
|
<string name="openapssmb_maxiob_title">Максималният общ IOB OpenAPS не може да бъде повече от [U]</string>
|
||||||
|
|
|
@ -226,7 +226,7 @@
|
||||||
<string name="danar_history_basalhours">Hodinové bazály</string>
|
<string name="danar_history_basalhours">Hodinové bazály</string>
|
||||||
<string name="danar_history_bolus">Bolusy</string>
|
<string name="danar_history_bolus">Bolusy</string>
|
||||||
<string name="danar_history_carbohydrates">Sacharidy</string>
|
<string name="danar_history_carbohydrates">Sacharidy</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Připojování %d sec</string>
|
<string name="danar_history_connectingfor">Připojování %1$d sec</string>
|
||||||
<string name="danar_history_dailyinsulin">Denní inzulín</string>
|
<string name="danar_history_dailyinsulin">Denní inzulín</string>
|
||||||
<string name="danar_history_errors">Chyby</string>
|
<string name="danar_history_errors">Chyby</string>
|
||||||
<string name="danar_history_glucose">Glykémie</string>
|
<string name="danar_history_glucose">Glykémie</string>
|
||||||
|
@ -235,7 +235,7 @@
|
||||||
<string name="danar_historyreload">Načíst</string>
|
<string name="danar_historyreload">Načíst</string>
|
||||||
<string name="danar_refill">plnění</string>
|
<string name="danar_refill">plnění</string>
|
||||||
<string name="danar_sbolus">S bolus</string>
|
<string name="danar_sbolus">S bolus</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">Celkem nahráno %d záznamů</string>
|
<string name="danar_totaluploaded">Celkem nahráno %1$d záznamů</string>
|
||||||
<string name="uploading">Nahrávám</string>
|
<string name="uploading">Nahrávám</string>
|
||||||
<string name="pumpbusy">Pumpa je zaneprázdněna</string>
|
<string name="pumpbusy">Pumpa je zaneprázdněna</string>
|
||||||
<string name="wrongpumppassword">Špatné heslo k pumpě</string>
|
<string name="wrongpumppassword">Špatné heslo k pumpě</string>
|
||||||
|
@ -330,18 +330,18 @@
|
||||||
<string name="mdi">Pera</string>
|
<string name="mdi">Pera</string>
|
||||||
<string name="sms_actualbg">Glykémie:</string>
|
<string name="sms_actualbg">Glykémie:</string>
|
||||||
<string name="sms_lastbg">Poslední glykémie:</string>
|
<string name="sms_lastbg">Poslední glykémie:</string>
|
||||||
<string name="minago" formatted="false">před %d min</string>
|
<string name="minago">před %1$d min</string>
|
||||||
<string name="sms_basal">Bazál:</string>
|
<string name="sms_basal">Bazál:</string>
|
||||||
<string name="sms_bolus">Bolus:</string>
|
<string name="sms_bolus">Bolus:</string>
|
||||||
<string name="sms_delta">Rozdíl:</string>
|
<string name="sms_delta">Rozdíl:</string>
|
||||||
<string name="sms_iob">IOB:</string>
|
<string name="sms_iob">IOB:</string>
|
||||||
<string name="sms_minago" formatted="false">před %d min</string>
|
<string name="sms_minago">před %1$d min</string>
|
||||||
<string name="smscommunicator_bolusdelivered">Bolus %.2fU aplikován úspěšně</string>
|
<string name="smscommunicator_bolusdelivered">Bolus %.2fU aplikován úspěšně</string>
|
||||||
<string name="ongoingnotificaction">Průběžné oznámení</string>
|
<string name="ongoingnotificaction">Průběžné oznámení</string>
|
||||||
<string name="old_data">ZASTARALÉ</string>
|
<string name="old_data">ZASTARALÉ</string>
|
||||||
<string name="localprofile">Místní profil</string>
|
<string name="localprofile">Místní profil</string>
|
||||||
<string name="activity">Aktivita</string>
|
<string name="activity">Aktivita</string>
|
||||||
<string name="array_of_elements">Pole %d prvků. Aktuální hodnota:</string>
|
<string name="array_of_elements">Pole %1$d prvků. Aktuální hodnota:</string>
|
||||||
<string name="eatingsoon">Před jídlem</string>
|
<string name="eatingsoon">Před jídlem</string>
|
||||||
<string name="el_lang">Greek</string>
|
<string name="el_lang">Greek</string>
|
||||||
<string name="initializing">Inicializuji ...</string>
|
<string name="initializing">Inicializuji ...</string>
|
||||||
|
@ -464,7 +464,7 @@
|
||||||
<string name="disconnectpumpfor3h">Odpojit pumpu na 3 h</string>
|
<string name="disconnectpumpfor3h">Odpojit pumpu na 3 h</string>
|
||||||
<string name="enableloop">Povolit smyčku</string>
|
<string name="enableloop">Povolit smyčku</string>
|
||||||
<string name="loopsuspended">Smyčka pozastavena</string>
|
<string name="loopsuspended">Smyčka pozastavena</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Pozastaveno (%d min)</string>
|
<string name="loopsuspendedfor">Pozastaveno (%1$d min)</string>
|
||||||
<string name="needwhitelisting">%s potřebuje vypnout optimalizace baterie pro optimální výkon</string>
|
<string name="needwhitelisting">%s potřebuje vypnout optimalizace baterie pro optimální výkon</string>
|
||||||
<string name="resume">Uvolnit</string>
|
<string name="resume">Uvolnit</string>
|
||||||
<string name="suspendloopfor10h">Pozastavit smyčku na 10 h</string>
|
<string name="suspendloopfor10h">Pozastavit smyčku na 10 h</string>
|
||||||
|
@ -482,7 +482,7 @@
|
||||||
<string name="configbuilder_insulin">Inzulín</string>
|
<string name="configbuilder_insulin">Inzulín</string>
|
||||||
<string name="fastactinginsulin">Rychlý inzulín</string>
|
<string name="fastactinginsulin">Rychlý inzulín</string>
|
||||||
<string name="insulin_shortname">INZ</string>
|
<string name="insulin_shortname">INZ</string>
|
||||||
<string name="loopsuperbolusfor">Superbolus (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||||
<string name="treatments_wizard_bgtrend_label">15min trend</string>
|
<string name="treatments_wizard_bgtrend_label">15min trend</string>
|
||||||
<string name="treatments_wizard_cob_label">COB</string>
|
<string name="treatments_wizard_cob_label">COB</string>
|
||||||
<string name="superbolus">Superbolus</string>
|
<string name="superbolus">Superbolus</string>
|
||||||
|
@ -612,7 +612,7 @@
|
||||||
<string name="startingbolus">Spouštím bolus</string>
|
<string name="startingbolus">Spouštím bolus</string>
|
||||||
<string name="ultrafastactinginsulincomment">Fiasp</string>
|
<string name="ultrafastactinginsulincomment">Fiasp</string>
|
||||||
<string name="ultrarapid_oref">Ultra rychlý - Oref</string>
|
<string name="ultrarapid_oref">Ultra rychlý - Oref</string>
|
||||||
<string name="waitingforestimatedbolusend" formatted="false">Čekání na konec bolusu. Zbývá %d sek.</string>
|
<string name="waitingforestimatedbolusend">Čekání na konec bolusu. Zbývá %1$d sek.</string>
|
||||||
<string name="objectives_7_objective">Povolit další funkce pro běžné používání jako SMB</string>
|
<string name="objectives_7_objective">Povolit další funkce pro běžné používání jako SMB</string>
|
||||||
<string name="openapsama_max_daily_safety_multiplier_summary">Výchozí hodnota: 3 Toto je klíčová hodnota zabezpečení. Říká, že maximánlní nastavitelný bazál je trojnásobkem maximálního denního bazálu. Patrně to nebudete muset měnit, případně si přečtete o tématu \"3x max denní; 4x aktuální\"</string>
|
<string name="openapsama_max_daily_safety_multiplier_summary">Výchozí hodnota: 3 Toto je klíčová hodnota zabezpečení. Říká, že maximánlní nastavitelný bazál je trojnásobkem maximálního denního bazálu. Patrně to nebudete muset měnit, případně si přečtete o tématu \"3x max denní; 4x aktuální\"</string>
|
||||||
<string name="openapsama_current_basal_safety_multiplier_summary">Výchozí hodnota: 4 Toto je druhá klíčová hodnota. Říká, že maximální hodnota dočasného bazálu nikdy nebude větší, než čtyřnásobek aktuálního bazálu. Je to proto, aby se lidé nedostali do hodnot nebezpečných bazálu dříve, než pochpí jak OpenAPS pracuje. Znovy vychozí hodnota je 4 a většina lidí ji nidky nebude muset změnit. Pokud nestačí, obvykle je problém někde jinde.</string>
|
<string name="openapsama_current_basal_safety_multiplier_summary">Výchozí hodnota: 4 Toto je druhá klíčová hodnota. Říká, že maximální hodnota dočasného bazálu nikdy nebude větší, než čtyřnásobek aktuálního bazálu. Je to proto, aby se lidé nedostali do hodnot nebezpečných bazálu dříve, než pochpí jak OpenAPS pracuje. Znovy vychozí hodnota je 4 a většina lidí ji nidky nebude muset změnit. Pokud nestačí, obvykle je problém někde jinde.</string>
|
||||||
|
@ -678,7 +678,7 @@
|
||||||
<string name="combo_refresh">Obnovit</string>
|
<string name="combo_refresh">Obnovit</string>
|
||||||
<string name="combo_pump_state_label">Stav</string>
|
<string name="combo_pump_state_label">Stav</string>
|
||||||
<string name="combo_pump_activity_label">Aktivita</string>
|
<string name="combo_pump_activity_label">Aktivita</string>
|
||||||
<string name="combo_no_pump_connection" formatted="false">Žádné spojení %d min</string>
|
<string name="combo_no_pump_connection">Žádné spojení %1$d min</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d min zbývá)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d min zbývá)</string>
|
||||||
<string name="combo_pump_state_initializing">Inicializace</string>
|
<string name="combo_pump_state_initializing">Inicializace</string>
|
||||||
<string name="combo_pump_state_suspended_due_to_error">Vypnuto díky chybě</string>
|
<string name="combo_pump_state_suspended_due_to_error">Vypnuto díky chybě</string>
|
||||||
|
@ -857,9 +857,9 @@
|
||||||
<string name="hypo_target">Cílová glykémie při hypoglykémii</string>
|
<string name="hypo_target">Cílová glykémie při hypoglykémii</string>
|
||||||
<string name="shortminute">m</string>
|
<string name="shortminute">m</string>
|
||||||
<string name="shorthour">h</string>
|
<string name="shorthour">h</string>
|
||||||
<string name="objectivenotstarted">Výukový cíl %d nespuštěn</string>
|
<string name="objectivenotstarted">Výukový cíl %1$d nespuštěn</string>
|
||||||
<string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string>
|
<string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string>
|
||||||
<string name="objectivenotfinished">Výukový cíl %d nedokončen</string>
|
<string name="objectivenotfinished">Výukový cíl %1$d nedokončen</string>
|
||||||
<string name="pumpisnottempbasalcapable">Pumpa nepodporuje dočasné bazály</string>
|
<string name="pumpisnottempbasalcapable">Pumpa nepodporuje dočasné bazály</string>
|
||||||
<string name="novalidbasalrate">Z pumpy nepřečten žádný platný bazál</string>
|
<string name="novalidbasalrate">Z pumpy nepřečten žádný platný bazál</string>
|
||||||
<string name="closedmodedisabledinpreferences">Uzavřená smyčka zakázána v nastavení</string>
|
<string name="closedmodedisabledinpreferences">Uzavřená smyčka zakázána v nastavení</string>
|
||||||
|
@ -887,8 +887,8 @@
|
||||||
<string name="smbnotallowedinopenloopmode">SBM není povoleno v otevřené smyčce</string>
|
<string name="smbnotallowedinopenloopmode">SBM není povoleno v otevřené smyčce</string>
|
||||||
<string name="food_short">Jídlo</string>
|
<string name="food_short">Jídlo</string>
|
||||||
<string name="reset">reset</string>
|
<string name="reset">reset</string>
|
||||||
<string name="waitingfortimesynchronization">Čekání na synchronizaci času (%d s)</string>
|
<string name="waitingfortimesynchronization">Čekání na synchronizaci času (%1$d s)</string>
|
||||||
<string name="loopdisconnectedfor">Odpojeno (%d m)</string>
|
<string name="loopdisconnectedfor">Odpojeno (%1$d m)</string>
|
||||||
<string name="automatic_careportal_events">Automatické vkládání péče</string>
|
<string name="automatic_careportal_events">Automatické vkládání péče</string>
|
||||||
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automaticky vloží výměnu inzulínu, setu, baterie a alarmů pumpy do NS</string>
|
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automaticky vloží výměnu inzulínu, setu, baterie a alarmů pumpy do NS</string>
|
||||||
<string name="openapssmb_maxiob_title">Maximální celkové IOB, které OpenAPS nemůže překročit [U]</string>
|
<string name="openapssmb_maxiob_title">Maximální celkové IOB, které OpenAPS nemůže překročit [U]</string>
|
||||||
|
|
|
@ -272,7 +272,7 @@
|
||||||
<string name="button2">Button 2</string>
|
<string name="button2">Button 2</string>
|
||||||
<string name="button3">Button 3</string>
|
<string name="button3">Button 3</string>
|
||||||
<string name="configbuilder">Konfiguration</string>
|
<string name="configbuilder">Konfiguration</string>
|
||||||
<string name="minago">vor %d min</string>
|
<string name="minago">vor %1$d min</string>
|
||||||
<string name="actions_shortname">AKT</string>
|
<string name="actions_shortname">AKT</string>
|
||||||
<string name="wear_shortname">WEAR</string>
|
<string name="wear_shortname">WEAR</string>
|
||||||
<string name="virtualpump_shortname">VP</string>
|
<string name="virtualpump_shortname">VP</string>
|
||||||
|
@ -356,7 +356,7 @@
|
||||||
<string name="virtualpump_uploadstatus_title">Status zu Nightscout hochladen</string>
|
<string name="virtualpump_uploadstatus_title">Status zu Nightscout hochladen</string>
|
||||||
<string name="superbolus">Superbolus</string>
|
<string name="superbolus">Superbolus</string>
|
||||||
<string name="suspendloopfor10h">Pausiere Loop für 10 h</string>
|
<string name="suspendloopfor10h">Pausiere Loop für 10 h</string>
|
||||||
<string name="array_of_elements">Insgesamt %d Einträge. Aktueller Wert:</string>
|
<string name="array_of_elements">Insgesamt %1$d Einträge. Aktueller Wert:</string>
|
||||||
<string name="careportal_insulinage_label_short">IAGE</string>
|
<string name="careportal_insulinage_label_short">IAGE</string>
|
||||||
<string name="careportal_pbage_label">Batteriealter</string>
|
<string name="careportal_pbage_label">Batteriealter</string>
|
||||||
<string name="careportal_pump_label">PUMP</string>
|
<string name="careportal_pump_label">PUMP</string>
|
||||||
|
@ -715,9 +715,9 @@
|
||||||
<string name="mute">Alarm stoppen</string>
|
<string name="mute">Alarm stoppen</string>
|
||||||
<string name="bolusstopped">Bolus gestoppt</string>
|
<string name="bolusstopped">Bolus gestoppt</string>
|
||||||
<string name="bolusstopping">Bolus wird gestoppt</string>
|
<string name="bolusstopping">Bolus wird gestoppt</string>
|
||||||
<string formatted="false" name="basalprofilenotaligned">Basalraten beginnen nicht zur vollen Stunde: %s</string>
|
<string name="basalprofilenotaligned">Basalraten beginnen nicht zur vollen Stunde: %1$s</string>
|
||||||
<string formatted="false" name="zerovalueinprofile">Ungültiges Profil: %s</string>
|
<string name="zerovalueinprofile">Ungültiges Profil: %1$s</string>
|
||||||
<string formatted="false" name="hoursago">vor %.1f h</string>
|
<string name="hoursago">vor %1$.1f h</string>
|
||||||
<string name="combo_high_temp_rejected_due_to_pump_history_changes">Es wurde keine hohe TBR gesetzt, da nach der Berechnung Boluseinträge in der Pumpenhistorik gefunden wurden.</string>
|
<string name="combo_high_temp_rejected_due_to_pump_history_changes">Es wurde keine hohe TBR gesetzt, da nach der Berechnung Boluseinträge in der Pumpenhistorik gefunden wurden.</string>
|
||||||
<string name="combo_check_date">Der letzte Bolus liegt mehr als 24 Stunden zurück oder liegt in der Zukunft. Prüfe bitte das Datum auf der Pumpe.</string>
|
<string name="combo_check_date">Der letzte Bolus liegt mehr als 24 Stunden zurück oder liegt in der Zukunft. Prüfe bitte das Datum auf der Pumpe.</string>
|
||||||
<string name="combo_suspious_bolus_time">Zeit/Datum des abgegebenen Boluses auf der Pumpe erscheint falsch, IOB ist wahrscheinlich nicht korrekt. Bitte prüfe Zeit/Datum der Pumpe.</string>
|
<string name="combo_suspious_bolus_time">Zeit/Datum des abgegebenen Boluses auf der Pumpe erscheint falsch, IOB ist wahrscheinlich nicht korrekt. Bitte prüfe Zeit/Datum der Pumpe.</string>
|
||||||
|
@ -729,7 +729,7 @@
|
||||||
<string name="with">mit</string>
|
<string name="with">mit</string>
|
||||||
<string name="ns_wifi_ssids">Wlan SSID</string>
|
<string name="ns_wifi_ssids">Wlan SSID</string>
|
||||||
<string name="week">Woche</string>
|
<string name="week">Woche</string>
|
||||||
<string formatted="false" name="waitingfortimesynchronization">Warte auf Zeitsynchronisierung (%d Sek.)</string>
|
<string name="waitingfortimesynchronization">Warte auf Zeitsynchronisierung (%1$d Sek.)</string>
|
||||||
<string name="insight_waiting_for_code">Warte auf Code-Bestätigung</string>
|
<string name="insight_waiting_for_code">Warte auf Code-Bestätigung</string>
|
||||||
<string name="ns_wifionly">Benutze nur WLAN Verbindung</string>
|
<string name="ns_wifionly">Benutze nur WLAN Verbindung</string>
|
||||||
<string name="enablesmb_summary">Benutze Super Micro Bolus anstelle von temporären Basalraten, um eine schnellere Wirkung zu erreichen.</string>
|
<string name="enablesmb_summary">Benutze Super Micro Bolus anstelle von temporären Basalraten, um eine schnellere Wirkung zu erreichen.</string>
|
||||||
|
@ -784,8 +784,8 @@
|
||||||
<string name="firstcarbsincrement">Erste KH-Erhöhung</string>
|
<string name="firstcarbsincrement">Erste KH-Erhöhung</string>
|
||||||
<string name="ns_chargingonly">Nur wenn geladen wird</string>
|
<string name="ns_chargingonly">Nur wenn geladen wird</string>
|
||||||
<string name="connectionsettings_title">Verbindungs-Einstellungen</string>
|
<string name="connectionsettings_title">Verbindungs-Einstellungen</string>
|
||||||
<string formatted="false" name="objectivenotstarted">Zielsetzung %d nicht gestartet.</string>
|
<string name="objectivenotstarted">Zielsetzung %1$d nicht gestartet.</string>
|
||||||
<string formatted="false" name="objectivenotfinished">Zielsetzung %d nicht abgeschlossen.</string>
|
<string name="objectivenotfinished">Zielsetzung %1$d nicht abgeschlossen.</string>
|
||||||
<string name="do_not_bolus_record_only">Bolus nur erfassen</string>
|
<string name="do_not_bolus_record_only">Bolus nur erfassen</string>
|
||||||
<string name="bolusrecordedonly">Bolus wird nur erfasst.</string>
|
<string name="bolusrecordedonly">Bolus wird nur erfasst.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -244,7 +244,7 @@
|
||||||
<string name="danar_glucose">γλυκόζη</string>
|
<string name="danar_glucose">γλυκόζη</string>
|
||||||
<string name="danar_carbohydrate">υδατάνθρακες</string>
|
<string name="danar_carbohydrate">υδατάνθρακες</string>
|
||||||
<string name="danar_alarm">συναγερμός</string>
|
<string name="danar_alarm">συναγερμός</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">"Σύνολο %d εγγραφών φορτώθηκαν "</string>
|
<string name="danar_totaluploaded">"Σύνολο %1$d εγγραφών φορτώθηκαν "</string>
|
||||||
<string name="danar_sbolus">S bolus</string>
|
<string name="danar_sbolus">S bolus</string>
|
||||||
<string name="danar_history_alarm">Συναγερμοί</string>
|
<string name="danar_history_alarm">Συναγερμοί</string>
|
||||||
<string name="danar_history_basalhours">Ώρες Βασικού</string>
|
<string name="danar_history_basalhours">Ώρες Βασικού</string>
|
||||||
|
@ -255,7 +255,7 @@
|
||||||
<string name="danar_history_glucose">Γλυκόζη</string>
|
<string name="danar_history_glucose">Γλυκόζη</string>
|
||||||
<string name="danar_history_refill">Ξαναγέμισμα</string>
|
<string name="danar_history_refill">Ξαναγέμισμα</string>
|
||||||
<string name="danar_history_syspend">Κλείσιμο</string>
|
<string name="danar_history_syspend">Κλείσιμο</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Σύνδεση με %d s</string>
|
<string name="danar_history_connectingfor">Σύνδεση με %1$d s</string>
|
||||||
<string name="danar_password_title">Κωδικός αντλίας</string>
|
<string name="danar_password_title">Κωδικός αντλίας</string>
|
||||||
<string name="wrongpumppassword">Λάθος κωδικός αντλίας!</string>
|
<string name="wrongpumppassword">Λάθος κωδικός αντλίας!</string>
|
||||||
<string name="pumpbusy">Αντλία απασχολημένη</string>
|
<string name="pumpbusy">Αντλία απασχολημένη</string>
|
||||||
|
@ -357,7 +357,7 @@
|
||||||
<string name="openapsama">OpenAPS AMA</string>
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
<string name="short_avgdelta">Βραχυπρόθεσμος Μέσος Όρος</string>
|
<string name="short_avgdelta">Βραχυπρόθεσμος Μέσος Όρος</string>
|
||||||
<string name="long_avgdelta">ΜΑκροπρόθεσμος Μέσος Όρος</string>
|
<string name="long_avgdelta">ΜΑκροπρόθεσμος Μέσος Όρος</string>
|
||||||
<string name="array_of_elements" formatted="false">Πίνακας στοιχείων %d.Τρέχουσα Τιμή</string>
|
<string name="array_of_elements">Πίνακας στοιχείων %1$d.Τρέχουσα Τιμή</string>
|
||||||
<string name="openapsma_autosensdata_label">Δεδομένα Autosens</string>
|
<string name="openapsma_autosensdata_label">Δεδομένα Autosens</string>
|
||||||
<string name="openapsma_scriptdebugdata_label">Πληροφορίες συντονισμού</string>
|
<string name="openapsma_scriptdebugdata_label">Πληροφορίες συντονισμού</string>
|
||||||
<string name="openapsama_useautosens">Χρήση τοy AMA autosense</string>
|
<string name="openapsama_useautosens">Χρήση τοy AMA autosense</string>
|
||||||
|
@ -464,8 +464,8 @@
|
||||||
<string name="Glimp">Glimp</string>
|
<string name="Glimp">Glimp</string>
|
||||||
<string name="needwhitelisting" formatted="false">Το %s πρέπει να απενεργοποιήσει τη βελτιστοποίηση της μπαταρίας για βέλτιστη απόδοση</string>
|
<string name="needwhitelisting" formatted="false">Το %s πρέπει να απενεργοποιήσει τη βελτιστοποίηση της μπαταρίας για βέλτιστη απόδοση</string>
|
||||||
<string name="loopsuspended">Κύκλωμα σε παύση</string>
|
<string name="loopsuspended">Κύκλωμα σε παύση</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Παύση (%d m)</string>
|
<string name="loopsuspendedfor">Παύση (%1$d m)</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||||
<string name="suspendloopfor1h">Κύκλωμα σε παύση για 1h</string>
|
<string name="suspendloopfor1h">Κύκλωμα σε παύση για 1h</string>
|
||||||
<string name="suspendloopfor2h">Κύκλωμα σε παύση για 2h</string>
|
<string name="suspendloopfor2h">Κύκλωμα σε παύση για 2h</string>
|
||||||
<string name="suspendloopfor3h">Κύκλωμα σε παύση για 3h</string>
|
<string name="suspendloopfor3h">Κύκλωμα σε παύση για 3h</string>
|
||||||
|
@ -605,7 +605,7 @@
|
||||||
<string name="wearcontrol_title">Έλεγχος από ρολόι</string>
|
<string name="wearcontrol_title">Έλεγχος από ρολόι</string>
|
||||||
<string name="wearcontrol_summary">Ρυθμίστε Στόχους-Προσ. και βάλτε Θεραπείες από το ρολόι</string>
|
<string name="wearcontrol_summary">Ρυθμίστε Στόχους-Προσ. και βάλτε Θεραπείες από το ρολόι</string>
|
||||||
<string name="connectiontimedout">Ο χρόνος σύνδεσης έληξε</string>
|
<string name="connectiontimedout">Ο χρόνος σύνδεσης έληξε</string>
|
||||||
<string name="waitingforestimatedbolusend" formatted="false">Περιμένετε το τέλος του bolus. Απομένουν %d sec</string>
|
<string name="waitingforestimatedbolusend">Περιμένετε το τέλος του bolus. Απομένουν %1$d sec</string>
|
||||||
<string name="processinghistory">Επεξεργασία</string>
|
<string name="processinghistory">Επεξεργασία</string>
|
||||||
<string name="startingbolus">Έναρξη bolus</string>
|
<string name="startingbolus">Έναρξη bolus</string>
|
||||||
<string name="executingrightnow">Η εντολή εκτελείται τώρα</string>
|
<string name="executingrightnow">Η εντολή εκτελείται τώρα</string>
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
<string name="danar_bt_name_title">DanaR dispositivo Bluetooth</string>
|
<string name="danar_bt_name_title">DanaR dispositivo Bluetooth</string>
|
||||||
<string name="ns_sync_use_absolute_title">Usar siempre valor basal absoluto</string>
|
<string name="ns_sync_use_absolute_title">Usar siempre valor basal absoluto</string>
|
||||||
<string name="alert_dialog_storage_permission_text">Por favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importantes para trazar y verificar que el algoritmo funcione correctamente)</string>
|
<string name="alert_dialog_storage_permission_text">Por favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importantes para trazar y verificar que el algoritmo funcione correctamente)</string>
|
||||||
|
<string name="objectives_objective_label_string">Objetivo:</string>
|
||||||
|
<string name="objectives_gate_label_string">Meta:</string>
|
||||||
<string name="objectives_button_start">Inicio</string>
|
<string name="objectives_button_start">Inicio</string>
|
||||||
<string name="objectives_button_verify">Verificar</string>
|
<string name="objectives_button_verify">Verificar</string>
|
||||||
<string name="nsprofileview_units_label">Unidades</string>
|
<string name="nsprofileview_units_label">Unidades</string>
|
||||||
|
@ -69,7 +71,7 @@
|
||||||
<string name="objectives">Objetivos</string>
|
<string name="objectives">Objetivos</string>
|
||||||
<string name="openapsma">OpenAPS MA</string>
|
<string name="openapsma">OpenAPS MA</string>
|
||||||
<string name="overview">Sinopsis</string>
|
<string name="overview">Sinopsis</string>
|
||||||
<string name="nsprofile">Perfil NS</string>
|
<string name="profileviewer">Perfil NS</string>
|
||||||
<string name="simpleprofile">Perfil simple</string>
|
<string name="simpleprofile">Perfil simple</string>
|
||||||
<string name="tempbasal">Basal temporal</string>
|
<string name="tempbasal">Basal temporal</string>
|
||||||
<string name="treatments">Tratamientos</string>
|
<string name="treatments">Tratamientos</string>
|
||||||
|
@ -81,6 +83,7 @@
|
||||||
<string name="configbuilder_aps">APS</string>
|
<string name="configbuilder_aps">APS</string>
|
||||||
<string name="configbuilder_general">General</string>
|
<string name="configbuilder_general">General</string>
|
||||||
<string name="days">días</string>
|
<string name="days">días</string>
|
||||||
|
<string name="objectives_minimalduration">Duración mínima</string>
|
||||||
<string name="constraints">Restricciones</string>
|
<string name="constraints">Restricciones</string>
|
||||||
<string name="loop">Loop</string>
|
<string name="loop">Loop</string>
|
||||||
<string name="configbuilder_loop">Loop</string>
|
<string name="configbuilder_loop">Loop</string>
|
||||||
|
@ -191,6 +194,7 @@
|
||||||
<string name="connected">Conectado</string>
|
<string name="connected">Conectado</string>
|
||||||
<string name="disconnected">Desconectado</string>
|
<string name="disconnected">Desconectado</string>
|
||||||
<string name="danar_pump_settings">Ajustes de la bomba DanaR</string>
|
<string name="danar_pump_settings">Ajustes de la bomba DanaR</string>
|
||||||
|
<string name="nightscout">Nightscout</string>
|
||||||
<string name="end_user_license_agreement">Acuerdo de licencia de usuario final</string>
|
<string name="end_user_license_agreement">Acuerdo de licencia de usuario final</string>
|
||||||
<string name="end_user_license_agreement_text">No deben utilizarse para tomar decisiones médicas. NO HAY GARANTÍA PARA EL PROGRAMA, la extensión permitida por la legislación aplicable. Excepto cuando se indique de otra forma por escrito, los tenedores del copyright y / u otras partes proporcionan el programa \"tal cual\" sin garantía de ningún tipo, ya sea expresa o implícita, incluyendo, pero no limitado a, las garantías implícitas de COMERCIALIZACIÓN E IDONEIDAD PARA UN FIN DETERMINADO . TODO EL RIESGO EN CUANTO A LA CALIDAD Y RENDIMIENTO DEL PROGRAMA ES CON USTED. SI EL PROGRAMA TIENE UN ERROR, asume el coste de cualquier servicio, reparación o corrección.</string>
|
<string name="end_user_license_agreement_text">No deben utilizarse para tomar decisiones médicas. NO HAY GARANTÍA PARA EL PROGRAMA, la extensión permitida por la legislación aplicable. Excepto cuando se indique de otra forma por escrito, los tenedores del copyright y / u otras partes proporcionan el programa \"tal cual\" sin garantía de ningún tipo, ya sea expresa o implícita, incluyendo, pero no limitado a, las garantías implícitas de COMERCIALIZACIÓN E IDONEIDAD PARA UN FIN DETERMINADO . TODO EL RIESGO EN CUANTO A LA CALIDAD Y RENDIMIENTO DEL PROGRAMA ES CON USTED. SI EL PROGRAMA TIENE UN ERROR, asume el coste de cualquier servicio, reparación o corrección.</string>
|
||||||
<string name="end_user_license_agreement_i_understand">Entiendo y acepto</string>
|
<string name="end_user_license_agreement_i_understand">Entiendo y acepto</string>
|
||||||
|
@ -217,7 +221,7 @@
|
||||||
<string name="waitingforpumpresult">Esperando resultado</string>
|
<string name="waitingforpumpresult">Esperando resultado</string>
|
||||||
<string name="smscommunicator_allowednumbers">Números de teléfono permitidos</string>
|
<string name="smscommunicator_allowednumbers">Números de teléfono permitidos</string>
|
||||||
<string name="smscommunicator_allowednumbers_summary">XXXXXXXXXX +; + YYYYYYYYYY</string>
|
<string name="smscommunicator_allowednumbers_summary">XXXXXXXXXX +; + YYYYYYYYYY</string>
|
||||||
<string name="smscommunicator_bolusreplywithcode" >Para entregar bolo %1$.2fU responder con código %2$s</string>
|
<string name="smscommunicator_bolusreplywithcode" formatted="false" >Para entregar bolo %.2fU responder con código %s</string>
|
||||||
<string name="smscommunicator_bolusfailed">Bolo falló</string>
|
<string name="smscommunicator_bolusfailed">Bolo falló</string>
|
||||||
<string name="bolusdelivered" formatted="false">Bolo %.2fU entregado con éxito</string>
|
<string name="bolusdelivered" formatted="false">Bolo %.2fU entregado con éxito</string>
|
||||||
<string name="smscommunicator_bolusdelivered">Bolo %.2fU enviado correctamente</string>
|
<string name="smscommunicator_bolusdelivered">Bolo %.2fU enviado correctamente</string>
|
||||||
|
@ -243,7 +247,7 @@
|
||||||
<string name="danar_glucose">glucosa</string>
|
<string name="danar_glucose">glucosa</string>
|
||||||
<string name="danar_carbohydrate">carbohidratos</string>
|
<string name="danar_carbohydrate">carbohidratos</string>
|
||||||
<string name="danar_alarm">alarma</string>
|
<string name="danar_alarm">alarma</string>
|
||||||
<string formatted="false" name="danar_totaluploaded">Total %d registros subidos</string>
|
<string name="danar_totaluploaded">Total %1$d registros subidos</string>
|
||||||
<string name="danar_sbolus">S bolo</string>
|
<string name="danar_sbolus">S bolo</string>
|
||||||
<string name="danar_history_alarm">alarmas</string>
|
<string name="danar_history_alarm">alarmas</string>
|
||||||
<string name="danar_history_basalhours">Basal Horas</string>
|
<string name="danar_history_basalhours">Basal Horas</string>
|
||||||
|
@ -254,7 +258,7 @@
|
||||||
<string name="danar_history_glucose">Glucosa</string>
|
<string name="danar_history_glucose">Glucosa</string>
|
||||||
<string name="danar_history_refill">Rellenar</string>
|
<string name="danar_history_refill">Rellenar</string>
|
||||||
<string name="danar_history_syspend">Suspender</string>
|
<string name="danar_history_syspend">Suspender</string>
|
||||||
<string formatted="false" name="danar_history_connectingfor">Conexión de %d s</string>
|
<string name="danar_history_connectingfor">Conexión de %1$d s</string>
|
||||||
<string name="danar_password_title">Contraseña de la bomba</string>
|
<string name="danar_password_title">Contraseña de la bomba</string>
|
||||||
<string name="wrongpumppassword">Contraseña de la bomba incorrecta!</string>
|
<string name="wrongpumppassword">Contraseña de la bomba incorrecta!</string>
|
||||||
<string name="pumpbusy">Bomba ocupada</string>
|
<string name="pumpbusy">Bomba ocupada</string>
|
||||||
|
@ -269,7 +273,7 @@
|
||||||
<string name="objectives_0_objective">Configuración de visualización y monitoreo, y el análisis de los basales y ratios</string>
|
<string name="objectives_0_objective">Configuración de visualización y monitoreo, y el análisis de los basales y ratios</string>
|
||||||
<string name="objectives_0_gate">Comprobar que los datos de BG están disponibles en Nightscout, y que los datos de la bomba de insulina se están subiendo</string>
|
<string name="objectives_0_gate">Comprobar que los datos de BG están disponibles en Nightscout, y que los datos de la bomba de insulina se están subiendo</string>
|
||||||
<string name="objectives_1_objective">Empezar con bucle abierto</string>
|
<string name="objectives_1_objective">Empezar con bucle abierto</string>
|
||||||
<string name="objectives_1_gate">Ejecutar en modo de Loop abierto durante unos días, y aceptar manualmente las basales temporales. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
|
<string name="objectives_1_gate">Ejecutar en modo de Loop abierto durante unos días, y aceptar manualmente las basales temporales</string>
|
||||||
<string name="objectives_2_objective">Entender el Loop abierto, incluidas las recomendaciones de basales temporales</string>
|
<string name="objectives_2_objective">Entender el Loop abierto, incluidas las recomendaciones de basales temporales</string>
|
||||||
<string name="objectives_2_gate">Sobre la base de esa experiencia, decidir valores de máximo basal, y ajustar la bomba y preferencias</string>
|
<string name="objectives_2_gate">Sobre la base de esa experiencia, decidir valores de máximo basal, y ajustar la bomba y preferencias</string>
|
||||||
<string name="objectives_3_objective">Iniciar el bucle cerrado con suspensión con baja glucosa</string>
|
<string name="objectives_3_objective">Iniciar el bucle cerrado con suspensión con baja glucosa</string>
|
||||||
|
@ -286,7 +290,7 @@
|
||||||
<string name="smscommunicator_loophasbeenenabled">Loop se ha activado</string>
|
<string name="smscommunicator_loophasbeenenabled">Loop se ha activado</string>
|
||||||
<string name="smscommunicator_loopisdisabled">Loop inactivo</string>
|
<string name="smscommunicator_loopisdisabled">Loop inactivo</string>
|
||||||
<string name="smscommunicator_loopisenabled">loop activo</string>
|
<string name="smscommunicator_loopisenabled">loop activo</string>
|
||||||
<string name="valueoutofrange" formatted="false">Valor %s fuera de limites</string>
|
<string name="valueoutofrange">Valor %1$s fuera de limites</string>
|
||||||
<string name="overview_editquickwizard_buttontext">Botón Texto:</string>
|
<string name="overview_editquickwizard_buttontext">Botón Texto:</string>
|
||||||
<string name="overview_editquickwizard_carbs">Carbs:</string>
|
<string name="overview_editquickwizard_carbs">Carbs:</string>
|
||||||
<string name="overview_editquickwizard_valid">Validar:</string>
|
<string name="overview_editquickwizard_valid">Validar:</string>
|
||||||
|
@ -296,7 +300,7 @@
|
||||||
<string name="quickwizard">Asistente</string>
|
<string name="quickwizard">Asistente</string>
|
||||||
<string name="quickwizardsettings">Asistente configuración</string>
|
<string name="quickwizardsettings">Asistente configuración</string>
|
||||||
<string name="smscommunicator_remotebasalnotallowed">No permitidos ajustes basales remotos</string>
|
<string name="smscommunicator_remotebasalnotallowed">No permitidos ajustes basales remotos</string>
|
||||||
<string name="smscommunicator_basalreplywithcode" >Para iniciar basal %1$.2fU/h responder con código %2$s</string>
|
<string name="smscommunicator_basalreplywithcode">Para iniciar basal %1$.2fU/h responder con código %2$s</string>
|
||||||
<string name="smscommunicator_tempbasalset">Basal temporal %1$.2fU/h para %2$d min iniciada correctamente</string>
|
<string name="smscommunicator_tempbasalset">Basal temporal %1$.2fU/h para %2$d min iniciada correctamente</string>
|
||||||
<string name="smscommunicator_tempbasalfailed">Fallo inicio basal temporal</string>
|
<string name="smscommunicator_tempbasalfailed">Fallo inicio basal temporal</string>
|
||||||
<string name="smscommunicator_basalstopreplywithcode" formatted="false">Para parar basal temporal responder con código %s</string>
|
<string name="smscommunicator_basalstopreplywithcode" formatted="false">Para parar basal temporal responder con código %s</string>
|
||||||
|
@ -330,10 +334,10 @@
|
||||||
<string name="sv_lang">Sueco</string>
|
<string name="sv_lang">Sueco</string>
|
||||||
<string name="openapsma_maxbasal_title">Max U/h para el perfil base</string>
|
<string name="openapsma_maxbasal_title">Max U/h para el perfil base</string>
|
||||||
<string name="openapsma_maxiob_title">"Max IOB basal OpenAPs puede emitir "</string>
|
<string name="openapsma_maxiob_title">"Max IOB basal OpenAPs puede emitir "</string>
|
||||||
<string name="smscommunicator_calibrationreplywithcode">Para enviar calibracion %1$.2f responder con código %2$s</string>
|
<string name="smscommunicator_calibrationreplywithcode" formatted="false">Para enviar calibración %.2f responder con código %s</string>
|
||||||
<string name="bolusrequested" formatted="false">Entregaré %.2fU</string>
|
<string name="bolusrequested" formatted="false">Entregaré %.2fU</string>
|
||||||
<string name="danarprofile_dia_summary">Duración de acitividad de insulina</string>
|
<string name="danarprofile_dia_summary">Duración de acitividad de insulina</string>
|
||||||
<string name="valuelimitedto">%1$.2f limitado a %2$.2f</string>
|
<string name="valuelimitedto" formatted="false">%.2f limitado a %.2f</string>
|
||||||
<string name="smscommunicator_remotecommandnotallowed">no permitido el mando remoto</string>
|
<string name="smscommunicator_remotecommandnotallowed">no permitido el mando remoto</string>
|
||||||
<string name="smscommunicator_suspendreplywithcode">Para cancelar loop por %1$d minutos responde con código %2$s</string>
|
<string name="smscommunicator_suspendreplywithcode">Para cancelar loop por %1$d minutos responde con código %2$s</string>
|
||||||
<string name="primefill">Rellenar/Llenar</string>
|
<string name="primefill">Rellenar/Llenar</string>
|
||||||
|
@ -373,7 +377,7 @@
|
||||||
<string name="openapsama">OpenAPS AMA</string>
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
<string name="short_avgdelta">Delta media corta</string>
|
<string name="short_avgdelta">Delta media corta</string>
|
||||||
<string name="long_avgdelta">Delta media larga</string>
|
<string name="long_avgdelta">Delta media larga</string>
|
||||||
<string name="array_of_elements">Matriz de %d elementos. Valor actual:</string>
|
<string name="array_of_elements">Matriz de %1$d elementos. Valor actual:</string>
|
||||||
<string name="openapsma_autosensdata_label">Datos Autosens</string>
|
<string name="openapsma_autosensdata_label">Datos Autosens</string>
|
||||||
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
||||||
<string name="openapsama_useautosens">Usar característica AMA autosens</string>
|
<string name="openapsama_useautosens">Usar característica AMA autosens</string>
|
||||||
|
@ -416,13 +420,13 @@
|
||||||
<string name="always_use_shortavg">Usa siempre delta media corto en vez de delta simple</string>
|
<string name="always_use_shortavg">Usa siempre delta media corto en vez de delta simple</string>
|
||||||
<string name="always_use_shortavg_summary">Recomendado si los datos de origen no filtrados como xDrip son inestables.</string>
|
<string name="always_use_shortavg_summary">Recomendado si los datos de origen no filtrados como xDrip son inestables.</string>
|
||||||
<string name="advancedsettings_title">Ajustes avancados</string>
|
<string name="advancedsettings_title">Ajustes avancados</string>
|
||||||
<string name="danar_model">Modelo: %1$02X Protocolo: %2$02X Codigo: %3$02X</string>
|
<string name="danar_model" formatted="false">Modelo: %02X Protocolo: %02X Codigo: %02X</string>
|
||||||
<string name="profile">Perfiles</string>
|
<string name="profile">Perfiles</string>
|
||||||
<string name="openapsama_max_daily_safety_multiplier_summary">"Valor por defecte: 3 Esto es valor de seguridad establecido pos OpenAPS. Limita tu base al máximo de x3 de tu base máxima. No necesitas cambiar esto, pero debes tener en cuenta, que esto se esta discutiento sobre „3 x max diario; 4x actual“ pro razones de seguridad. "</string>
|
<string name="openapsama_max_daily_safety_multiplier_summary">"Valor por defecte: 3 Esto es valor de seguridad establecido pos OpenAPS. Limita tu base al máximo de x3 de tu base máxima. No necesitas cambiar esto, pero debes tener en cuenta, que esto se esta discutiento sobre „3 x max diario; 4x actual“ pro razones de seguridad. "</string>
|
||||||
<string name="openapsama_current_basal_safety_multiplier_summary">"Ajuste pro defecto: 4 Esto es la otra mitad de los ajustes de seguridad de OpenAPS y la otra mitad de \"3x max diario, 4x actual\". Esto significa, que tu base no puede ser mas alta que el numero que multiplica tu base. Esto es para evitar que las personas se encuentren en situaciones peligrosas por aumentar mucho la base sin entender el algoritmo del sistema. El ajuste por defecto es x4. La mayoría de las personas nunca tendra que cambiar estos ajustes, si no debe modificar otros ajustes en la terapia. "</string>
|
<string name="openapsama_current_basal_safety_multiplier_summary">"Ajuste pro defecto: 4 Esto es la otra mitad de los ajustes de seguridad de OpenAPS y la otra mitad de \"3x max diario, 4x actual\". Esto significa, que tu base no puede ser mas alta que el numero que multiplica tu base. Esto es para evitar que las personas se encuentren en situaciones peligrosas por aumentar mucho la base sin entender el algoritmo del sistema. El ajuste por defecto es x4. La mayoría de las personas nunca tendra que cambiar estos ajustes, si no debe modificar otros ajustes en la terapia. "</string>
|
||||||
<string name="openapsama_autosens_max_summary">"Ajuste por defecto: 1.2\nEsto es un multilicador para autosens (y pronto autotune) para poner un 20% limite máximo a la cota de autosens ratio, la que determina cuantos ajustes autosens puede hacer a la base, a cuanto puede ajustar ISF y a cuanto puede bajar el objective de glucosa. "</string>
|
<string name="openapsama_autosens_max_summary">"Ajuste por defecto: 1.2\nEsto es un multilicador para autosens (y pronto autotune) para poner un 20% limite máximo a la cota de autosens ratio, la que determina cuantos ajustes autosens puede hacer a la base, a cuanto puede ajustar ISF y a cuanto puede bajar el objective de glucosa. "</string>
|
||||||
<string name="openapsama_autosens_min_summary">Ajuste pro defecto: 0.7\nEl otro lade de limitaciones de seguridad de autosens, limitando a cuanto puede bajar la base y a cuanto puede subir ISF y BG objectivos.</string>
|
<string name="openapsama_autosens_min_summary">Ajuste pro defecto: 0.7\nEl otro lade de limitaciones de seguridad de autosens, limitando a cuanto puede bajar la base y a cuanto puede subir ISF y BG objectivos.</string>
|
||||||
<string name="openapsama_autosens_adjusttargets_summary">Ajuste por defecto: true\nEsto se usa para permitir autosens a ajustar objectivos BG ademas de ISF y bases.</string>
|
<string name="openapsama_autosens_adjusttargets_summary">Ajuste por defecto: true\nEsto se usa para permitir autosens a ajustar objectivos BG además de ISF y bases.</string>
|
||||||
<string name="openapsama_bolussnooze_dia_divisor_summary">Ajuste por defecto: 2 \nDormir bolo es iniciado después de proveder un bolo para comida, así el loop no interactuará con low temps cuando acabas de comer. El ajuste pro defecto es 2; quiere decir con el DIA de 3 h el bolo será dormido por fases por 1.5 h (3DIA/2).</string>
|
<string name="openapsama_bolussnooze_dia_divisor_summary">Ajuste por defecto: 2 \nDormir bolo es iniciado después de proveder un bolo para comida, así el loop no interactuará con low temps cuando acabas de comer. El ajuste pro defecto es 2; quiere decir con el DIA de 3 h el bolo será dormido por fases por 1.5 h (3DIA/2).</string>
|
||||||
<string name="openapsama_min_5m_carbimpact_summary">"Ajustes pro defecto: 3.0\nEsto es un ajuste pro defecto para la absorción de carbohidratos pro 5 minutos. Por defecto se espera 3mg/dl/5min. Esto afecta la velocidad de reducción de COB y cuanta absorción se usa para calcular el BG futuro previsto, si la glucosa diminua mas de lo previsto o aumenta mas de lo previsto. "</string>
|
<string name="openapsama_min_5m_carbimpact_summary">"Ajustes pro defecto: 3.0\nEsto es un ajuste pro defecto para la absorción de carbohidratos pro 5 minutos. Por defecto se espera 3mg/dl/5min. Esto afecta la velocidad de reducción de COB y cuanta absorción se usa para calcular el BG futuro previsto, si la glucosa diminua mas de lo previsto o aumenta mas de lo previsto. "</string>
|
||||||
<string name="openapsama_link_to_preferncejson_doc_txt">"Atención!\nNormalment no tienes que editar los valores a continuación. Por favor PINCHA AQUI y LEE el texto y PROCURA ENTENDER antes de cambiar alguno de los valores. "</string>
|
<string name="openapsama_link_to_preferncejson_doc_txt">"Atención!\nNormalment no tienes que editar los valores a continuación. Por favor PINCHA AQUI y LEE el texto y PROCURA ENTENDER antes de cambiar alguno de los valores. "</string>
|
||||||
|
@ -431,6 +435,7 @@
|
||||||
<string name="copied_to_clipboard">Copiado al clipboard</string>
|
<string name="copied_to_clipboard">Copiado al clipboard</string>
|
||||||
<string name="nav_show_logcat">mostrar log</string>
|
<string name="nav_show_logcat">mostrar log</string>
|
||||||
<string name="overview_calibration">Calibración</string>
|
<string name="overview_calibration">Calibración</string>
|
||||||
|
<string name="overview_calibration_bg_label">Calibración</string>
|
||||||
<string name="send_calibration" formatted="false">Mandar calibración %.1f a xDrip?</string>
|
<string name="send_calibration" formatted="false">Mandar calibración %.1f a xDrip?</string>
|
||||||
<string name="xdripnotinstalled">xDrip+ no instalado</string>
|
<string name="xdripnotinstalled">xDrip+ no instalado</string>
|
||||||
<string name="calibrationsent">Calibración mandada a xDrip</string>
|
<string name="calibrationsent">Calibración mandada a xDrip</string>
|
||||||
|
@ -482,10 +487,12 @@
|
||||||
<string name="adult">Adulto</string>
|
<string name="adult">Adulto</string>
|
||||||
<string name="patientage_summary">Por favor elige edad del paciente para emplear limites de seguridad</string>
|
<string name="patientage_summary">Por favor elige edad del paciente para emplear limites de seguridad</string>
|
||||||
<string name="Glimp">Glimp</string>
|
<string name="Glimp">Glimp</string>
|
||||||
<string name="needwhitelisting" formatted="false">%s necesita optimización de bateria whitelisting para funcionar bien</string>
|
<string name="batteryoptimalizationerror">Aparato parece no soportar optimización de bateria whitelisting!</string>
|
||||||
|
<string name="pleaseallowpermission">Por favor conceda permiso</string>
|
||||||
|
<string name="needwhitelisting">%1$s necesita optimización de bateria whitelisting para funcionar bien</string>
|
||||||
<string name="loopsuspended">Loop desactivado</string>
|
<string name="loopsuspended">Loop desactivado</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">desactivado (%d m)</string>
|
<string name="loopsuspendedfor">desactivado (%1$d m)</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||||
<string name="suspendloopfor1h">Desactivar loop por 1h</string>
|
<string name="suspendloopfor1h">Desactivar loop por 1h</string>
|
||||||
<string name="suspendloopfor2h">Desactivar loop por 2h</string>
|
<string name="suspendloopfor2h">Desactivar loop por 2h</string>
|
||||||
<string name="suspendloopfor3h">Desactivar loop por 3h</string>
|
<string name="suspendloopfor3h">Desactivar loop por 3h</string>
|
||||||
|
@ -510,6 +517,7 @@
|
||||||
<string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string>
|
<string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string>
|
||||||
<string name="ultrafastactinginsulincomment">Fiasp</string>
|
<string name="ultrafastactinginsulincomment">Fiasp</string>
|
||||||
<string name="insulin_shortname">INS</string>
|
<string name="insulin_shortname">INS</string>
|
||||||
|
<string name="fastactinginsulinprolonged">Insulina acción rápida prolongada</string>
|
||||||
<string name="enablesuperbolus">activar superbolo en wizard</string>
|
<string name="enablesuperbolus">activar superbolo en wizard</string>
|
||||||
<string name="enablesuperbolus_summary">Activar función superbolo en wizard. No lo actives hasta que hayas aprendido lo que realmente hace. PUEDE CAUSAR SOBREDOSIS DE INSULINA usandolo sin precaución!</string>
|
<string name="enablesuperbolus_summary">Activar función superbolo en wizard. No lo actives hasta que hayas aprendido lo que realmente hace. PUEDE CAUSAR SOBREDOSIS DE INSULINA usandolo sin precaución!</string>
|
||||||
<string name="iob">IOB</string>
|
<string name="iob">IOB</string>
|
||||||
|
@ -569,6 +577,8 @@
|
||||||
<string name="uploader_short">UPLD</string>
|
<string name="uploader_short">UPLD</string>
|
||||||
<string name="basal_short">BAS</string>
|
<string name="basal_short">BAS</string>
|
||||||
<string name="virtualpump_extendedbolus_label_short">EXT</string>
|
<string name="virtualpump_extendedbolus_label_short">EXT</string>
|
||||||
|
<string name="lock_screen">Bloqueo de pantalla</string>
|
||||||
|
<string name="lock_screen_short">Bloqueo</string>
|
||||||
<string name="sensitivity_warning">Al activar autosens recuerda editar todos carbohidratos comidos. Si no, sensibilidad será calculada incorrectamente !!!</string>
|
<string name="sensitivity_warning">Al activar autosens recuerda editar todos carbohidratos comidos. Si no, sensibilidad será calculada incorrectamente !!!</string>
|
||||||
<string name="sensitivityweightedaverage">Sensitivity WeightedAverage</string>
|
<string name="sensitivityweightedaverage">Sensitivity WeightedAverage</string>
|
||||||
<string name="mdtp_ok">OK</string>
|
<string name="mdtp_ok">OK</string>
|
||||||
|
@ -588,7 +598,7 @@
|
||||||
<string name="free_peak_oref">Free-Peak Oref</string>
|
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||||
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
|
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
|
||||||
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
|
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
|
||||||
<string name="dia_too_short">DIA de %1$f demasiado corto - usando %2$f!</string>
|
<string name="dia_too_short" formatted="false">DIA de %f demasiado corto - usando %f!</string>
|
||||||
<string name="activate_profile">ACTIVAR PERFIL</string>
|
<string name="activate_profile">ACTIVAR PERFIL</string>
|
||||||
<string name="date">Fecha</string>
|
<string name="date">Fecha</string>
|
||||||
<string name="invalid">INVALIDO</string>
|
<string name="invalid">INVALIDO</string>
|
||||||
|
@ -632,7 +642,7 @@
|
||||||
<string name="shortprotein">Pr</string>
|
<string name="shortprotein">Pr</string>
|
||||||
<string name="shortfat">Grasa</string>
|
<string name="shortfat">Grasa</string>
|
||||||
<string name="active"><![CDATA[<Active>]]></string>
|
<string name="active"><![CDATA[<Active>]]></string>
|
||||||
<string name="waitingforestimatedbolusend" formatted="false">Esperando terminar bolo. Faltan %d seg.</string>
|
<string name="waitingforestimatedbolusend">Esperando terminar bolo. Faltan %1$d seg.</string>
|
||||||
<string name="processinghistory">Processando</string>
|
<string name="processinghistory">Processando</string>
|
||||||
<string name="startingbolus">"Iniciando emisión bolo "</string>
|
<string name="startingbolus">"Iniciando emisión bolo "</string>
|
||||||
<string name="executingrightnow">Orden se esta efectuando en este momento</string>
|
<string name="executingrightnow">Orden se esta efectuando en este momento</string>
|
||||||
|
@ -675,27 +685,27 @@
|
||||||
<string name="closedmodeenabled">Modo cerrado activado</string>
|
<string name="closedmodeenabled">Modo cerrado activado</string>
|
||||||
<string name="maxiobset">Máximo IOB puesto correctamente</string>
|
<string name="maxiobset">Máximo IOB puesto correctamente</string>
|
||||||
<string name="hasbgdata">BG adquirible del origen seleccionado</string>
|
<string name="hasbgdata">BG adquirible del origen seleccionado</string>
|
||||||
<string name="basalprofilenotaligned" formatted="false">Valores base no asignados a las horas: %s</string>
|
<string name="basalprofilenotaligned">Valores base no asignados a las horas: %1$s</string>
|
||||||
<string name="zerovalueinprofile" formatted="false">Perfil invalido: %s</string>
|
<string name="zerovalueinprofile">Perfil invalido: %1$s</string>
|
||||||
<string name="combo_programming_bolus">Programando bomba para emitir bolo</string>
|
<string name="combo_programming_bolus">Programando bomba para emitir bolo</string>
|
||||||
<string name="combo_refresh">Actualizar</string>
|
<string name="combo_refresh">Actualizar</string>
|
||||||
<string name="combo_pump_state_label">Estado</string>
|
<string name="combo_pump_state_label">Estado</string>
|
||||||
<string name="combo_pump_activity_label">Actividad</string>
|
<string name="combo_pump_activity_label">Actividad</string>
|
||||||
<string name="combo_no_pump_connection" formatted="false">Ninguna conexión por %d min</string>
|
<string name="combo_no_pump_connection">Ninguna conexión por %1$d min</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d min restan)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d min restan)</string>
|
||||||
<string name="combo_pump_state_suspended_due_to_error">Apagado por error</string>
|
<string name="combo_pump_state_suspended_due_to_error">Apagado por error</string>
|
||||||
<string name="combo_pump_state_suspended_by_user">Apagado por usario</string>
|
<string name="combo_pump_state_suspended_by_user">Apagado por usario</string>
|
||||||
<string name="combo_pump_state_running">Funcionando</string>
|
<string name="combo_pump_state_running">Funcionando</string>
|
||||||
<string name="combo_pump_action_cancelling_tbr">Cancelando TBR</string>
|
<string name="combo_pump_action_cancelling_tbr">Cancelando TBR</string>
|
||||||
<string name="combo_pump_action_setting_tbr">Poniendo TBR (%1$d%% / %2$d min)</string>
|
<string name="combo_pump_action_setting_tbr">Poniendo TBR (%1$d%% / %2$d min)</string>
|
||||||
<string name="combo_pump_action_bolusing" formatted="false">Emitiendo bolo (%.1f U)</string>
|
<string name="combo_pump_action_bolusing">Emitiendo bolo (%1$.1f U)</string>
|
||||||
<string name="combo_pump_action_refreshing">Actualizando</string>
|
<string name="combo_pump_action_refreshing">Actualizando</string>
|
||||||
<string name="combo_pump_unsupported_operation">"Acción no disponible en la bomba "</string>
|
<string name="combo_pump_unsupported_operation">"Acción no disponible en la bomba "</string>
|
||||||
<string name="combo_low_suspend_forced_notification">Uso inseguro: bolo prolongado o multiwave activo. Modo Loop ha sido puesto a baja emisión para solo 6 horas. Solo bolo normal se puede emitir en modo loop.</string>
|
<string name="combo_low_suspend_forced_notification">Uso inseguro: bolo prolongado o multiwave activo. Modo Loop ha sido puesto a baja emisión para solo 6 horas. Solo bolo normal se puede emitir en modo loop.</string>
|
||||||
<string name="combo_force_disabled_notification">"Uso inseguro: la bomba usa base diferente a la primera. El loop ha sido apagado. Elige primero perfil en la bomba y acualiza. "</string>
|
<string name="combo_force_disabled_notification">"Uso inseguro: la bomba usa base diferente a la primera. El loop ha sido apagado. Elige primero perfil en la bomba y acualiza. "</string>
|
||||||
<string name="bolus_frequency_exceeded">Un bolo de mismo valor ha sido dado durante el pasado minuto. Para evitar bolos dobles y asegurarse contra bugs esto no es permitido.</string>
|
<string name="bolus_frequency_exceeded">Un bolo de mismo valor ha sido dado durante el pasado minuto. Para evitar bolos dobles y asegurarse contra bugs esto no es permitido.</string>
|
||||||
<string name="combo_pump_connected_now">Ahora</string>
|
<string name="combo_pump_connected_now">Ahora</string>
|
||||||
<string name="combo_activity_reading_pump_history">Leiendo historia bomba</string>
|
<string name="combo_activity_reading_pump_history">Leyendo historia bomba</string>
|
||||||
<string name="combo_activity_setting_basal_profile">" Activando perfil base "</string>
|
<string name="combo_activity_setting_basal_profile">" Activando perfil base "</string>
|
||||||
<string name="combo_pump_cartridge_low_warrning">"Nivel del deposito bajo "</string>
|
<string name="combo_pump_cartridge_low_warrning">"Nivel del deposito bajo "</string>
|
||||||
<string name="combo_pump_battery_low_warrning">Bateria casi agotada</string>
|
<string name="combo_pump_battery_low_warrning">Bateria casi agotada</string>
|
||||||
|
@ -708,7 +718,9 @@
|
||||||
<string name="combo_warning">Alerta</string>
|
<string name="combo_warning">Alerta</string>
|
||||||
<string name="combo_pump_tbr_cancelled_warrning">TBR cancelada, advertencia acceptada</string>
|
<string name="combo_pump_tbr_cancelled_warrning">TBR cancelada, advertencia acceptada</string>
|
||||||
<string name="combo_error_no_bolus_delivered">Emisión del bolo fallada. Ningún bolo se ha emitido. Para asegurarse, por favor controle la bomba para evitar bolo doble. Para evitar bugs no se reinician bolos automaticamente.</string>
|
<string name="combo_error_no_bolus_delivered">Emisión del bolo fallada. Ningún bolo se ha emitido. Para asegurarse, por favor controle la bomba para evitar bolo doble. Para evitar bugs no se reinician bolos automaticamente.</string>
|
||||||
<string name="combo_error_partial_bolus_delivered">"Solo %1$.2f U del bolo mandado de %2$.2f U ha sido emitido por causa de un error. Por favorn controla la bomba para confirmar y toma acciones apropiadas. "</string>
|
<string name="combo_error_partial_bolus_delivered" formatted="false">"Solo %.2f U del bolo mandado de %.2f U ha sido emitido por causa de un error. Por favorn controla la bomba para confirmar y toma acciones apropiadas. "</string>
|
||||||
|
<string name="combo_error_bolus_verification_failed">"Fallo de emitir bolo y de controlar historical de la bomba.Por favor controla manualmente y crea un record en Careportal si el bolo ha sido emitido. "</string>
|
||||||
|
<string name="combo_error_bolus_recovery_progress">Reestablecido conexión fallada.</string>
|
||||||
<string name="combo_reservoir_level_insufficient_for_bolus">"No hay suficiente insulina en el deposito para emitir bolo. "</string>
|
<string name="combo_reservoir_level_insufficient_for_bolus">"No hay suficiente insulina en el deposito para emitir bolo. "</string>
|
||||||
<string name="extendedbolusdeliveryerror">"Error al emitir bolo prolongado. "</string>
|
<string name="extendedbolusdeliveryerror">"Error al emitir bolo prolongado. "</string>
|
||||||
<string name="pump_unreachable_threshold">Bomba no alcanzable durante [min]</string>
|
<string name="pump_unreachable_threshold">Bomba no alcanzable durante [min]</string>
|
||||||
|
@ -719,7 +731,7 @@
|
||||||
<string name="combo_activity_checking_pump_state">Actualizando estado bomba</string>
|
<string name="combo_activity_checking_pump_state">Actualizando estado bomba</string>
|
||||||
<string name="combo_high_temp_rejected_due_to_pump_history_changes">Rechazando temporal alta ya que el calculo no consideró los cambios recientes en el historial de la bomba</string>
|
<string name="combo_high_temp_rejected_due_to_pump_history_changes">Rechazando temporal alta ya que el calculo no consideró los cambios recientes en el historial de la bomba</string>
|
||||||
<string name="combo_error_updating_treatment_record">El bolus se administró con éxito, pero no se pudo agregar la entrada al tratamiento. Esto puede suceder si se administran dos bolos pequeños del mismo tamaño en los últimos dos minutos. Verifique el historial de la bomba y las entradas de tratamiento y use Careportal para agregar entradas faltantes. Asegúrese de no agregar ninguna entrada para el mismo minuto exacto y la misma cantidad.</string>
|
<string name="combo_error_updating_treatment_record">El bolus se administró con éxito, pero no se pudo agregar la entrada al tratamiento. Esto puede suceder si se administran dos bolos pequeños del mismo tamaño en los últimos dos minutos. Verifique el historial de la bomba y las entradas de tratamiento y use Careportal para agregar entradas faltantes. Asegúrese de no agregar ninguna entrada para el mismo minuto exacto y la misma cantidad.</string>
|
||||||
<string name="combo_bolus_rejected_due_to_pump_history_change">El historial de la bomba ha cambiado después de que se realizó el cálculo del bolo. El bolo no fue entregado. Por favor, vuelva a calcular si aún se necesita un bolo.</string>
|
<string name="combo_bolus_rejected_due_to_pump_history_change">El historial de la bomba ha cambiado después de que se realizó el cálculo del bolo. El bolo no fue entregado. Por favor, vuelva a calcular si aún se necesita un bolo. Si se requiere la misma cantidad de bolo, espere dos minutos ya que los bolos con la misma cantidad se bloquean cuando se solicita con menos de dos minutos entre ellos por seguridad (independientemente de si se administraron o no).</string>
|
||||||
<string name="combo_actvity_reading_basal_profile">Leyendo perfil basal</string>
|
<string name="combo_actvity_reading_basal_profile">Leyendo perfil basal</string>
|
||||||
<string name="start_hypo_tt">Inicio TT Hipo</string>
|
<string name="start_hypo_tt">Inicio TT Hipo</string>
|
||||||
<string name="no_action_selected">Ninguna acción seleccionada, nada sucederá</string>
|
<string name="no_action_selected">Ninguna acción seleccionada, nada sucederá</string>
|
||||||
|
@ -728,10 +740,11 @@
|
||||||
<string name="overview_show_iob">Insulina activa IOB</string>
|
<string name="overview_show_iob">Insulina activa IOB</string>
|
||||||
<string name="overview_show_deviations">Desviaciones</string>
|
<string name="overview_show_deviations">Desviaciones</string>
|
||||||
<string name="overview_show_sensitivity">Sensibilidad</string>
|
<string name="overview_show_sensitivity">Sensibilidad</string>
|
||||||
|
<string name="ns_autobackfill">Autorelleno de lecturas perdidas de BG</string>
|
||||||
<string name="bolusrecordedonly">El Bolo solo será anotado</string>
|
<string name="bolusrecordedonly">El Bolo solo será anotado</string>
|
||||||
<string name="category">Categoría</string>
|
<string name="category">Categoría</string>
|
||||||
<string name="subcategory">Subcategoría</string>
|
<string name="subcategory">Subcategoría</string>
|
||||||
<string name="do_not_bolus_record_only">No administrar Bolo, solo anotar</string>
|
<string name="don_t_bolus_record_only">No administrar Bolo, solo anotar</string>
|
||||||
<string name="insight_min">min</string>
|
<string name="insight_min">min</string>
|
||||||
<string name="temptargetshort">TT</string>
|
<string name="temptargetshort">TT</string>
|
||||||
<string name="start_activity_tt">Inicio TT Actividad</string>
|
<string name="start_activity_tt">Inicio TT Actividad</string>
|
||||||
|
@ -763,7 +776,7 @@
|
||||||
<string name="automatically_connect_when">Conectar automáticamente cuando se abre AndroidAPS, antes de solicitar ningún comando de bomba, para reducir el retraso de la conexión</string>
|
<string name="automatically_connect_when">Conectar automáticamente cuando se abre AndroidAPS, antes de solicitar ningún comando de bomba, para reducir el retraso de la conexión</string>
|
||||||
<string name="statistics">Estadísticas</string>
|
<string name="statistics">Estadísticas</string>
|
||||||
<string name="insight_keep_alive_status">Estado de Mantener-Activo</string>
|
<string name="insight_keep_alive_status">Estado de Mantener-Activo</string>
|
||||||
<string name="insight_keepalive_format_string">%1$ds expira en %2$s</string>
|
<string name="insight_keepalive_format_string">%ds expira en %s</string>
|
||||||
<string name="resistantadult">Adulto resistente a la insulina</string>
|
<string name="resistantadult">Adulto resistente a la insulina</string>
|
||||||
<string name="enablesmbaftercarbs_summary">Habilitar SMB durante 6 h después de Carbohidratos, incluso con 0 COB. Solo posible con fuente BG con buen filtrado de datos como G5</string>
|
<string name="enablesmbaftercarbs_summary">Habilitar SMB durante 6 h después de Carbohidratos, incluso con 0 COB. Solo posible con fuente BG con buen filtrado de datos como G5</string>
|
||||||
<string name="enablesmbalways_summary">Habilitar SMB siempre de forma independiente a los Bolos. Solo posible con fuente BG con buen filtrado de datos como G5</string>
|
<string name="enablesmbalways_summary">Habilitar SMB siempre de forma independiente a los Bolos. Solo posible con fuente BG con buen filtrado de datos como G5</string>
|
||||||
|
@ -791,10 +804,14 @@
|
||||||
<string name="insight_companion_app_not_installed">Companion app parece no instalada!</string>
|
<string name="insight_companion_app_not_installed">Companion app parece no instalada!</string>
|
||||||
<string name="insight_not_connected_to_companion_app">¡La aplicación Companion no parece estar instalada!</string>
|
<string name="insight_not_connected_to_companion_app">¡La aplicación Companion no parece estar instalada!</string>
|
||||||
<string name="insight_stay_always_connected">Permanecer siempre conectado</string>
|
<string name="insight_stay_always_connected">Permanecer siempre conectado</string>
|
||||||
|
<string name="insight_use_real_tbr_cancels">Usar cancelación Basal Temporal (TBR) real</string>
|
||||||
|
<string name="insight_actually_cancel_tbr_summary">Actualmente, cancelar una Basal Temporal TBR (crea una alarma de bomba) en su lugar establecer el 90% durante 1 minuto</string>
|
||||||
<string name="alert_w31">Advertencia W31: Cartucho insulina bajo</string>
|
<string name="alert_w31">Advertencia W31: Cartucho insulina bajo</string>
|
||||||
<string name="alert_w32">Advertencia W32: Bateria baja</string>
|
<string name="alert_w32">Advertencia W32: Bateria baja</string>
|
||||||
<string name="alert_w33">Advertencia W33: Fecha/hora inválida</string>
|
<string name="alert_w33">Advertencia W33: Fecha/hora inválida</string>
|
||||||
<string name="alert_w34">Advertencia W34: Final de garantía</string>
|
<string name="alert_w34">Advertencia W34: Final de garantía</string>
|
||||||
|
<string name="alert_w36">Advertencia W36: Basal Temporal cancelada</string>
|
||||||
|
<string name="alert_w38">Warning W38: Bolo cancelado</string>
|
||||||
<string name="alert_w39">Warning W39: Adevertencia tiempo de prestamo</string>
|
<string name="alert_w39">Warning W39: Adevertencia tiempo de prestamo</string>
|
||||||
<string name="loop_smbsetbypump_label">SMB administrado por bomba</string>
|
<string name="loop_smbsetbypump_label">SMB administrado por bomba</string>
|
||||||
<string name="combo_pump_state_initializing">Inicializando</string>
|
<string name="combo_pump_state_initializing">Inicializando</string>
|
||||||
|
@ -832,14 +849,14 @@
|
||||||
<string name="hypo_target">Objetivo Hipo</string>
|
<string name="hypo_target">Objetivo Hipo</string>
|
||||||
<string name="shortminute">m</string>
|
<string name="shortminute">m</string>
|
||||||
<string name="shorthour">h</string>
|
<string name="shorthour">h</string>
|
||||||
<string name="objectivenotstarted">Objetivo %d no iniciado</string>
|
<string name="objectivenotstarted">Objetivo %1$d no iniciado</string>
|
||||||
<string name="objectivenotfinished">Objetivo %d no finalizado</string>
|
<string name="objectivenotfinished">Objetivo %1$d no finalizado</string>
|
||||||
<string name="pumpisnottempbasalcapable">La bomba no tiene capacidad basal temporal</string>
|
<string name="pumpisnottempbasalcapable">La bomba no tiene capacidad basal temporal</string>
|
||||||
<string name="novalidbasalrate">Tasa Basal no valida en la bomba</string>
|
<string name="novalidbasalrate">Tasa Basal no valida en la bomba</string>
|
||||||
<string name="closedmodedisabledinpreferences">Loop cerrado desabilitado en preferencias</string>
|
<string name="closedmodedisabledinpreferences">Loop cerrado desabilitado en preferencias</string>
|
||||||
<string name="autosensdisabledinpreferences">Autosens desabilitado en preferencias</string>
|
<string name="autosensdisabledinpreferences">Autosens desabilitado en preferencias</string>
|
||||||
<string name="smbdisabledinpreferences">SMB desabilitado en preferencias</string>
|
<string name="smbdisabledinpreferences">SMB desabilitado en preferencias</string>
|
||||||
<string name="limitingbasalratio">limitando max basal rate a %1$.2f U/h debido a %2$s</string>
|
<string name="limitingbasalratio">limitando max basal rate a %.2f U/h debido a %s</string>
|
||||||
<string name="pumplimit">Limite de la bomba</string>
|
<string name="pumplimit">Limite de la bomba</string>
|
||||||
<string name="itmustbepositivevalue">Tiene que ser un valor positivo</string>
|
<string name="itmustbepositivevalue">Tiene que ser un valor positivo</string>
|
||||||
<string name="maxbasalmultiplier">Multiplicador basal máximo</string>
|
<string name="maxbasalmultiplier">Multiplicador basal máximo</string>
|
||||||
|
@ -847,10 +864,10 @@
|
||||||
<string name="smb_frequency_exceeded">Un Bolo entregado en los últimos 3 minutos</string>
|
<string name="smb_frequency_exceeded">Un Bolo entregado en los últimos 3 minutos</string>
|
||||||
<string name="basal_set_correctly">Basal establecida correctamente</string>
|
<string name="basal_set_correctly">Basal establecida correctamente</string>
|
||||||
<string name="limitingpercentrate">Limitando porcentaje máximo de tasa a %1$d%% debido a %2$s</string>
|
<string name="limitingpercentrate">Limitando porcentaje máximo de tasa a %1$d%% debido a %2$s</string>
|
||||||
<string name="limitingbolus">"Limitando el bolo a %1$.1f U debido a %2$s "</string>
|
<string name="limitingbolus">"Limitando el bolo a %.1f U debido a %s "</string>
|
||||||
<string name="limitingmaxiob">Limitando max IOB to %1$.1f U debido a %2$s</string>
|
<string name="limitingmaxiob">Limitando max IOB to %.1f U debido a %s</string>
|
||||||
<string name="limitingcarbs">Limitando carbs to %1$d g debido a %2$s</string>
|
<string name="limitingcarbs">Limitando carbs to %1$d g debido a %2$s</string>
|
||||||
<string name="limitingiob">Limitando IOB to %1$.1f U debido a %2$s</string>
|
<string name="limitingiob">Limitando IOB to %.1f U debido a %s</string>
|
||||||
<string name="maxvalueinpreferences">Valor máximo en preferencias</string>
|
<string name="maxvalueinpreferences">Valor máximo en preferencias</string>
|
||||||
<string name="hardlimit">Limite estricto</string>
|
<string name="hardlimit">Limite estricto</string>
|
||||||
<string name="unsafeusage">uso no seguro</string>
|
<string name="unsafeusage">uso no seguro</string>
|
||||||
|
@ -861,8 +878,8 @@
|
||||||
<string name="smbnotallowedinopenloopmode">"SMB no permitido en modo de Loop abierto "</string>
|
<string name="smbnotallowedinopenloopmode">"SMB no permitido en modo de Loop abierto "</string>
|
||||||
<string name="food_short">Comida</string>
|
<string name="food_short">Comida</string>
|
||||||
<string name="reset">reset</string>
|
<string name="reset">reset</string>
|
||||||
<string name="waitingfortimesynchronization">Esperando para sincronización de tiempo (%d sec)</string>
|
<string name="waitingfortimesynchronization">Esperando para sincronización de tiempo (%1$d sec)</string>
|
||||||
<string name="loopdisconnectedfor">Desconectado (%d m)</string>
|
<string name="loopdisconnectedfor">Desconectado (%1$d m)</string>
|
||||||
<string name="automatic_careportal_events">Eventos Careportal automáticos</string>
|
<string name="automatic_careportal_events">Eventos Careportal automáticos</string>
|
||||||
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">"Subi automáticamente la insulina, la cánula y los cambios de batería y las alarmas de bombeo a Nightscout "</string>
|
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">"Subi automáticamente la insulina, la cánula y los cambios de batería y las alarmas de bombeo a Nightscout "</string>
|
||||||
<string name="openapssmb_maxiob_summary">Este valor se denomina IOB máx. En el contexto de OpenAPS. OpenAPS no agregará más insulina si el IOB actual es mayor que este valor.</string>
|
<string name="openapssmb_maxiob_summary">Este valor se denomina IOB máx. En el contexto de OpenAPS. OpenAPS no agregará más insulina si el IOB actual es mayor que este valor.</string>
|
||||||
|
@ -923,4 +940,133 @@
|
||||||
<string name="wear_display_settings">Mostrar configuración</string>
|
<string name="wear_display_settings">Mostrar configuración</string>
|
||||||
<string name="wear_general_settings">Configuración general</string>
|
<string name="wear_general_settings">Configuración general</string>
|
||||||
<string name="ro_lang">Rumano</string>
|
<string name="ro_lang">Rumano</string>
|
||||||
|
<string name="description_actions">Botones para acceder rápidamente a las funciones comunes</string>
|
||||||
|
<string name="description_careportal">Ingrese entradas de libro de registro avanzadas.</string>
|
||||||
|
<string name="description_config_builder">Utilizado para configurar los plugins activos</string>
|
||||||
|
<string name="description_objectives">Programa de aprendizaje</string>
|
||||||
|
<string name="description_food">Muestra los ajustes preestablecidos de alimentos definidos en Nightscout</string>
|
||||||
|
<string name="description_insulin_rapid">Ajuste de insulina para Humalog y NovoRapid / NovoLog</string>
|
||||||
|
<string name="description_insulin_ultra_rapid">Ajuste de insulina para Fiasp</string>
|
||||||
|
<string name="description_insulin_free_peak">Le permite definir el pico de actividad de la insulina y solo debe ser utilizado por usuarios avanzados</string>
|
||||||
|
<string name="description_loop">Active o desactive la implementación que desencadena el Loop.</string>
|
||||||
|
<string name="description_ns_client">Sincroniza sus datos con Nightscout</string>
|
||||||
|
<string name="description_ma">Estado del algoritmo en 2016</string>
|
||||||
|
<string name="description_ama">Estado del algoritmo en 2017</string>
|
||||||
|
<string name="description_smb">Algoritmo más reciente para usuarios avanzados</string>
|
||||||
|
<string name="description_overview">Muestra el estado actual de su Loop y botones para las acciones más comunes</string>
|
||||||
|
<string name="description_persistent_notification">Muestra una notificación ongoing con una breve descripción de lo que está haciendo su Loop</string>
|
||||||
|
<string name="description_profile_local">Define un perfil que está disponible fuera de línea.</string>
|
||||||
|
<string name="description_profile_nightscout">Proporciona el perfil que ha definido en Nightscout</string>
|
||||||
|
<string name="description_profile_simple">Define un perfil con solo un bloque de tiempo.</string>
|
||||||
|
<string name="description_pump_combo">Integración de la bomba para las bombas Comcu-Chek Combo, requiere tener Ruffy instalado</string>
|
||||||
|
<string name="description_pump_dana_r">Integración de bomba para bombas DANA Diabecare R</string>
|
||||||
|
<string name="description_pump_dana_r_korean">Integración de bomba para bombas domésticas DANA Diabecare R</string>
|
||||||
|
<string name="description_pump_dana_r_v2">Integración de bomba para bombas DANA Diabecare R con firmware actualizado</string>
|
||||||
|
<string name="description_pump_dana_rs">Pump integration for DANA Diabecare RS pumps</string>
|
||||||
|
<string name="description_pump_insight">Integración de la bomba para las bombas Accu-Chek Insight requiere la instalación de SightRemote</string>
|
||||||
|
<string name="description_pump_mdi">Integración de bomba para personas que realizan múltiples inyecciones diarias (MDI) para su terapia de diabetes</string>
|
||||||
|
<string name="description_pump_virtual">Integración de bomba para bombas que aún no tienen ningún controlador (Open Loop)</string>
|
||||||
|
<string name="description_sensitivity_aaps">"La sensibilidad se calcula de la misma manera que Oref0, pero puede especificar un lapso de tiempo para el pasado. La absorción mínima de carbohidratos se calcula a partir del tiempo máximo de absorción de carbohidratos en las preferencias."</string>
|
||||||
|
<string name="description_sensitivity_oref0">La sensibilidad se calcula a partir de datos de 24 horas en el pasado y los carbohidratos (si no se absorben) se cortan después del tiempo especificado en las preferencias.</string>
|
||||||
|
<string name="description_sensitivity_oref1">La sensibilidad se calcula a partir de datos de 8 h en el pasado y los carbohidratos (si no se absorben) se cortan después del tiempo especificado en las preferencias. El complemento también calcula UAM.</string>
|
||||||
|
<string name="description_sensitivity_weighted_average">La sensibilidad se calcula como un promedio ponderado de las desviaciones. Las desviaciones más nuevas tienen un mayor peso. La absorción mínima de carbohidratos se calcula a partir del tiempo máximo de absorción de carbohidratos de las preferencias. Este algoritmo es el más rápido en los siguientes cambios de sensibilidad.</string>
|
||||||
|
<string name="description_source_dexcom_g5">Recibe los valores de BG de la aplicación parcheada Dexcom G5.</string>
|
||||||
|
<string name="description_source_glimp">Recibe los valores de BG de Glimp.</string>
|
||||||
|
<string name="description_source_mm640g">Recibe los valores de BG del 600SeriesAndroidUploader</string>
|
||||||
|
<string name="description_source_ns_client">Descarga los datos de BG de Nightscout</string>
|
||||||
|
<string name="description_source_xdrip">Recibe los valores de BG de xDrip.</string>
|
||||||
|
<string name="description_treatments">Guarda todos los tratamientos que se hicieron</string>
|
||||||
|
<string name="description_wear">Monitorice y controle AndroidAPS con su reloj WearOS.</string>
|
||||||
|
<string name="description_xdrip_status_line">Muestra información sobre tu Loop en tu cara de reloj xDrip.</string>
|
||||||
|
<string name="description_sms_communicator">Control remoto de AndroidAPS utilizando comandos de SMS.</string>
|
||||||
|
<string name="nsprofile">Perfil NS</string>
|
||||||
|
<string name="configbuilder_pump_description">¿Qué bomba te gustaría usar con AndroidAPS?</string>
|
||||||
|
<string name="configbuilder_treatments_description">¿Qué complemento debería usarse para el tratamiento?</string>
|
||||||
|
<string name="configbuilder_profile_description">¿Qué perfil debería usar AndroidAPS?</string>
|
||||||
|
<string name="configbuilder_aps_description">¿Qué algoritmo de APS debería hacer ajustes en la terapia?</string>
|
||||||
|
<string name="configbuilder_general_description">Estos son algunos complementos generales que pueden serle útiles.</string>
|
||||||
|
<string name="configbuilder_constraints_description">¿Qué restricciones se aplican?</string>
|
||||||
|
<string name="configbuilder_loop_description">Use esto para activar la integración de Loop de AndroidAPS.</string>
|
||||||
|
<string name="configbuilder_bgsource_description">¿De dónde debería obtener AndroidAPS sus datos?</string>
|
||||||
|
<string name="pl_lang">Polski</string>
|
||||||
|
<string name="objectives_7_gate">¡Debes leer la wiki y subir a maxIOB para que las SMB funcionen bien! Un buen comienzo es maxIOB = mealbolus promedio + 3 x máximo diario basal</string>
|
||||||
|
<string name="deletefuturetreatments">Eliminar tratamientos en el futuro</string>
|
||||||
|
<string name="configbuilder_insulin_description">¿Qué tipo de insulina estás usando?</string>
|
||||||
|
<string name="configbuilder_sensitivity_description">¿Qué algoritmo de sensibilidad se debe usar?</string>
|
||||||
|
<string name="sensitivityoref1">Sensibilidad Oref1</string>
|
||||||
|
<string name="keep_screen_on_title">Mantener la pantalla encendida</string>
|
||||||
|
<string name="keep_screen_on_summary">Evite que Android apague la pantalla. Consumirá mucha energía cuando no esté enchufado a una toma de corriente.</string>
|
||||||
|
<string name="poctech_upload">Configuración de carga de Poctech</string>
|
||||||
|
<string name="maximumbasalvaluereplaced">Valor basal reemplazado por el valor máximo soportado</string>
|
||||||
|
<string name="do_not_bolus_record_only">No administrar solo anotar</string>
|
||||||
|
<string name="ns_autobackfill_summary">Autorelleno de valores BG omitidos.</string>
|
||||||
|
<string name="next_button">Siguiente</string>
|
||||||
|
<string name="previous_button">Anterior</string>
|
||||||
|
<string name="nav_setupwizard">"Asistente de configuración "</string>
|
||||||
|
<string name="setupwizard_finish">TERMINAR</string>
|
||||||
|
<string name="setupwizard_language_prompt">Elige tu idioma</string>
|
||||||
|
<string name="key_language">idioma</string>
|
||||||
|
<string name="ga_lang">Irish</string>
|
||||||
|
<string name="enable_nsclient">Habilitar NSClient</string>
|
||||||
|
<string name="welcometosetupwizard">Bienvenido al asistente de configuración. Lo guiará a través del proceso de configuración</string>
|
||||||
|
<string name="pumpsetup">Configuración de la bomba</string>
|
||||||
|
<string name="readstatus">Leer estado</string>
|
||||||
|
<string name="adjustprofileinns">Los cambios deben hacerse en NS</string>
|
||||||
|
<string name="exitwizard">Omitir asistente de configuración</string>
|
||||||
|
<string name="setupwizard_loop_description">Presione el botón a continuación para permitir que AndroidAPS sugiera / realice cambios basales</string>
|
||||||
|
<string name="setupwizard_objectives_description">Presione el botón de abajo para habilitar Objetivos. Mire en la pestaña Objetivos, después de terminar este asistente, para que AndroidAPS sea completamente funcional.</string>
|
||||||
|
<string name="enableobjectives">Activar objetivos</string>
|
||||||
|
<string name="apssetup">Configurar el plugin APS</string>
|
||||||
|
<string name="sensitivitysetup">Configurar el plugin de sensibilidad</string>
|
||||||
|
<string name="setupwizard_sensitivity_description">El plugin de sensibilidad se usa para la detección de sensibilidad y el cálculo de COB. Para más información, visite:</string>
|
||||||
|
<string name="nsclientinfotext">NSClient maneja la conexión a Nightscout. Puede omitir esta parte ahora, pero no podrá pasar objetivos hasta que la configure.</string>
|
||||||
|
<string name="diawarning">Recuerde: los nuevos perfiles de insulina requieren DIA al menos 5 h. DIA 5-6h en el nuevo perfil es igual a DIA 3h en los viejos perfiles de insulina.</string>
|
||||||
|
<string name="bgsourcesetup">Configurar fuente BG</string>
|
||||||
|
<string name="setupwizard_profile_description">Por favor seleccione la fuente del perfil. Si el paciente es un niño, debe usar el perfil NS. Si no hay nadie que lo siga en Nightscout, probablemente prefiera el perfil Local. Recuerde que solo está seleccionando el origen del perfil. Para usarlo debes activarlo ejecutando el cambio de Perfil</string>
|
||||||
|
<string name="setupwizard_aps_description">Seleccione uno de los algoritmos disponibles. Se ordenan desde el más antiguo al más nuevo. Algoritmo más nuevo es generalmente más poderoso y más agresivo. Por lo tanto, si eres un looper nuevo, probablemente comiences con AMA y no con el último. No olvide leer la documentación de OpenAPS y configurarla antes de su uso.</string>
|
||||||
|
<string name="startobjective">Comience su primer objetivo</string>
|
||||||
|
<string name="permission">Permisos</string>
|
||||||
|
<string name="askforpermission">Preguntar por permisos</string>
|
||||||
|
<string name="needlocationpermission">La aplicación necesita permiso de ubicación para escanear BT</string>
|
||||||
|
<string name="needstoragepermission">La aplicación necesita permiso de almacenamiento para poder almacenar archivos de registro</string>
|
||||||
|
<string name="request">"Solicitud "</string>
|
||||||
|
<string name="insulinsourcesetup">Configurar el complemento de Insulina</string>
|
||||||
|
<string name="exit">Salir</string>
|
||||||
|
<string name="danar_useroptions">"Opciones de usuario "</string>
|
||||||
|
<string name="danar_timedisplay">Formato de tiempo mostrado</string>
|
||||||
|
<string name="danar_buttonscroll">Botón de desplazamiento</string>
|
||||||
|
<string name="danar_beep">Beep on button press</string>
|
||||||
|
<string name="danar_pumpalarm">Alarma</string>
|
||||||
|
<string name="danar_pumpalarm_sound">Sonido</string>
|
||||||
|
<string name="danar_pumpalarm_vibrate">Vibrar</string>
|
||||||
|
<string name="danar_pumpalarm_both">Ambos</string>
|
||||||
|
<string name="danar_screentimeout">LCD en tiempo [s]</string>
|
||||||
|
<string name="danar_backlight">Luz de fondo a tiempo [h]</string>
|
||||||
|
<string name="danar_glucoseunits">Unidades de glucosa</string>
|
||||||
|
<string name="danar_shutdown">Parada (horas)</string>
|
||||||
|
<string name="danar_lowreservoir">Depósito bajo (Unidades)</string>
|
||||||
|
<string name="danar_saveuseroptions">Guardar las opciones en bomba</string>
|
||||||
|
<string name="option_on">Encendido</string>
|
||||||
|
<string name="option_off">Apagado</string>
|
||||||
|
<string name="open_navigation">Abrir navegación</string>
|
||||||
|
<string name="close_navigation">Cerrar navegación</string>
|
||||||
|
<string name="nav_plugin_preferences">Preferencias del plugin</string>
|
||||||
|
<string name="completed_well_done">Completado, bien hecho!</string>
|
||||||
|
<string name="not_completed_yet">Aún no completado</string>
|
||||||
|
<string name="time_elapsed">Tiempo transcurrido</string>
|
||||||
|
<string name="nth_objective">%1$d. Objetivo</string>
|
||||||
|
<string name="description_source_poctech">Recibe valores de BG de la aplicación Poctech</string>
|
||||||
|
<string name="high_temptarget_raises_sensitivity_title">Objetivos temporales Altos (high TT) aumentan la sensibilidad</string>
|
||||||
|
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[Aumentar la sensibilidad para objetivos temporales >= 100]]></string>
|
||||||
|
<string name="low_temptarget_lowers_sensitivity_title">Objetivos temporales Bajos (low TT) disminuye la sensibilidad</string>
|
||||||
|
<string name="low_temptarget_lowers_sensitivity_summary"><![CDATA[Disminuir la sensibilidad para objetivos temporales >= 100]]></string>
|
||||||
|
<string name="combo_invalid_setup">La configuración de la bomba no válida, verifique la documentación y verifique que el menú Información rápida se llame \"Quick Info\" utilizando el software de configuración 360.</string>
|
||||||
|
<string name="custom">Personalizar</string>
|
||||||
|
<string name="largetimedifftitle">"Gran diferencia de tiempo "</string>
|
||||||
|
<string name="largetimediff">Gran diferencia de tiempo: El tiempo en la bomba está desfasado en más de 1,5 horas. Ajuste la hora manualmente en la bomba y asegúrese de que la lectura del historial de la bomba no cause un comportamiento inesperado. Si es posible, elimine el historial de la bomba antes de cambiar la hora o deshabilite el ciclo cerrado para un DIA después de la última entrada incorrecta del historial, pero como mínimo un DIA a partir de ahora.</string>
|
||||||
|
<string name="storedsettingsfound">Configuraciones almacenadas encontradas</string>
|
||||||
|
<string name="allow_hardware_pump_text">Atención: si activa y conecta una bomba de hardware, AndroidAPS copiará las configuraciones basales del perfil a la bomba, sobrescribiendo la tasa basal existente almacenada en la bomba. Asegúrate de tener la configuración basal correcta en AndroidAPS. Si no está seguro o no desea sobrescribir la configuración básica de su bomba, presione cancelar y repita el cambio a la bomba más adelante.</string>
|
||||||
|
<string name="error_adding_treatment_title">Datos de tratamiento incompletos</string>
|
||||||
|
<string name="error_adding_treatment_message">o se pudo agregar un tratamiento (insulina: %1$.2f, carbs: %2$d, en: %3$s) a los tratamientos. Verifique y añada manualmente un registro según corresponda.</string>
|
||||||
|
<string name="generated_ecarbs_note">ECarbs generados con cantidad: %1$dg, duración: %2$dh, demora: %3$dm</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -243,7 +243,7 @@
|
||||||
<string name="danar_glucose">Glucose</string>
|
<string name="danar_glucose">Glucose</string>
|
||||||
<string name="danar_carbohydrate">Glucides</string>
|
<string name="danar_carbohydrate">Glucides</string>
|
||||||
<string name="danar_alarm">Alarme</string>
|
<string name="danar_alarm">Alarme</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">Total %d des enregistrements téléchargés</string>
|
<string name="danar_totaluploaded">Total %1$d des enregistrements téléchargés</string>
|
||||||
<string name="danar_sbolus">Bolus S</string>
|
<string name="danar_sbolus">Bolus S</string>
|
||||||
<string name="danar_history_alarm">Alarmes</string>
|
<string name="danar_history_alarm">Alarmes</string>
|
||||||
<string name="danar_history_basalhours">Heures Basal</string>
|
<string name="danar_history_basalhours">Heures Basal</string>
|
||||||
|
@ -351,13 +351,13 @@
|
||||||
<string name="MM640g">MM640g</string>
|
<string name="MM640g">MM640g</string>
|
||||||
<string name="ongoingnotificaction">Notification En Cours</string>
|
<string name="ongoingnotificaction">Notification En Cours</string>
|
||||||
<string name="old_data">DONNÉES ANCIENNES</string>
|
<string name="old_data">DONNÉES ANCIENNES</string>
|
||||||
<string name="minago" formatted="false">%d min passées</string>
|
<string name="minago">%1$d min passées</string>
|
||||||
<string name="sms_minago" formatted="false">%dmin passées</string>
|
<string name="sms_minago">%1$dmin passées</string>
|
||||||
<string name="localprofile">Profil Local</string>
|
<string name="localprofile">Profil Local</string>
|
||||||
<string name="openapsama">OpenAPS AMA</string>
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
<string name="short_avgdelta">Courte moyenne delta</string>
|
<string name="short_avgdelta">Courte moyenne delta</string>
|
||||||
<string name="long_avgdelta">Longue moyenne delta</string>
|
<string name="long_avgdelta">Longue moyenne delta</string>
|
||||||
<string name="array_of_elements" formatted="false">Panoplie de %d d\'élements. Valeur réelle</string>
|
<string name="array_of_elements">Panoplie de %1$d d\'élements. Valeur réelle</string>
|
||||||
<string name="openapsma_autosensdata_label">Données autosens</string>
|
<string name="openapsma_autosensdata_label">Données autosens</string>
|
||||||
<string name="openapsma_scriptdebugdata_label">Script de débogage</string>
|
<string name="openapsma_scriptdebugdata_label">Script de débogage</string>
|
||||||
<string name="openapsama_useautosens">Utiliser la fonction AMA autosens</string>
|
<string name="openapsama_useautosens">Utiliser la fonction AMA autosens</string>
|
||||||
|
@ -463,8 +463,8 @@
|
||||||
<string name="Glimp">Glimp</string>
|
<string name="Glimp">Glimp</string>
|
||||||
<string name="needwhitelisting">%s a besoin de la liste blanche de l\’optimisation batterie pour une bonne performance</string>
|
<string name="needwhitelisting">%s a besoin de la liste blanche de l\’optimisation batterie pour une bonne performance</string>
|
||||||
<string name="loopsuspended">Loop suspendu</string>
|
<string name="loopsuspended">Loop suspendu</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Suspendu (%d m)</string>
|
<string name="loopsuspendedfor">Suspendu (%1$d m)</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||||
<string name="suspendloopfor1h">Suspendre Loop pour 1h</string>
|
<string name="suspendloopfor1h">Suspendre Loop pour 1h</string>
|
||||||
<string name="suspendloopfor2h">Suspendre Loop pour 2h</string>
|
<string name="suspendloopfor2h">Suspendre Loop pour 2h</string>
|
||||||
<string name="suspendloopfor3h">Suspendre Loop pour 3h</string>
|
<string name="suspendloopfor3h">Suspendre Loop pour 3h</string>
|
||||||
|
@ -559,7 +559,7 @@
|
||||||
<string name="careportal_activity_label">ACTIVITÉ et FEEDBACK</string>
|
<string name="careportal_activity_label">ACTIVITÉ et FEEDBACK</string>
|
||||||
<string name="careportal_question">Question</string>
|
<string name="careportal_question">Question</string>
|
||||||
<string name="success">Succès</string>
|
<string name="success">Succès</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Se connecter pour %d s</string>
|
<string name="danar_history_connectingfor">Se connecter pour %1$d s</string>
|
||||||
<string name="careportal_pump_label">POMPE</string>
|
<string name="careportal_pump_label">POMPE</string>
|
||||||
<string name="overview_newtempbasal_basalabsolute">"Valeur Basal [U/h] "</string>
|
<string name="overview_newtempbasal_basalabsolute">"Valeur Basal [U/h] "</string>
|
||||||
<string name="careportal_newnstreatment_duration_min_label">Durée [min]</string>
|
<string name="careportal_newnstreatment_duration_min_label">Durée [min]</string>
|
||||||
|
@ -605,7 +605,7 @@
|
||||||
<string name="wearcontrol_summary">Définir les Cibles Temp et entrer les Traitements depuis la montre</string>
|
<string name="wearcontrol_summary">Définir les Cibles Temp et entrer les Traitements depuis la montre</string>
|
||||||
<string name="connectiontimedout">Connexion interrompue</string>
|
<string name="connectiontimedout">Connexion interrompue</string>
|
||||||
<string name="food">Aliments</string>
|
<string name="food">Aliments</string>
|
||||||
<string name="waitingforestimatedbolusend" formatted="false">Attendre la fin du bolus. %d sec. restants</string>
|
<string name="waitingforestimatedbolusend">Attendre la fin du bolus. %1$d sec. restants</string>
|
||||||
<string name="processinghistory">Traitement d\'événement</string>
|
<string name="processinghistory">Traitement d\'événement</string>
|
||||||
<string name="startingbolus">Administration du bolus lancée</string>
|
<string name="startingbolus">Administration du bolus lancée</string>
|
||||||
<string name="executingrightnow">Commande exécutée à l\'instant</string>
|
<string name="executingrightnow">Commande exécutée à l\'instant</string>
|
||||||
|
@ -675,7 +675,7 @@
|
||||||
<string name="combo_refresh">Actualiser</string>
|
<string name="combo_refresh">Actualiser</string>
|
||||||
<string name="combo_pump_state_label">État</string>
|
<string name="combo_pump_state_label">État</string>
|
||||||
<string name="combo_pump_activity_label">Activité</string>
|
<string name="combo_pump_activity_label">Activité</string>
|
||||||
<string name="combo_no_pump_connection" formatted="false">Pas de connexion depuis %d min</string>
|
<string name="combo_no_pump_connection">Pas de connexion depuis %1$d min</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d min restantes)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d min restantes)</string>
|
||||||
<string name="combo_pump_state_suspended_due_to_error">Suspendu pour cause d\'erreur</string>
|
<string name="combo_pump_state_suspended_due_to_error">Suspendu pour cause d\'erreur</string>
|
||||||
<string name="combo_pump_state_suspended_by_user">Suspendu par l\'utilisateur</string>
|
<string name="combo_pump_state_suspended_by_user">Suspendu par l\'utilisateur</string>
|
||||||
|
|
|
@ -116,11 +116,11 @@
|
||||||
<string name="configbuilder_aps">APS</string>
|
<string name="configbuilder_aps">APS</string>
|
||||||
<string name="loop_aps_label">APS</string>
|
<string name="loop_aps_label">APS</string>
|
||||||
<string name="androidaps_start">AndroidAPS thosaigh</string>
|
<string name="androidaps_start">AndroidAPS thosaigh</string>
|
||||||
<string formated="false" name="sms_minago">%dnóim ó shin</string>
|
<string name="sms_minago">%1$dnóim ó shin</string>
|
||||||
<string formated="false" name="minago">%d nóim ó shin</string>
|
<string name="minago">%1$d nóim ó shin</string>
|
||||||
<string formated="false" name="hoursago">%.1fu ó shin</string>
|
<string name="hoursago">%1$.1fu ó shin</string>
|
||||||
<string formated="false" name="pump_basebasalrate">%.2f A/u</string>
|
<string name="pump_basebasalrate">%1$.2f A/u</string>
|
||||||
<string formated="false" name="combo_tbr_remaining">%1$d%% (%2$d nóim fágtha)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d nóim fágtha)</string>
|
||||||
<string name="actions">Gníomhartha</string>
|
<string name="actions">Gníomhartha</string>
|
||||||
<string name="actions_shortname">GNÍ</string>
|
<string name="actions_shortname">GNÍ</string>
|
||||||
<string name="overview_editquickwizardlistactivity_add">Cuir</string>
|
<string name="overview_editquickwizardlistactivity_add">Cuir</string>
|
||||||
|
@ -132,7 +132,7 @@
|
||||||
<string name="treatments_wizard_correction_label">Cear</string>
|
<string name="treatments_wizard_correction_label">Cear</string>
|
||||||
<string name="correctionbous">Cear</string>
|
<string name="correctionbous">Cear</string>
|
||||||
<string name="overview_bolusprogress_delivered">Seachadta</string>
|
<string name="overview_bolusprogress_delivered">Seachadta</string>
|
||||||
<string formated="false" name="bolusdelivering">Seachadadh %.2fA</string>
|
<string name="bolusdelivering">Seachadadh %1$.2fA</string>
|
||||||
<string name="deliver_now">Seachadadh anois</string>
|
<string name="deliver_now">Seachadadh anois</string>
|
||||||
<string name="disconnectpumpfor1h">Dhícheangal Caidéil do 1 u</string>
|
<string name="disconnectpumpfor1h">Dhícheangal Caidéil do 1 u</string>
|
||||||
<string name="disconnectpumpfor2h">Dhícheangal Caidéil do 2 u</string>
|
<string name="disconnectpumpfor2h">Dhícheangal Caidéil do 2 u</string>
|
||||||
|
@ -174,7 +174,7 @@
|
||||||
<string name="configbuilder_treatments">Cóireálacha</string>
|
<string name="configbuilder_treatments">Cóireálacha</string>
|
||||||
<string name="overview_editquickwizard_valid">Bailí:</string>
|
<string name="overview_editquickwizard_valid">Bailí:</string>
|
||||||
<string name="objectives_button_verify">Fhíorú</string>
|
<string name="objectives_button_verify">Fhíorú</string>
|
||||||
<string formated="false" name="loopsuspendedfor">Ar fionraí (%d n)</string>
|
<string name="loopsuspendedfor">Ar fionraí (%1$d n)</string>
|
||||||
<string name="combo_pump_state_suspended_by_user">Ar fionraí ag úsáideoir</string>
|
<string name="combo_pump_state_suspended_by_user">Ar fionraí ag úsáideoir</string>
|
||||||
<string name="objectives_1_objective">Tosaigh ag lúb oscailte</string>
|
<string name="objectives_1_objective">Tosaigh ag lúb oscailte</string>
|
||||||
<string name="status">Stádas:</string>
|
<string name="status">Stádas:</string>
|
||||||
|
@ -189,11 +189,11 @@
|
||||||
<string name="initializing">Tosaithe ...</string>
|
<string name="initializing">Tosaithe ...</string>
|
||||||
<string name="combo_actvity_reading_basal_profile">Léigh próifíl bunaidh</string>
|
<string name="combo_actvity_reading_basal_profile">Léigh próifíl bunaidh</string>
|
||||||
<string name="combo_activity_reading_pump_history">Léigh stair caidéil</string>
|
<string name="combo_activity_reading_pump_history">Léigh stair caidéil</string>
|
||||||
<string formated="false" name="combo_pump_action_setting_tbr">Socrú BRS (%1$d%% / %2$d nóim)</string>
|
<string name="combo_pump_action_setting_tbr">Socrú BRS (%1$d%% / %2$d nóim)</string>
|
||||||
<string name="combo_pump_action_cancelling_tbr">Cealú BRS</string>
|
<string name="combo_pump_action_cancelling_tbr">Cealú BRS</string>
|
||||||
<string name="combo_pump_battery_low_warrning">Is ceallraí Caidéil íseal</string>
|
<string name="combo_pump_battery_low_warrning">Is ceallraí Caidéil íseal</string>
|
||||||
<string name="combo_pump_cartridge_low_warrning">Is leibhéal cartús íseal</string>
|
<string name="combo_pump_cartridge_low_warrning">Is leibhéal cartús íseal</string>
|
||||||
<string formated="false" name="combo_pump_action_bolusing">Ag bólas (%.1f A)</string>
|
<string name="combo_pump_action_bolusing">Ag bólas (%1$.1f A)</string>
|
||||||
<string name="carbs">Carbí</string>
|
<string name="carbs">Carbí</string>
|
||||||
<string name="careportal_newnstreatment_carbs_label">Carbí</string>
|
<string name="careportal_newnstreatment_carbs_label">Carbí</string>
|
||||||
<string name="treatments_newtreatment_carbsamount_label">Carbí</string>
|
<string name="treatments_newtreatment_carbsamount_label">Carbí</string>
|
||||||
|
@ -201,7 +201,7 @@
|
||||||
<string name="overview_editquickwizard_carbs">Carbí:</string>
|
<string name="overview_editquickwizard_carbs">Carbí:</string>
|
||||||
<string name="treatments_carbs_label_string">Carbí:</string>
|
<string name="treatments_carbs_label_string">Carbí:</string>
|
||||||
<string name="careportal_carbsandbolus_label">CARBÍ & BÓLAS</string>
|
<string name="careportal_carbsandbolus_label">CARBÍ & BÓLAS</string>
|
||||||
<string formated="false" name="danar_history_connectingfor">Ag nascadh le %d s</string>
|
<string name="danar_history_connectingfor">Ag nascadh le %1$d s</string>
|
||||||
<string name="comment">Tuairim</string>
|
<string name="comment">Tuairim</string>
|
||||||
<string name="danar_bt_name_title">DanaR Bluetooth gléas</string>
|
<string name="danar_bt_name_title">DanaR Bluetooth gléas</string>
|
||||||
<string name="cs_lang">Seice</string>
|
<string name="cs_lang">Seice</string>
|
||||||
|
@ -244,10 +244,10 @@
|
||||||
<string name="bolus">Bólas</string>
|
<string name="bolus">Bólas</string>
|
||||||
<string name="bolusstopped">Bólas stopadh</string>
|
<string name="bolusstopped">Bólas stopadh</string>
|
||||||
<string name="bolusstopping">Ag stopadh bólas</string>
|
<string name="bolusstopping">Ag stopadh bólas</string>
|
||||||
<string formated="false" name="bolusrequested">Ag dul a sheachadadh %.2fA</string>
|
<string name="bolusrequested">Ag dul a sheachadadh %1$.2fA</string>
|
||||||
<string name="combo_activity_setting_basal_profile">Socrú próifíl bunaidh</string>
|
<string name="combo_activity_setting_basal_profile">Socrú próifíl bunaidh</string>
|
||||||
<string name="combo_activity_checking_for_history_changes">Ag féachaint d\'athruithe stair</string>
|
<string name="combo_activity_checking_for_history_changes">Ag féachaint d\'athruithe stair</string>
|
||||||
<string formated="false" name="combo_no_pump_connection">Níl nasc le haghaidh %d nóim</string>
|
<string name="combo_no_pump_connection">Níl nasc le haghaidh %1$d nóim</string>
|
||||||
<string name="combo_notification_check_time_date">Is nuashonrú gá clog Caidéil</string>
|
<string name="combo_notification_check_time_date">Is nuashonrú gá clog Caidéil</string>
|
||||||
<string name="combo_programming_bolus">Cláir Caidéil bólas</string>
|
<string name="combo_programming_bolus">Cláir Caidéil bólas</string>
|
||||||
<string name="combo_pump_activity_label">Gníomhaíocht</string>
|
<string name="combo_pump_activity_label">Gníomhaíocht</string>
|
||||||
|
|
|
@ -103,7 +103,7 @@
|
||||||
<string name="danar_history_basalhours">Basale oraria</string>
|
<string name="danar_history_basalhours">Basale oraria</string>
|
||||||
<string name="danar_history_bolus">Boli</string>
|
<string name="danar_history_bolus">Boli</string>
|
||||||
<string name="danar_history_carbohydrates">Carboidrati</string>
|
<string name="danar_history_carbohydrates">Carboidrati</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Connessione %d s</string>
|
<string name="danar_history_connectingfor">Connessione %1$d s</string>
|
||||||
<string name="danar_history_dailyinsulin">Insulina Giornaliea</string>
|
<string name="danar_history_dailyinsulin">Insulina Giornaliea</string>
|
||||||
<string name="danar_history_errors">Errore</string>
|
<string name="danar_history_errors">Errore</string>
|
||||||
<string name="danar_history_glucose">Glucosio</string>
|
<string name="danar_history_glucose">Glucosio</string>
|
||||||
|
@ -182,9 +182,9 @@
|
||||||
<string name="loop_aps_label">APS</string>
|
<string name="loop_aps_label">APS</string>
|
||||||
<string name="loop_shortname">Loop</string>
|
<string name="loop_shortname">Loop</string>
|
||||||
<string name="loopdisabled">Loop disabilitato da vincolo</string>
|
<string name="loopdisabled">Loop disabilitato da vincolo</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolo (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolo (%1$d m)</string>
|
||||||
<string name="loopsuspended">Sospensione Loop</string>
|
<string name="loopsuspended">Sospensione Loop</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Sospendi (%d m)</string>
|
<string name="loopsuspendedfor">Sospendi (%1$d m)</string>
|
||||||
<string name="lowbattery">Batteria scarica</string>
|
<string name="lowbattery">Batteria scarica</string>
|
||||||
<string name="manual">Manuale</string>
|
<string name="manual">Manuale</string>
|
||||||
<string name="mdi">MDI</string>
|
<string name="mdi">MDI</string>
|
||||||
|
|
|
@ -249,7 +249,7 @@
|
||||||
<string name="danar_glucose">혈당</string>
|
<string name="danar_glucose">혈당</string>
|
||||||
<string name="danar_carbohydrate">탄수화물</string>
|
<string name="danar_carbohydrate">탄수화물</string>
|
||||||
<string name="danar_alarm">알람</string>
|
<string name="danar_alarm">알람</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">총 %d 기록들이 업로드되었습니다.</string>
|
<string name="danar_totaluploaded">총 %1$d 기록들이 업로드되었습니다.</string>
|
||||||
<string name="danar_sbolus">S bolus</string>
|
<string name="danar_sbolus">S bolus</string>
|
||||||
<string name="danar_history_alarm">알람</string>
|
<string name="danar_history_alarm">알람</string>
|
||||||
<string name="danar_history_basalhours">기초주입 시간</string>
|
<string name="danar_history_basalhours">기초주입 시간</string>
|
||||||
|
@ -260,7 +260,7 @@
|
||||||
<string name="danar_history_glucose">혈당</string>
|
<string name="danar_history_glucose">혈당</string>
|
||||||
<string name="danar_history_refill">교체</string>
|
<string name="danar_history_refill">교체</string>
|
||||||
<string name="danar_history_syspend">중지</string>
|
<string name="danar_history_syspend">중지</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">%d 초 동안 연결중</string>
|
<string name="danar_history_connectingfor">%1$d 초 동안 연결중</string>
|
||||||
<string name="danar_password_title">펌프 비밀번호</string>
|
<string name="danar_password_title">펌프 비밀번호</string>
|
||||||
<string name="wrongpumppassword">펌프 비밀번호가 잘못되었습니다!</string>
|
<string name="wrongpumppassword">펌프 비밀번호가 잘못되었습니다!</string>
|
||||||
<string name="pumpbusy">펌프가 바쁩니다</string>
|
<string name="pumpbusy">펌프가 바쁩니다</string>
|
||||||
|
@ -363,7 +363,7 @@
|
||||||
<string name="openapsama">OpenAPS AMA</string>
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
<string name="short_avgdelta">Short avg. delta</string>
|
<string name="short_avgdelta">Short avg. delta</string>
|
||||||
<string name="long_avgdelta">Long avg. delta</string>
|
<string name="long_avgdelta">Long avg. delta</string>
|
||||||
<string name="array_of_elements" formatted="false">Array of %d elements.\nActual value:</string>
|
<string name="array_of_elements">Array of %1$d elements.\nActual value:</string>
|
||||||
<string name="openapsma_autosensdata_label">Autosens 정보</string>
|
<string name="openapsma_autosensdata_label">Autosens 정보</string>
|
||||||
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
||||||
<string name="openapsama_useautosens">AMA autosens 기능 사용하기</string>
|
<string name="openapsama_useautosens">AMA autosens 기능 사용하기</string>
|
||||||
|
|
|
@ -311,9 +311,9 @@
|
||||||
<string name="ok">Ok</string>
|
<string name="ok">Ok</string>
|
||||||
<string name="danar_stats_basalrate">Basaal</string>
|
<string name="danar_stats_basalrate">Basaal</string>
|
||||||
<string name="loopdisabled">Loop gedeactiveerd door doelen tab</string>
|
<string name="loopdisabled">Loop gedeactiveerd door doelen tab</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||||
<string name="loopsuspended">Loop pauzeren</string>
|
<string name="loopsuspended">Loop pauzeren</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Pauzeer (%d m)</string>
|
<string name="loopsuspendedfor">Pauzeer (%1$d m)</string>
|
||||||
<string name="lowbattery">Batterij bijna leeg</string>
|
<string name="lowbattery">Batterij bijna leeg</string>
|
||||||
<string name="manual">Manueel</string>
|
<string name="manual">Manueel</string>
|
||||||
<string name="mdi">MDI</string>
|
<string name="mdi">MDI</string>
|
||||||
|
@ -383,7 +383,7 @@
|
||||||
<string name="overview_bolusprogress_stoppressed">STOP INGEDRUKT</string>
|
<string name="overview_bolusprogress_stoppressed">STOP INGEDRUKT</string>
|
||||||
<string name="overview_calibration">Kalibratie</string>
|
<string name="overview_calibration">Kalibratie</string>
|
||||||
<string name="danar_stats_olddata_Message">Oude gegevens druk \"VERNIEUW\" a.u.b.</string>
|
<string name="danar_stats_olddata_Message">Oude gegevens druk \"VERNIEUW\" a.u.b.</string>
|
||||||
<string name="minago">%d min geleden</string>
|
<string name="minago">%1$d min geleden</string>
|
||||||
<string name="reason">Berekening</string>
|
<string name="reason">Berekening</string>
|
||||||
<string name="rate">Dosis</string>
|
<string name="rate">Dosis</string>
|
||||||
<string name="duration">Periode</string>
|
<string name="duration">Periode</string>
|
||||||
|
@ -459,7 +459,7 @@
|
||||||
<string name="tempbasals_iobtotal_label_string">Totale IOB:</string>
|
<string name="tempbasals_iobtotal_label_string">Totale IOB:</string>
|
||||||
<string name="ru_lang">русский</string>
|
<string name="ru_lang">русский</string>
|
||||||
<string name="always_use_shortavg">Gebruik altijd kleine gemiddelde verschillen ipv gewone verschillen</string>
|
<string name="always_use_shortavg">Gebruik altijd kleine gemiddelde verschillen ipv gewone verschillen</string>
|
||||||
<string name="array_of_elements">Tabel met %d elementen. Actuele waarde:</string>
|
<string name="array_of_elements">Tabel met %1$d elementen. Actuele waarde:</string>
|
||||||
<string name="overview_quickwizard_item_remove_button">Verwijder</string>
|
<string name="overview_quickwizard_item_remove_button">Verwijder</string>
|
||||||
<string name="overview_quickwizard_item_edit_button">Wijzig</string>
|
<string name="overview_quickwizard_item_edit_button">Wijzig</string>
|
||||||
<string name="overview_shortname">Home</string>
|
<string name="overview_shortname">Home</string>
|
||||||
|
@ -565,8 +565,8 @@
|
||||||
<string name="objectives_5_gate">Gedurende 1 week succesvol closed loop met KH ingave</string>
|
<string name="objectives_5_gate">Gedurende 1 week succesvol closed loop met KH ingave</string>
|
||||||
<string name="careportal_activity_label">ACTIVITIJD & FEEDBACK</string>
|
<string name="careportal_activity_label">ACTIVITIJD & FEEDBACK</string>
|
||||||
<string name="danar_model">Model: %1$02X Protokoll: %2$02X Code: %3$02X</string>
|
<string name="danar_model">Model: %1$02X Protokoll: %2$02X Code: %3$02X</string>
|
||||||
<string name="danar_history_connectingfor">Verbonden gedurende %d s</string>
|
<string name="danar_history_connectingfor">Verbonden gedurende %1$d s</string>
|
||||||
<string name="danar_totaluploaded">Totaal %d gegevens geupload</string>
|
<string name="danar_totaluploaded">Totaal %1$d gegevens geupload</string>
|
||||||
<string name="valuelimitedto">%1$.2f gelimitteerd tot %2$.2f</string>
|
<string name="valuelimitedto">%1$.2f gelimitteerd tot %2$.2f</string>
|
||||||
<string name="smscommunicator_suspendreplywithcode">Om de loop te onderbreken voor %1$d minuten antwoord met de code %2$s</string>
|
<string name="smscommunicator_suspendreplywithcode">Om de loop te onderbreken voor %1$d minuten antwoord met de code %2$s</string>
|
||||||
<string name="smscommunicator_tempbasalset">Tijdelijk basaal %1$.2fE/u voor %2$d minuten succesvol gestart</string>
|
<string name="smscommunicator_tempbasalset">Tijdelijk basaal %1$.2fE/u voor %2$d minuten succesvol gestart</string>
|
||||||
|
@ -640,7 +640,7 @@
|
||||||
<string name="localalertsettings_title">Lokaal gegenereerde waarschuwingen</string>
|
<string name="localalertsettings_title">Lokaal gegenereerde waarschuwingen</string>
|
||||||
<string name="startingbolus">Bolus toediening gestart</string>
|
<string name="startingbolus">Bolus toediening gestart</string>
|
||||||
<string name="wear_detailed_delta_summary">Toon delta met eenextra decimaal punt</string>
|
<string name="wear_detailed_delta_summary">Toon delta met eenextra decimaal punt</string>
|
||||||
<string name="waitingforestimatedbolusend">Wacht op complete bolus toediening Resterend %d sec.</string>
|
<string name="waitingforestimatedbolusend">Wacht op complete bolus toediening Resterend %1$d sec.</string>
|
||||||
<string name="urgent_alarm">Dringend alarm</string>
|
<string name="urgent_alarm">Dringend alarm</string>
|
||||||
<string name="treatments_wizard_tt_label">TT</string>
|
<string name="treatments_wizard_tt_label">TT</string>
|
||||||
<string name="raise_notifications_as_android_notifications">Gebruik systeem notficaties voor waarchuwingen en notificaties</string>
|
<string name="raise_notifications_as_android_notifications">Gebruik systeem notficaties voor waarchuwingen en notificaties</string>
|
||||||
|
@ -675,7 +675,7 @@
|
||||||
<string name="combo_programming_bolus">"Bolus in pomp programmeren "</string>
|
<string name="combo_programming_bolus">"Bolus in pomp programmeren "</string>
|
||||||
<string name="combo_refresh">Vernieuw</string>
|
<string name="combo_refresh">Vernieuw</string>
|
||||||
<string name="combo_pump_state_label">Status</string>
|
<string name="combo_pump_state_label">Status</string>
|
||||||
<string name="combo_no_pump_connection">Geen verbinding gedurende %d minuten</string>
|
<string name="combo_no_pump_connection">Geen verbinding gedurende %1$d minuten</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d min resterend)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d min resterend)</string>
|
||||||
<string name="combo_warning">Waarschuwing</string>
|
<string name="combo_warning">Waarschuwing</string>
|
||||||
<string name="combo_notification_check_time_date">Pomp klok moet bijgesteld worden</string>
|
<string name="combo_notification_check_time_date">Pomp klok moet bijgesteld worden</string>
|
||||||
|
@ -827,7 +827,7 @@
|
||||||
<string name="cgm">CGM</string>
|
<string name="cgm">CGM</string>
|
||||||
<string name="food_short">Voeding</string>
|
<string name="food_short">Voeding</string>
|
||||||
<string name="reset">Reset</string>
|
<string name="reset">Reset</string>
|
||||||
<string name="waitingfortimesynchronization">Wachttijd voor syncronisatie (%d sec)</string>
|
<string name="waitingfortimesynchronization">Wachttijd voor syncronisatie (%1$d sec)</string>
|
||||||
<string name="ago">Voorbij</string>
|
<string name="ago">Voorbij</string>
|
||||||
<string name="with">met</string>
|
<string name="with">met</string>
|
||||||
<string name="insight_active_tbr">Actieve TBR</string>
|
<string name="insight_active_tbr">Actieve TBR</string>
|
||||||
|
@ -848,7 +848,7 @@
|
||||||
<string name="temptargetshort">TT</string>
|
<string name="temptargetshort">TT</string>
|
||||||
<string name="combo_bolus_count">Aantal bolussen</string>
|
<string name="combo_bolus_count">Aantal bolussen</string>
|
||||||
<string name="combo_tbr_count">Aantal TBR</string>
|
<string name="combo_tbr_count">Aantal TBR</string>
|
||||||
<string name="objectivenotstarted">Doel %d niet gestart</string>
|
<string name="objectivenotstarted">Doel %1$d niet gestart</string>
|
||||||
<string name="wear_notifysmb_summary">Toon SMB op horloge zoals gewone bolussen.</string>
|
<string name="wear_notifysmb_summary">Toon SMB op horloge zoals gewone bolussen.</string>
|
||||||
<string name="wear_predictions_summary">Toon de voorspellingen op het horloge</string>
|
<string name="wear_predictions_summary">Toon de voorspellingen op het horloge</string>
|
||||||
<string name="data_choices">Data Keuzes</string>
|
<string name="data_choices">Data Keuzes</string>
|
||||||
|
@ -878,7 +878,7 @@
|
||||||
<string name="start_hypo_tt">Start Hypo TT</string>
|
<string name="start_hypo_tt">Start Hypo TT</string>
|
||||||
<string name="engineering_mode_enabled">Engineering modus is geactiveerd</string>
|
<string name="engineering_mode_enabled">Engineering modus is geactiveerd</string>
|
||||||
<string name="not_eng_mode_or_release">Engineering modus is niet geactiveerd en dit is niet de relaese branche</string>
|
<string name="not_eng_mode_or_release">Engineering modus is niet geactiveerd en dit is niet de relaese branche</string>
|
||||||
<string name="objectivenotfinished" formatted="false">Doel %d niet afgewerkt</string>
|
<string name="objectivenotfinished">Doel %1$d niet afgewerkt</string>
|
||||||
<string name="pumpisnottempbasalcapable">Pomp kan geen tijdelijk basaal aanvaarden</string>
|
<string name="pumpisnottempbasalcapable">Pomp kan geen tijdelijk basaal aanvaarden</string>
|
||||||
<string name="novalidbasalrate">Geen plausibel basale snelheid van pomp kunnen lezen</string>
|
<string name="novalidbasalrate">Geen plausibel basale snelheid van pomp kunnen lezen</string>
|
||||||
<string name="autosensdisabledinpreferences">Autosens gedeactiveerd in de voorkeuren</string>
|
<string name="autosensdisabledinpreferences">Autosens gedeactiveerd in de voorkeuren</string>
|
||||||
|
@ -892,7 +892,7 @@
|
||||||
<string name="limitingpercentrate">Begrezen van max procentuele wijzigen tot %1$d%% want de %2$s</string>
|
<string name="limitingpercentrate">Begrezen van max procentuele wijzigen tot %1$d%% want de %2$s</string>
|
||||||
<string name="smbalwaysdisabled">SMB altijd gedeactiveerd doordat de gekozen BG bron geen optimale filtering toepast</string>
|
<string name="smbalwaysdisabled">SMB altijd gedeactiveerd doordat de gekozen BG bron geen optimale filtering toepast</string>
|
||||||
<string name="smbnotallowedinopenloopmode">SMB niet toegestaan in Open Loop modus</string>
|
<string name="smbnotallowedinopenloopmode">SMB niet toegestaan in Open Loop modus</string>
|
||||||
<string name="loopdisconnectedfor">Niet verbonden (%d m)</string>
|
<string name="loopdisconnectedfor">Niet verbonden (%1$d m)</string>
|
||||||
<string name="hardlimit">max limiet (SC)</string>
|
<string name="hardlimit">max limiet (SC)</string>
|
||||||
<string name="unsafeusage">Onveilig gebruik</string>
|
<string name="unsafeusage">Onveilig gebruik</string>
|
||||||
<string name="closed_loop_disabled_on_dev_branch">Dev cersie actief. Closed loop gedeactiveerd</string>
|
<string name="closed_loop_disabled_on_dev_branch">Dev cersie actief. Closed loop gedeactiveerd</string>
|
||||||
|
|
|
@ -263,7 +263,7 @@
|
||||||
<string name="danar_glucose">glukoza</string>
|
<string name="danar_glucose">glukoza</string>
|
||||||
<string name="danar_carbohydrate">węglowodany</string>
|
<string name="danar_carbohydrate">węglowodany</string>
|
||||||
<string name="danar_alarm">alarm</string>
|
<string name="danar_alarm">alarm</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">Wszystkie %d rekordy załadowane</string>
|
<string name="danar_totaluploaded">Wszystkie %1$d rekordy załadowane</string>
|
||||||
<string name="danar_sbolus">S bolus</string>
|
<string name="danar_sbolus">S bolus</string>
|
||||||
<string name="danar_history_alarm">Alarmy</string>
|
<string name="danar_history_alarm">Alarmy</string>
|
||||||
<string name="danar_history_basalhours">Godziny Bazy</string>
|
<string name="danar_history_basalhours">Godziny Bazy</string>
|
||||||
|
@ -274,7 +274,7 @@
|
||||||
<string name="danar_history_glucose">Glukoza</string>
|
<string name="danar_history_glucose">Glukoza</string>
|
||||||
<string name="danar_history_refill">Napełnij</string>
|
<string name="danar_history_refill">Napełnij</string>
|
||||||
<string name="danar_history_syspend">Wstrzymaj</string>
|
<string name="danar_history_syspend">Wstrzymaj</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Łączę przez %d s</string>
|
<string name="danar_history_connectingfor">Łączę przez %1$d s</string>
|
||||||
<string name="danar_password_title">Hasło pompy</string>
|
<string name="danar_password_title">Hasło pompy</string>
|
||||||
<string name="wrongpumppassword">Błędne hasło pompy!</string>
|
<string name="wrongpumppassword">Błędne hasło pompy!</string>
|
||||||
<string name="pumpbusy">Pompa jest zajęta</string>
|
<string name="pumpbusy">Pompa jest zajęta</string>
|
||||||
|
@ -373,13 +373,13 @@
|
||||||
<string name="MM640g">MM640g</string>
|
<string name="MM640g">MM640g</string>
|
||||||
<string name="ongoingnotificaction">Nadchodzące powiadomienia</string>
|
<string name="ongoingnotificaction">Nadchodzące powiadomienia</string>
|
||||||
<string name="old_data">NIEAKTUALNE DANE</string>
|
<string name="old_data">NIEAKTUALNE DANE</string>
|
||||||
<string name="minago">%d min temu</string>
|
<string name="minago">%1$d min temu</string>
|
||||||
<string name="sms_minago">%dmin temu</string>
|
<string name="sms_minago">%dmin temu</string>
|
||||||
<string name="localprofile">Lokalny Profil</string>
|
<string name="localprofile">Lokalny Profil</string>
|
||||||
<string name="openapsama">OpenAPS AMA</string>
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
<string name="short_avgdelta">Krótka średnia delta</string>
|
<string name="short_avgdelta">Krótka średnia delta</string>
|
||||||
<string name="long_avgdelta">Długa średnia delta</string>
|
<string name="long_avgdelta">Długa średnia delta</string>
|
||||||
<string name="array_of_elements">Lista %d elementów.\nBieżąca wartość:</string>
|
<string name="array_of_elements">Lista %1$d elementów.\nBieżąca wartość:</string>
|
||||||
<string name="openapsma_autosensdata_label">Dane Autosens</string>
|
<string name="openapsma_autosensdata_label">Dane Autosens</string>
|
||||||
<string name="openapsma_scriptdebugdata_label">Debugowanie skryptów</string>
|
<string name="openapsma_scriptdebugdata_label">Debugowanie skryptów</string>
|
||||||
<string name="openapsama_useautosens">Używaj funkcji AMA autosens</string>
|
<string name="openapsama_useautosens">Używaj funkcji AMA autosens</string>
|
||||||
|
@ -496,8 +496,8 @@
|
||||||
<string name="Glimp">Glimp</string>
|
<string name="Glimp">Glimp</string>
|
||||||
<string name="needwhitelisting">%s Potrzebuję wpisu na białąlistę optymalizacji baterii w celu zapewnienia poprawnego działania</string>
|
<string name="needwhitelisting">%s Potrzebuję wpisu na białąlistę optymalizacji baterii w celu zapewnienia poprawnego działania</string>
|
||||||
<string name="loopsuspended">Pętla wstrzymana</string>
|
<string name="loopsuspended">Pętla wstrzymana</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Wstrzymana (%d m)</string>
|
<string name="loopsuspendedfor">Wstrzymana (%1$d m)</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||||
<string name="suspendloopfor1h">Wstrzymaj pętlę na 1h</string>
|
<string name="suspendloopfor1h">Wstrzymaj pętlę na 1h</string>
|
||||||
<string name="suspendloopfor2h">Wstrzymaj pętlę na 2h</string>
|
<string name="suspendloopfor2h">Wstrzymaj pętlę na 2h</string>
|
||||||
<string name="suspendloopfor3h">Wstrzymaj pętlę na 3h</string>
|
<string name="suspendloopfor3h">Wstrzymaj pętlę na 3h</string>
|
||||||
|
@ -656,7 +656,7 @@
|
||||||
<string name="shortprotein">Bi</string>
|
<string name="shortprotein">Bi</string>
|
||||||
<string name="shortfat">Tł</string>
|
<string name="shortfat">Tł</string>
|
||||||
<string name="active"><![CDATA[<Active>]]></string>
|
<string name="active"><![CDATA[<Active>]]></string>
|
||||||
<string name="waitingforestimatedbolusend" formatted="false">Oczekuję na zakończenie bolusa. Pozostało %d sec.</string>
|
<string name="waitingforestimatedbolusend">Oczekuję na zakończenie bolusa. Pozostało %1$d sec.</string>
|
||||||
<string name="processinghistory">Przetwarzanie zdarzenia</string>
|
<string name="processinghistory">Przetwarzanie zdarzenia</string>
|
||||||
<string name="startingbolus">Rozpoczynam podawanie bolusa</string>
|
<string name="startingbolus">Rozpoczynam podawanie bolusa</string>
|
||||||
<string name="executingrightnow">Polecenie jest teraz wykonywane</string>
|
<string name="executingrightnow">Polecenie jest teraz wykonywane</string>
|
||||||
|
@ -707,7 +707,7 @@
|
||||||
<string name="combo_refresh">Odśwież</string>
|
<string name="combo_refresh">Odśwież</string>
|
||||||
<string name="combo_pump_state_label">Stan</string>
|
<string name="combo_pump_state_label">Stan</string>
|
||||||
<string name="combo_pump_activity_label">Aktywność</string>
|
<string name="combo_pump_activity_label">Aktywność</string>
|
||||||
<string name="combo_no_pump_connection">Brak połączenia przez %d min</string>
|
<string name="combo_no_pump_connection">Brak połączenia przez %1$d min</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d min pozostało)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d min pozostało)</string>
|
||||||
<string name="combo_pump_state_initializing">Rozpoczynanie</string>
|
<string name="combo_pump_state_initializing">Rozpoczynanie</string>
|
||||||
<string name="combo_pump_state_suspended_due_to_error">Wstrzymane z powodu błędu</string>
|
<string name="combo_pump_state_suspended_due_to_error">Wstrzymane z powodu błędu</string>
|
||||||
|
@ -850,8 +850,8 @@
|
||||||
<string name="profileswitch_ismissing">Brakuje ZmianyProfilu. Proszę wykonać ZmianęProfilu lub nacisnąć "Aktywuj Profil" w ProfiluLokalnym</string>
|
<string name="profileswitch_ismissing">Brakuje ZmianyProfilu. Proszę wykonać ZmianęProfilu lub nacisnąć "Aktywuj Profil" w ProfiluLokalnym</string>
|
||||||
<string name="combo_bolus_count">Obliczenia Bolusa</string>
|
<string name="combo_bolus_count">Obliczenia Bolusa</string>
|
||||||
<string name="combo_tbr_count">Obliczenia TBR</string>
|
<string name="combo_tbr_count">Obliczenia TBR</string>
|
||||||
<string name="objectivenotstarted" formatted="false">Zadanie %d nie uruchomione</string>
|
<string name="objectivenotstarted">Zadanie %1$d nie uruchomione</string>
|
||||||
<string name="objectivenotfinished" formatted="false">Zadanie %d nie zakończone</string>
|
<string name="objectivenotfinished">Zadanie %1$d nie zakończone</string>
|
||||||
<string name="pumpisnottempbasalcapable">Pompa nie jest zdolna do wykonywania dawek bazowych tymczasowych</string>
|
<string name="pumpisnottempbasalcapable">Pompa nie jest zdolna do wykonywania dawek bazowych tymczasowych</string>
|
||||||
<string name="novalidbasalrate">Brak prawidłowej dawki bazowej odczytanej z pompy</string>
|
<string name="novalidbasalrate">Brak prawidłowej dawki bazowej odczytanej z pompy</string>
|
||||||
<string name="closedmodedisabledinpreferences">Tryb zamkniętej pętli wyłączony w ustawieniach</string>
|
<string name="closedmodedisabledinpreferences">Tryb zamkniętej pętli wyłączony w ustawieniach</string>
|
||||||
|
@ -879,8 +879,8 @@
|
||||||
<string name="smbnotallowedinopenloopmode">SMB nie dozwolone w trybie otwartej pętli</string>
|
<string name="smbnotallowedinopenloopmode">SMB nie dozwolone w trybie otwartej pętli</string>
|
||||||
<string name="food_short">Posiłek</string>
|
<string name="food_short">Posiłek</string>
|
||||||
<string name="reset">ponowne uruchomienie</string>
|
<string name="reset">ponowne uruchomienie</string>
|
||||||
<string name="waitingfortimesynchronization">Oczekiwanie na synchronizację czasu (%d sec)</string>
|
<string name="waitingfortimesynchronization">Oczekiwanie na synchronizację czasu (%1$d sec)</string>
|
||||||
<string name="loopdisconnectedfor">Rozłączono (%d m)</string>
|
<string name="loopdisconnectedfor">Rozłączono (%1$d m)</string>
|
||||||
<string name="automatic_careportal_events">Automatyczne działania PortaluOpieki</string>
|
<string name="automatic_careportal_events">Automatyczne działania PortaluOpieki</string>
|
||||||
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automatycznie przesyłaj zmianę zasobnika, wkłucia i baterii oraz alarmy pompy do Nightscout</string>
|
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automatycznie przesyłaj zmianę zasobnika, wkłucia i baterii oraz alarmy pompy do Nightscout</string>
|
||||||
<string name="openapssmb_maxiob_title">Maksymalna, całkowita IOB, której OpenAPS nie może przekroczyć [U]</string>
|
<string name="openapssmb_maxiob_title">Maksymalna, całkowita IOB, której OpenAPS nie może przekroczyć [U]</string>
|
||||||
|
|
|
@ -218,7 +218,7 @@
|
||||||
<string name="danar_glucose">glicemie</string>
|
<string name="danar_glucose">glicemie</string>
|
||||||
<string name="danar_carbohydrate">carbohidrați</string>
|
<string name="danar_carbohydrate">carbohidrați</string>
|
||||||
<string name="danar_alarm">alarmă</string>
|
<string name="danar_alarm">alarmă</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">S-au transmis %d înregistrări</string>
|
<string name="danar_totaluploaded" formatted="false">S-au transmis %1$d înregistrări</string>
|
||||||
<string name="danar_sbolus">S bolus</string>
|
<string name="danar_sbolus">S bolus</string>
|
||||||
<string name="danar_history_alarm">Alarme</string>
|
<string name="danar_history_alarm">Alarme</string>
|
||||||
<string name="danar_history_basalhours">Ore bazale</string>
|
<string name="danar_history_basalhours">Ore bazale</string>
|
||||||
|
@ -229,7 +229,7 @@
|
||||||
<string name="danar_history_glucose">Glicemie</string>
|
<string name="danar_history_glucose">Glicemie</string>
|
||||||
<string name="danar_history_refill">Reumplere</string>
|
<string name="danar_history_refill">Reumplere</string>
|
||||||
<string name="danar_history_syspend">Suspendare</string>
|
<string name="danar_history_syspend">Suspendare</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Conectare de %d s</string>
|
<string name="danar_history_connectingfor">Conectare de %1$d s</string>
|
||||||
<string name="danar_password_title">Parola pompei</string>
|
<string name="danar_password_title">Parola pompei</string>
|
||||||
<string name="wrongpumppassword">Parola pompei greșită!</string>
|
<string name="wrongpumppassword">Parola pompei greșită!</string>
|
||||||
<string name="pumpbusy">Pompa face altă acțiune</string>
|
<string name="pumpbusy">Pompa face altă acțiune</string>
|
||||||
|
@ -330,7 +330,7 @@
|
||||||
<string name="openapsama">OpenAPS AMA</string>
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
<string name="short_avgdelta">Media scurtă a deviației</string>
|
<string name="short_avgdelta">Media scurtă a deviației</string>
|
||||||
<string name="long_avgdelta">Media lungă a deviației</string>
|
<string name="long_avgdelta">Media lungă a deviației</string>
|
||||||
<string name="array_of_elements">Matrice cu %d elemente.\nValorea efectivă:</string>
|
<string name="array_of_elements">Matrice cu %1$d elemente.\nValorea efectivă:</string>
|
||||||
<string name="openapsma_autosensdata_label">Date Autosens</string>
|
<string name="openapsma_autosensdata_label">Date Autosens</string>
|
||||||
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
||||||
<string name="openapsama_useautosens">Folosește opțiunea autosens AMA</string>
|
<string name="openapsama_useautosens">Folosește opțiunea autosens AMA</string>
|
||||||
|
@ -443,8 +443,8 @@
|
||||||
<string name="Glimp">Glimp</string>
|
<string name="Glimp">Glimp</string>
|
||||||
<string name="needwhitelisting">%s necesită excluderea din lista de optimizare a bateriei pentru funcționare corespunzătoare</string>
|
<string name="needwhitelisting">%s necesită excluderea din lista de optimizare a bateriei pentru funcționare corespunzătoare</string>
|
||||||
<string name="loopsuspended">Buclă suspendată</string>
|
<string name="loopsuspended">Buclă suspendată</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Suspendată (%d m)</string>
|
<string name="loopsuspendedfor">Suspendată (%1$d m)</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||||
<string name="suspendloopfor1h">Suspendă bucla pentru 1h</string>
|
<string name="suspendloopfor1h">Suspendă bucla pentru 1h</string>
|
||||||
<string name="suspendloopfor2h">Suspendă bucla pentru 2h</string>
|
<string name="suspendloopfor2h">Suspendă bucla pentru 2h</string>
|
||||||
<string name="suspendloopfor3h">Suspendă bucla pentru 3h</string>
|
<string name="suspendloopfor3h">Suspendă bucla pentru 3h</string>
|
||||||
|
@ -651,7 +651,7 @@
|
||||||
<string name="shortprotein">Pr</string>
|
<string name="shortprotein">Pr</string>
|
||||||
<string name="shortfat">Grăsime</string>
|
<string name="shortfat">Grăsime</string>
|
||||||
<string name="active"><![CDATA[<Active>]]></string>
|
<string name="active"><![CDATA[<Active>]]></string>
|
||||||
<string name="waitingforestimatedbolusend" formatted="false">Se așteaptă finalul bolusării. Mai sunt %d sec.</string>
|
<string name="waitingforestimatedbolusend">Se așteaptă finalul bolusării. Mai sunt %1$d sec.</string>
|
||||||
<string name="processinghistory">Se procesează activitatea</string>
|
<string name="processinghistory">Se procesează activitatea</string>
|
||||||
<string name="startingbolus">Pornire livrare bolus</string>
|
<string name="startingbolus">Pornire livrare bolus</string>
|
||||||
<string name="executingrightnow">Se execută comanda chiar acum</string>
|
<string name="executingrightnow">Se execută comanda chiar acum</string>
|
||||||
|
@ -702,7 +702,7 @@
|
||||||
<string name="combo_refresh">Reîncarcă</string>
|
<string name="combo_refresh">Reîncarcă</string>
|
||||||
<string name="combo_pump_state_label">Stare</string>
|
<string name="combo_pump_state_label">Stare</string>
|
||||||
<string name="combo_pump_activity_label">Activitate</string>
|
<string name="combo_pump_activity_label">Activitate</string>
|
||||||
<string name="combo_no_pump_connection" formatted="false">Fără conexiune de %d min</string>
|
<string name="combo_no_pump_connection">Fără conexiune de %1$d min</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d min rămase)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d min rămase)</string>
|
||||||
<string name="combo_pump_state_initializing">Inițializare</string>
|
<string name="combo_pump_state_initializing">Inițializare</string>
|
||||||
<string name="combo_pump_state_suspended_due_to_error">Suspendat din cauza unei erori</string>
|
<string name="combo_pump_state_suspended_due_to_error">Suspendat din cauza unei erori</string>
|
||||||
|
@ -860,8 +860,8 @@
|
||||||
<string name="alert_e13">Eroare E13: Eroare de limbaj</string>
|
<string name="alert_e13">Eroare E13: Eroare de limbaj</string>
|
||||||
<string name="ns_wifionly">Folosește doar conexiune WiFi</string>
|
<string name="ns_wifionly">Folosește doar conexiune WiFi</string>
|
||||||
<string name="cgm">CGM</string>
|
<string name="cgm">CGM</string>
|
||||||
<string name="objectivenotstarted" formatted="false">Obiectivul %d nu este pornit</string>
|
<string name="objectivenotstarted">Obiectivul %1$d nu este pornit</string>
|
||||||
<string name="objectivenotfinished" formatted="false">Obiectivul %d nu este atins</string>
|
<string name="objectivenotfinished">Obiectivul %1$d nu este atins</string>
|
||||||
<string name="pumpisnottempbasalcapable">Pompa nu suportă bazale temporare</string>
|
<string name="pumpisnottempbasalcapable">Pompa nu suportă bazale temporare</string>
|
||||||
<string name="novalidbasalrate">Nu s-a citit o rată bazală validă din pompă</string>
|
<string name="novalidbasalrate">Nu s-a citit o rată bazală validă din pompă</string>
|
||||||
<string name="closedmodedisabledinpreferences">Modul buclă închisă dezactivat în preferințe</string>
|
<string name="closedmodedisabledinpreferences">Modul buclă închisă dezactivat în preferințe</string>
|
||||||
|
@ -887,8 +887,8 @@
|
||||||
<string name="smbalwaysdisabled">SMB dezactivat întotdeauna și după carbo deoarece sursa glicemiei nu suportă filtrare avansată</string>
|
<string name="smbalwaysdisabled">SMB dezactivat întotdeauna și după carbo deoarece sursa glicemiei nu suportă filtrare avansată</string>
|
||||||
<string name="smbnotallowedinopenloopmode">SMB nu este permis în mod buclă deschisă</string>
|
<string name="smbnotallowedinopenloopmode">SMB nu este permis în mod buclă deschisă</string>
|
||||||
<string name="food_short">Mâncare</string>
|
<string name="food_short">Mâncare</string>
|
||||||
<string name="waitingfortimesynchronization" formatted="false">Se așteaptă sincronizarea (%d s)</string>
|
<string name="waitingfortimesynchronization">Se așteaptă sincronizarea (%1$d s)</string>
|
||||||
<string name="loopdisconnectedfor" formatted="false">Deconectat (%d min)</string>
|
<string name="loopdisconnectedfor">Deconectat (%1$d min)</string>
|
||||||
<string name="automatic_careportal_events">Evenimente Careportal automate</string>
|
<string name="automatic_careportal_events">Evenimente Careportal automate</string>
|
||||||
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Încărcare automată a schimbărilor de insulină, rezervor, baterie și alarme de pompă în Nightscout</string>
|
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Încărcare automată a schimbărilor de insulină, rezervor, baterie și alarme de pompă în Nightscout</string>
|
||||||
<string name="openapssmb_maxiob_title">Maximul total IOB peste care OpenAPS nu poate trece [U]</string>
|
<string name="openapssmb_maxiob_title">Maximul total IOB peste care OpenAPS nu poate trece [U]</string>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<string name="always_use_shortavg_summary">полезно когда данные из нефильтруемых источников вроде Xdrip зашумляются</string>
|
<string name="always_use_shortavg_summary">полезно когда данные из нефильтруемых источников вроде Xdrip зашумляются</string>
|
||||||
<string name="approachingdailylimit">приближается суточный лимит инсулина</string>
|
<string name="approachingdailylimit">приближается суточный лимит инсулина</string>
|
||||||
<string name="apsmode_title">режим APS</string>
|
<string name="apsmode_title">режим APS</string>
|
||||||
<string name="array_of_elements" formatted="false">массив %d элементов. актуальная величина:</string>
|
<string name="array_of_elements">массив %1$d элементов. актуальная величина:</string>
|
||||||
<string name="basal">базал</string>
|
<string name="basal">базал</string>
|
||||||
<string name="basal_rate">скорость усвоения базала:</string>
|
<string name="basal_rate">скорость усвоения базала:</string>
|
||||||
<string name="basal_step">шаг базала</string>
|
<string name="basal_step">шаг базала</string>
|
||||||
|
@ -120,7 +120,7 @@
|
||||||
<string name="danar_history_basalhours">почасовые базалы</string>
|
<string name="danar_history_basalhours">почасовые базалы</string>
|
||||||
<string name="danar_history_bolus">болюсы</string>
|
<string name="danar_history_bolus">болюсы</string>
|
||||||
<string name="danar_history_carbohydrates">углеводы</string>
|
<string name="danar_history_carbohydrates">углеводы</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">связь установлена за %d сек.</string>
|
<string name="danar_history_connectingfor">связь установлена за %1$d сек.</string>
|
||||||
<string name="danar_history_dailyinsulin">суточный инсулин</string>
|
<string name="danar_history_dailyinsulin">суточный инсулин</string>
|
||||||
<string name="danar_history_errors">ошибки</string>
|
<string name="danar_history_errors">ошибки</string>
|
||||||
<string name="danar_history_glucose">гликемия</string>
|
<string name="danar_history_glucose">гликемия</string>
|
||||||
|
@ -150,7 +150,7 @@
|
||||||
<string name="danar_stats_warning_Message">возможны неточности если болюсы использовались для заполнения</string>
|
<string name="danar_stats_warning_Message">возможны неточности если болюсы использовались для заполнения</string>
|
||||||
<string name="danar_stats_weight">вес</string>
|
<string name="danar_stats_weight">вес</string>
|
||||||
<string name="danar_switchtouhmode">замена режима с U/d на U/h на помпе</string>
|
<string name="danar_switchtouhmode">замена режима с U/d на U/h на помпе</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">всего передано %d записей</string>
|
<string name="danar_totaluploaded">всего передано %1$d записей</string>
|
||||||
<string name="danar_useextended_title">для величин >200% пользуйтесь увеличенным болюсом</string>
|
<string name="danar_useextended_title">для величин >200% пользуйтесь увеличенным болюсом</string>
|
||||||
<string name="danar_valuenotsetproperly">величина не задана должным образом</string>
|
<string name="danar_valuenotsetproperly">величина не задана должным образом</string>
|
||||||
<string name="danar_viewprofile">просмотр профиля</string>
|
<string name="danar_viewprofile">просмотр профиля</string>
|
||||||
|
@ -222,16 +222,16 @@
|
||||||
<string name="loop_constraintsprocessed_label">после наложенных ограничений</string>
|
<string name="loop_constraintsprocessed_label">после наложенных ограничений</string>
|
||||||
<string name="loop_shortname">ЗЦ</string>
|
<string name="loop_shortname">ЗЦ</string>
|
||||||
<string name="loopdisabled">ЗЦ ОТМЕНЕН ОГРАНИЧЕНИЯМИ</string>
|
<string name="loopdisabled">ЗЦ ОТМЕНЕН ОГРАНИЧЕНИЯМИ</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">суперболюс(%d m)</string>
|
<string name="loopsuperbolusfor">суперболюс(%1$d m)</string>
|
||||||
<string name="loopsuspended">ЗЦ остановлен</string>
|
<string name="loopsuspended">ЗЦ остановлен</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">остановлен на(%d m)</string>
|
<string name="loopsuspendedfor">остановлен на(%1$d m)</string>
|
||||||
<string name="low_mark">отметка НИЗКИЙ</string>
|
<string name="low_mark">отметка НИЗКИЙ</string>
|
||||||
<string name="lowbattery">низкий заряд батареи</string>
|
<string name="lowbattery">низкий заряд батареи</string>
|
||||||
<string name="manual">вручную</string>
|
<string name="manual">вручную</string>
|
||||||
<string name="mdi">MDI</string>
|
<string name="mdi">MDI</string>
|
||||||
<string name="mealbolus">болюс на еду</string>
|
<string name="mealbolus">болюс на еду</string>
|
||||||
<string name="mgdl">mg/dl</string>
|
<string name="mgdl">mg/dl</string>
|
||||||
<string name="minago" formatted="false">%d м. назад</string>
|
<string name="minago">%1$d м. назад</string>
|
||||||
<string name="missing">отсутствует</string>
|
<string name="missing">отсутствует</string>
|
||||||
<string name="mmol">mmol/l</string>
|
<string name="mmol">mmol/l</string>
|
||||||
<string name="nav_about">о приложении</string>
|
<string name="nav_about">о приложении</string>
|
||||||
|
@ -406,7 +406,7 @@
|
||||||
<string name="sms_delta">дельта:</string>
|
<string name="sms_delta">дельта:</string>
|
||||||
<string name="sms_iob">IOB:</string>
|
<string name="sms_iob">IOB:</string>
|
||||||
<string name="sms_lastbg">прошлый СК:</string>
|
<string name="sms_lastbg">прошлый СК:</string>
|
||||||
<string name="sms_minago" formatted="false">%d мин назад</string>
|
<string name="sms_minago">%1$d мин назад</string>
|
||||||
<string name="smscommunicator">SMS коммуникатор</string>
|
<string name="smscommunicator">SMS коммуникатор</string>
|
||||||
<string name="smscommunicator_allowednumbers">разрешенные телефонные номера</string>
|
<string name="smscommunicator_allowednumbers">разрешенные телефонные номера</string>
|
||||||
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
||||||
|
|
|
@ -114,7 +114,7 @@
|
||||||
<string name="danar_history_basalhours">Basaltimmar</string>
|
<string name="danar_history_basalhours">Basaltimmar</string>
|
||||||
<string name="danar_history_bolus">Bolusar</string>
|
<string name="danar_history_bolus">Bolusar</string>
|
||||||
<string name="danar_history_carbohydrates">Kolhydrater</string>
|
<string name="danar_history_carbohydrates">Kolhydrater</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Ansluter (%d s)</string>
|
<string name="danar_history_connectingfor">Ansluter (%1$d s)</string>
|
||||||
<string name="danar_history_dailyinsulin">Daglig insulinmängd</string>
|
<string name="danar_history_dailyinsulin">Daglig insulinmängd</string>
|
||||||
<string name="danar_history_errors">Fel</string>
|
<string name="danar_history_errors">Fel</string>
|
||||||
<string name="danar_history_glucose">Glukos</string>
|
<string name="danar_history_glucose">Glukos</string>
|
||||||
|
@ -198,7 +198,7 @@
|
||||||
<string name="loop_constraintsprocessed_label">Efter begränsningar</string>
|
<string name="loop_constraintsprocessed_label">Efter begränsningar</string>
|
||||||
<string name="loop_shortname">Loop</string>
|
<string name="loop_shortname">Loop</string>
|
||||||
<string name="loopdisabled">LOOP STOPPAD PGA BEGRÄNSNINGAR</string>
|
<string name="loopdisabled">LOOP STOPPAD PGA BEGRÄNSNINGAR</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d min)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d min)</string>
|
||||||
<string name="loopsuspended">Loop pausad</string>
|
<string name="loopsuspended">Loop pausad</string>
|
||||||
<string name="low_mark">LÅG-markering</string>
|
<string name="low_mark">LÅG-markering</string>
|
||||||
<string name="lowbattery">Svagt batteri</string>
|
<string name="lowbattery">Svagt batteri</string>
|
||||||
|
@ -488,7 +488,7 @@
|
||||||
<string name="danar_stats_warning_Message">Kan visa fel om man använder bolus för priming/fyllning!</string>
|
<string name="danar_stats_warning_Message">Kan visa fel om man använder bolus för priming/fyllning!</string>
|
||||||
<string name="end_user_license_agreement_text">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.</string>
|
<string name="end_user_license_agreement_text">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.</string>
|
||||||
<string name="mmol">mmol/l</string>
|
<string name="mmol">mmol/l</string>
|
||||||
<string name="minago" formatted="false">%d m</string>
|
<string name="minago">%1$d m</string>
|
||||||
<string name="mgdl">mg/dl</string>
|
<string name="mgdl">mg/dl</string>
|
||||||
<string name="mdtp_ok">OK</string>
|
<string name="mdtp_ok">OK</string>
|
||||||
<string name="mdi">MDI</string>
|
<string name="mdi">MDI</string>
|
||||||
|
@ -508,7 +508,7 @@
|
||||||
<string name="sms_bolus">Bolus:</string>
|
<string name="sms_bolus">Bolus:</string>
|
||||||
<string name="sms_delta">Delta:</string>
|
<string name="sms_delta">Delta:</string>
|
||||||
<string name="sms_iob">IOB:</string>
|
<string name="sms_iob">IOB:</string>
|
||||||
<string name="sms_minago" formatted="false">%d min</string>
|
<string name="sms_minago">%1$d min</string>
|
||||||
<string name="nsalarm_staledatavalue_label">Första varning efter [min]</string>
|
<string name="nsalarm_staledatavalue_label">Första varning efter [min]</string>
|
||||||
<string name="nsalarm_urgent_staledatavalue_label">Akut varning efter [min]</string>
|
<string name="nsalarm_urgent_staledatavalue_label">Akut varning efter [min]</string>
|
||||||
<string name="nsalarm_urgenthigh">Akut hög</string>
|
<string name="nsalarm_urgenthigh">Akut hög</string>
|
||||||
|
@ -519,7 +519,7 @@
|
||||||
<string name="overview_newtempbasal_basalpercent">Basal [%]</string>
|
<string name="overview_newtempbasal_basalpercent">Basal [%]</string>
|
||||||
<string name="careportal_newnstreatment_glucosetype">BG-källa</string>
|
<string name="careportal_newnstreatment_glucosetype">BG-källa</string>
|
||||||
<string name="sv_lang">Svenska</string>
|
<string name="sv_lang">Svenska</string>
|
||||||
<string name="danar_totaluploaded">Laddade upp totalt %d värden</string>
|
<string name="danar_totaluploaded">Laddade upp totalt %1$d värden</string>
|
||||||
<string name="objectives_7_objective">Aktiverar ytterligare funktioner för användning dagtid, t ex SMB.</string>
|
<string name="objectives_7_objective">Aktiverar ytterligare funktioner för användning dagtid, t ex SMB.</string>
|
||||||
<string name="smscommunicator_remotecommandnotallowed">Otillåtet fjärrkommando</string>
|
<string name="smscommunicator_remotecommandnotallowed">Otillåtet fjärrkommando</string>
|
||||||
<string name="danar_switchtouhmode">Ändra inställningen från E/d till E/tim i pumpen</string>
|
<string name="danar_switchtouhmode">Ändra inställningen från E/d till E/tim i pumpen</string>
|
||||||
|
@ -533,7 +533,7 @@
|
||||||
<string name="openapsama_current_basal_safety_multiplier_summary">"Standardvärde: 4 Detta är en grundsten i OpenAPS säkerhet. Detta begränsar dina tempbasaler till maximalt 4x din nuvarande basal, oberoende av din max basalhastighet. Detta för att undvika att man av misstag gör farliga inställningar. Om man når taket i denna inställning så kanske ändringar i andra inställningar behövs. De flesta behöver inte ändra denna inställning. "</string>
|
<string name="openapsama_current_basal_safety_multiplier_summary">"Standardvärde: 4 Detta är en grundsten i OpenAPS säkerhet. Detta begränsar dina tempbasaler till maximalt 4x din nuvarande basal, oberoende av din max basalhastighet. Detta för att undvika att man av misstag gör farliga inställningar. Om man når taket i denna inställning så kanske ändringar i andra inställningar behövs. De flesta behöver inte ändra denna inställning. "</string>
|
||||||
<string name="openapsama_autosens_min_summary">Standardvärde: 0.7 Med standardvärdet 0.7 kan autosens justera ner dina basaler, kvoter etc med upp till 30% för att kompensera för t ex tillfällig hög insulinkänslighet.</string>
|
<string name="openapsama_autosens_min_summary">Standardvärde: 0.7 Med standardvärdet 0.7 kan autosens justera ner dina basaler, kvoter etc med upp till 30% för att kompensera för t ex tillfällig hög insulinkänslighet.</string>
|
||||||
<string name="needwhitelisting">%s behöver kunna kringgå batterisparfunktionerna för att fungera korrekt</string>
|
<string name="needwhitelisting">%s behöver kunna kringgå batterisparfunktionerna för att fungera korrekt</string>
|
||||||
<string name="loopsuspendedfor">Pausad (%d min)</string>
|
<string name="loopsuspendedfor">Pausad (%1$d min)</string>
|
||||||
<string name="uploader">Uppladdare</string>
|
<string name="uploader">Uppladdare</string>
|
||||||
<string name="configbuilder_sensitivity">Känslighetsavkänning</string>
|
<string name="configbuilder_sensitivity">Känslighetsavkänning</string>
|
||||||
<string name="overview_newtempbasal_basalabsolute">Basal [E/tim]</string>
|
<string name="overview_newtempbasal_basalabsolute">Basal [E/tim]</string>
|
||||||
|
@ -579,7 +579,7 @@
|
||||||
<string name="shortenergy">En</string>
|
<string name="shortenergy">En</string>
|
||||||
<string name="shortprotein">Pr</string>
|
<string name="shortprotein">Pr</string>
|
||||||
<string name="shortfat">Fett</string>
|
<string name="shortfat">Fett</string>
|
||||||
<string name="waitingforestimatedbolusend">Väntar på att bolus ska slutföras (%d sek)</string>
|
<string name="waitingforestimatedbolusend">Väntar på att bolus ska slutföras (%1$d sek)</string>
|
||||||
<string name="processinghistory">Behandlar</string>
|
<string name="processinghistory">Behandlar</string>
|
||||||
<string name="startingbolus">Påbörjar bolus</string>
|
<string name="startingbolus">Påbörjar bolus</string>
|
||||||
<string name="executingrightnow">Kommandot kör just nu</string>
|
<string name="executingrightnow">Kommandot kör just nu</string>
|
||||||
|
@ -625,7 +625,7 @@
|
||||||
<string name="combo_refresh">Uppdatera</string>
|
<string name="combo_refresh">Uppdatera</string>
|
||||||
<string name="combo_pump_state_label">Läge</string>
|
<string name="combo_pump_state_label">Läge</string>
|
||||||
<string name="combo_pump_activity_label">Aktivitet</string>
|
<string name="combo_pump_activity_label">Aktivitet</string>
|
||||||
<string name="combo_no_pump_connection">Ingen anslutning på %d min</string>
|
<string name="combo_no_pump_connection">Ingen anslutning på %1$d min</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d min återstår)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d min återstår)</string>
|
||||||
<string name="combo_pump_state_suspended_due_to_error">Pausad pga fel</string>
|
<string name="combo_pump_state_suspended_due_to_error">Pausad pga fel</string>
|
||||||
<string name="combo_pump_state_suspended_by_user">Pausad av användaren</string>
|
<string name="combo_pump_state_suspended_by_user">Pausad av användaren</string>
|
||||||
|
@ -764,8 +764,8 @@
|
||||||
<string name="profileswitch_ismissing">Profilbyte saknas. Vänligen gör ett profilbyte eller tryck Aktivera profil under Lokal Profil.</string>
|
<string name="profileswitch_ismissing">Profilbyte saknas. Vänligen gör ett profilbyte eller tryck Aktivera profil under Lokal Profil.</string>
|
||||||
<string name="combo_bolus_count">Antal bolus</string>
|
<string name="combo_bolus_count">Antal bolus</string>
|
||||||
<string name="combo_tbr_count">Antal temp basaler</string>
|
<string name="combo_tbr_count">Antal temp basaler</string>
|
||||||
<string name="objectivenotstarted">Mål %d inte startat</string>
|
<string name="objectivenotstarted">Mål %1$d inte startat</string>
|
||||||
<string name="objectivenotfinished">Mål %d inte nått</string>
|
<string name="objectivenotfinished">Mål %1$d inte nått</string>
|
||||||
<string name="pumpisnottempbasalcapable">Pumpen är inte kapabel till temp basal</string>
|
<string name="pumpisnottempbasalcapable">Pumpen är inte kapabel till temp basal</string>
|
||||||
<string name="novalidbasalrate">Ingen giltig data om temp basaler fanns i pumpen</string>
|
<string name="novalidbasalrate">Ingen giltig data om temp basaler fanns i pumpen</string>
|
||||||
<string name="closedmodedisabledinpreferences">Closed Loop inaktiverat i Inställningar</string>
|
<string name="closedmodedisabledinpreferences">Closed Loop inaktiverat i Inställningar</string>
|
||||||
|
@ -793,8 +793,8 @@
|
||||||
<string name="smbnotallowedinopenloopmode">SMB inte tillåtet i Open Loop</string>
|
<string name="smbnotallowedinopenloopmode">SMB inte tillåtet i Open Loop</string>
|
||||||
<string name="food_short">Mat</string>
|
<string name="food_short">Mat</string>
|
||||||
<string name="reset">Återställ</string>
|
<string name="reset">Återställ</string>
|
||||||
<string name="waitingfortimesynchronization">Väntar på tidssynkronisering (%d sek)</string>
|
<string name="waitingfortimesynchronization">Väntar på tidssynkronisering (%1$d sek)</string>
|
||||||
<string name="loopdisconnectedfor">Frånkopplad (%d min)</string>
|
<string name="loopdisconnectedfor">Frånkopplad (%1$d min)</string>
|
||||||
<string name="automatic_careportal_events">Automatisk loggning i Careportal</string>
|
<string name="automatic_careportal_events">Automatisk loggning i Careportal</string>
|
||||||
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Ladda upp insulin-, kanyl- och batteribyten samt pumplarm till Nightscout</string>
|
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Ladda upp insulin-, kanyl- och batteribyten samt pumplarm till Nightscout</string>
|
||||||
<string name="openapssmb_maxiob_title">Max IOB som OpenAPS inte kan överstiga [E]</string>
|
<string name="openapssmb_maxiob_title">Max IOB som OpenAPS inte kan överstiga [E]</string>
|
||||||
|
|
881
app/src/main/res/values-zh-rCN/strings.xml
Normal file
881
app/src/main/res/values-zh-rCN/strings.xml
Normal file
|
@ -0,0 +1,881 @@
|
||||||
|
<resources>
|
||||||
|
<string name="treatmentssafety_title">治疗安全</string>
|
||||||
|
<string name="treatmentssafety_maxbolus_title">允许的最大大剂量值[U]</string>
|
||||||
|
<string name="treatmentssafety_maxcarbs_title">允许的最大碳水化合物量 [g]</string>
|
||||||
|
|
||||||
|
<string name="nav_preferences">属性</string>
|
||||||
|
<string name="nav_refreshtreatments">从Nightscout刷新治疗参数</string>
|
||||||
|
<string name="nav_backup">备份</string>
|
||||||
|
<string name="nav_test_alert">测试报警</string>
|
||||||
|
<string name="nav_resetdb">重置数据库</string>
|
||||||
|
<string name="reset_db_confirm">你真的想重置数据库吗?</string>
|
||||||
|
<string name="nav_exit">退出</string>
|
||||||
|
<string name="danar_useextended_title">使用>200%的扩展大剂量(extended boluses)</string>
|
||||||
|
<string name="danar_bt_name_title">DanaR 蓝牙设备</string>
|
||||||
|
<string name="ns_sync_use_absolute_title">总是使用基础率的绝对值</string>
|
||||||
|
<string name="alert_dialog_storage_permission_text">请重启你的手机或者从系统设置里重启AndroidAPS软件 \否则 Android APS将不会记录日志 (这对于跟踪和检查算法是否正确很重要)!</string>
|
||||||
|
<string name="objectives_objective_label_string">目的:</string>
|
||||||
|
<string name="objectives_gate_label_string">Gate:</string>
|
||||||
|
<string name="objectives_button_start">开始</string>
|
||||||
|
<string name="objectives_button_verify">验证</string>
|
||||||
|
<string name="nsprofileview_units_label">血糖值单位</string>
|
||||||
|
<string name="nsprofileview_dia_label">DIA(胰岛素作用时间)</string>
|
||||||
|
<string name="nsprofileview_activeprofile_label">激活的 profile</string>
|
||||||
|
<string name="nsprofileview_ic_label">IC(一单位胰岛素处理多少碳水化合物)</string>
|
||||||
|
<string name="nsprofileview_isf_label">ISF(胰岛素敏感因子)</string>
|
||||||
|
<string name="nsprofileview_basal_label">基础率</string>
|
||||||
|
<string name="nsprofileview_target_label">血糖控制目标值</string>
|
||||||
|
<string name="noprofileset"> Nightscout 配置文件没有被设置</string>
|
||||||
|
<string name="treatments_insulin_label_string">胰岛素:</string>
|
||||||
|
<string name="treatments_carbs_label_string">碳水化合物:</string>
|
||||||
|
<string name="treatments_iob_label_string">活性胰岛素IOB:</string>
|
||||||
|
<string name="sms_iob">活性胰岛素IOB:</string>
|
||||||
|
<string name="treatments_activity_string">活动:</string>
|
||||||
|
<string name="treatments_iobtotal_label_string">活性胰岛素IOB的总量:</string>
|
||||||
|
<string name="treatments_iobactivitytotal_label_string">活性胰岛素IOB的总量活动:</string>
|
||||||
|
<string name="tempbasals_realduration_label_string">持续时间:</string>
|
||||||
|
<string name="tempbasals_netratio_label_string">比值:</string>
|
||||||
|
<string name="tempbasals_netinsulin_label_string">胰岛素:</string>
|
||||||
|
<string name="tempbasals_iob_label_string">活性胰岛素IOB:</string>
|
||||||
|
<string name="tempbasals_iobtotal_label_string">活性胰岛素IOB的总量:</string>
|
||||||
|
<string name="treatments_newtreatment_insulinamount_label">胰岛素</string>
|
||||||
|
<string name="treatments_newtreatment_carbsamount_label">碳水化合物</string>
|
||||||
|
<string name="treatments_wizard_bg_label">血糖</string>
|
||||||
|
<string name="treatments_wizard_tt_label">TT</string>
|
||||||
|
<string name="treatments_wizard_carbs_label">碳水化合物</string>
|
||||||
|
<string name="treatments_wizard_correction_label">矫正值</string>
|
||||||
|
<string name="treatments_wizard_unit_label">U</string>
|
||||||
|
<string name="treatments_wizard_bolusiob_label">大剂量活性胰岛素IOB</string>
|
||||||
|
<string name="treatments_wizard_total_label">总计</string>
|
||||||
|
<string name="openapsma_run">现在运行</string>
|
||||||
|
<string name="vitualpump_label">虚拟泵</string>
|
||||||
|
<string name="virtualpump_basebasalrate_label">基础率</string>
|
||||||
|
<string name="virtualpump_tempbasal_label">临时基础率</string>
|
||||||
|
<string name="virtualpump_extendedbolus_label">扩展大剂量(方波)</string>
|
||||||
|
<string name="virtualpump_battery_label">电池</string>
|
||||||
|
<string name="virtualpump_reservoir_label">储药器</string>
|
||||||
|
<string name="virtualpump_resultok">确认</string>
|
||||||
|
<string name="virtualpump_sqlerror">SQL 数据库错误</string>
|
||||||
|
<string name="openapsma_lastrun_label">上次运行</string>
|
||||||
|
<string name="openapsma_inputparameters_label">输入参数</string>
|
||||||
|
<string name="openapsma_glucosestatus_label">血糖状态</string>
|
||||||
|
<string name="openapsma_currenttemp_label">当前的临时基础率</string>
|
||||||
|
<string name="openapsma_iobdata_label">活性胰岛素IOB 数据</string>
|
||||||
|
<string name="openapsma_profile_label">配置文件</string>
|
||||||
|
<string name="openapsma_mealdata_label">膳食数据</string>
|
||||||
|
<string name="result">结果</string>
|
||||||
|
<string name="openapsma_noglucosedata">没有可用的血糖数据</string>
|
||||||
|
<string name="openapsma_noprofile">没有可用的配置文件</string>
|
||||||
|
<string name="openapsma_nopump">没有可用的胰岛素泵</string>
|
||||||
|
<string name="nochangerequested">不需要改变</string>
|
||||||
|
<string name="openapsma_request_label">请求</string>
|
||||||
|
<string name="rate">比率</string>
|
||||||
|
<string name="duration">持续时间</string>
|
||||||
|
<string name="reason">原因</string>
|
||||||
|
<string name="glucose">血糖</string>
|
||||||
|
<string name="delta">增量</string>
|
||||||
|
<string name="sms_delta">增量:</string>
|
||||||
|
<string name="avgdelta">平均.增量</string>
|
||||||
|
<string name="configbuilder">配置生成器</string>
|
||||||
|
<string name="objectives">目的</string>
|
||||||
|
<string name="openapsma">OpenAPS MA</string>
|
||||||
|
<string name="overview">简介</string>
|
||||||
|
<string name="profileviewer">Nightscout配置文件</string>
|
||||||
|
<string name="simpleprofile">简单 配置文件</string>
|
||||||
|
<string name="tempbasal">临时基础率</string>
|
||||||
|
<string name="treatments">治疗</string>
|
||||||
|
<string name="virtualpump">虚拟泵</string>
|
||||||
|
<string name="careportal">护理记录</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="configbuilder_pump">胰岛素泵</string>
|
||||||
|
<string name="configbuilder_treatments">治疗</string>
|
||||||
|
<string name="configbuilder_tempbasals">临时基础率</string>
|
||||||
|
<string name="configbuilder_profile">配置文件</string>
|
||||||
|
<string name="configbuilder_aps">APS</string>
|
||||||
|
<string name="configbuilder_general">普通</string>
|
||||||
|
<string name="days">天</string>
|
||||||
|
<string name="objectives_minimalduration">最小持续时间</string>
|
||||||
|
<string name="configbuilder_constraints">限制</string>
|
||||||
|
|
||||||
|
<string name="loop">闭环</string>
|
||||||
|
<string name="configbuilder_loop">闭环</string>
|
||||||
|
<string name="loop_aps_label">APS</string>
|
||||||
|
<string name="loop_constraintsprocessed_label">受闭环流程限制</string>
|
||||||
|
<string name="loop_setbypump_label">通过泵设置</string>
|
||||||
|
<string name="openapsma_lastenact_label">上一次制定</string>
|
||||||
|
<string name="ok">确定</string>
|
||||||
|
<string name="cancel">取消</string>
|
||||||
|
<string name="noapsselected">没有选定APS或者提供结果</string>
|
||||||
|
<string name="safety">安全性</string>
|
||||||
|
<string name="openapsma_disabled">这个插件被禁用了</string>
|
||||||
|
<string name="constraints_violation">与系统限制违背</string>
|
||||||
|
<string name="treatmentdeliveryerror">大剂量注入错误</string>
|
||||||
|
<string name="tempbasaldeliveryerror">临时基础率注入错误</string>
|
||||||
|
<string name="overview_newtempbasal_basalpercent">基础率 值 [%]</string>
|
||||||
|
<string name="overview_newtempbasal_percent_label">% (100% = 当前)</string>
|
||||||
|
<string name="setbasalquestion">接受新的临时基础率:</string>
|
||||||
|
<string name="overview_bolus_label">大剂量</string>
|
||||||
|
<string name="overview_calculator_label">计算器</string>
|
||||||
|
<string name="constraintapllied">限制已经被应用!</string>
|
||||||
|
<string name="confirmation">确认</string>
|
||||||
|
<string name="entertreatmentquestion">输入新的治疗:</string>
|
||||||
|
<string name="bolus">大剂量</string>
|
||||||
|
<string name="sms_bolus">微型大剂量:</string>
|
||||||
|
<string name="basal">基础率</string>
|
||||||
|
<string name="sms_basal">基础率:</string>
|
||||||
|
<string name="carbs">碳水化合物</string>
|
||||||
|
<string name="changeyourinput">改变你的输入!</string>
|
||||||
|
<string name="setextendedbolusquestion">设置新的扩展大剂量:</string>
|
||||||
|
<string name="configbuilder_bgsource">血糖值来源</string>
|
||||||
|
<string name="xdrip">xDrip</string>
|
||||||
|
<string name="nsclient">Nightscout客户端</string>
|
||||||
|
<string name="apsmode_title">APS 模式</string>
|
||||||
|
|
||||||
|
<string name="closedloop">闭环(Closed Loop)</string>
|
||||||
|
<string name="openloop">开环(Open Loop)</string>
|
||||||
|
<string name="disabledloop">禁用闭环</string>
|
||||||
|
<string name="disableloop">禁用闭环</string>
|
||||||
|
<string name="enableloop">开启闭环</string>
|
||||||
|
<string name="openloop_newsuggestion">新的建议可用</string>
|
||||||
|
<string name="unsupportedclientver">不支持这个NSClient的版本</string>
|
||||||
|
<string name="unsupportednsversion">不支持这个Nightscout服务器版本</string>
|
||||||
|
<string name="nsclientnotinstalled">没有安装NSClient 客户端. 记录丢失!</string>
|
||||||
|
<string name="objectives_bgavailableinns">可以在NS上看到血糖值</string>
|
||||||
|
<string name="objectives_pumpstatusavailableinns">可以在 NS上看到胰岛素泵的状态</string>
|
||||||
|
<string name="objectives_manualenacts">操控</string>
|
||||||
|
<string name="loopdisabled">因为系统限制闭环被禁用了</string>
|
||||||
|
<string name="cs_lang">Czech</string>
|
||||||
|
<string name="en_lang">English</string>
|
||||||
|
<string name="treatments_wizard_basaliob_label">基础活性胰岛素IOB</string>
|
||||||
|
<string name="bolusconstraintapplied">大剂量限制应用了</string>
|
||||||
|
<string name="carbsconstraintapplied">碳水化合物限制应用了</string>
|
||||||
|
<string name="careportal_bgcheck">检查血糖值</string>
|
||||||
|
<string name="careportal_announcement">声明</string>
|
||||||
|
<string name="careportal_note">记录</string>
|
||||||
|
<string name="careportal_question">问题</string>
|
||||||
|
<string name="careportal_exercise">锻炼</string>
|
||||||
|
<string name="careportal_pumpsitechange">管路更换</string>
|
||||||
|
<string name="careportal_cgmsensorinsert">动态传感器插入</string>
|
||||||
|
<string name="careportal_cgmsensorstart">动态传感器启动</string>
|
||||||
|
<string name="careportal_insulincartridgechange">胰岛素储药器更换</string>
|
||||||
|
<string name="careportal_profileswitch">配置文件切换</string>
|
||||||
|
<string name="careportal_snackbolus">零食 大剂量</string>
|
||||||
|
<string name="careportal_mealbolus">用餐大剂量</string>
|
||||||
|
<string name="careportal_correctionbolus">矫正大剂量</string>
|
||||||
|
<string name="careportal_combobolus">双波大剂量</string>
|
||||||
|
<string name="careportal_tempbasalstart">临时基础率开始</string>
|
||||||
|
<string name="careportal_tempbasalend">临时基础率结束</string>
|
||||||
|
<string name="careportal_carbscorrection">碳水化合物 校正</string>
|
||||||
|
<string name="careportal_openapsoffline">OpenAPS 离线</string>
|
||||||
|
|
||||||
|
<string name="careportal_newnstreatment_eventtype">事件类型</string>
|
||||||
|
<string name="careportal_newnstreatment_other">其他</string>
|
||||||
|
<string name="careportal_newnstreatment_meter">指血血糖仪</string>
|
||||||
|
<string name="careportal_newnstreatment_sensor">传感器</string>
|
||||||
|
<string name="careportal_newnstreatment_carbs_label">碳水化合物</string>
|
||||||
|
<string name="careportal_newnstreatment_insulin_label">胰岛素</string>
|
||||||
|
<string name="careportal_newnstreatment_carbtime_label">碳水化合物 时间</string>
|
||||||
|
<string name="careportal_newnstreatment_split_label">拆开</string>
|
||||||
|
<string name="careportal_newnstreatment_duration_label">持续时间</string>
|
||||||
|
<string name="careportal_newnstreatment_percent_label">百分比</string>
|
||||||
|
<string name="careportal_newnstreatment_absolute_label">绝对值</string>
|
||||||
|
<string name="careportal_newnstreatment_notes_label">记录</string>
|
||||||
|
<string name="careportal_newnstreatment_eventtime_label">事件 时间</string>
|
||||||
|
<string name="careportal_newnstreatment_profile_label">配置文件</string>
|
||||||
|
<string name="careportal_newnstreatment_enteredby_title">记录的人</string>
|
||||||
|
<string name="careportal_newnstreatment_glucosetype">血糖类型</string>
|
||||||
|
<string name="noprofile">没有从NS服务器加载配置文件</string>
|
||||||
|
<string name="overview_tempbasal_button">临时基础率</string>
|
||||||
|
<string name="overview_extendedbolus_button">扩展大剂量(方波)</string>
|
||||||
|
<string name="configbuilder_nightscoutversion_label">Nightscout 版本:</string>
|
||||||
|
<string name="send">发送</string>
|
||||||
|
<string name="missing">缺失</string>
|
||||||
|
<string name="enabled">启用的</string>
|
||||||
|
<string name="visible">可见的</string>
|
||||||
|
<string name="up">向上</string>
|
||||||
|
<string name="exported">属性已经导出了</string>
|
||||||
|
<string name="export_to">配置导出到</string>
|
||||||
|
<string name="import_from">从导入配置</string>
|
||||||
|
<string name="setting_imported">配置已经导入了</string>
|
||||||
|
<string name="filenotfound">没有找到文件</string>
|
||||||
|
<string name="nav_export">导出配置</string>
|
||||||
|
<string name="nav_import">导入配置</string>
|
||||||
|
<string name="nl_lang">Dutch</string>
|
||||||
|
<string name="de_lang">German</string>
|
||||||
|
<string name="es_lang">Spanish</string>
|
||||||
|
<string name="el_lang">Greek</string>
|
||||||
|
<string name="it_lang">Italian</string>
|
||||||
|
<string name="ro_lang">Romanian</string>
|
||||||
|
<string name="ru_lang">Russian</string>
|
||||||
|
<string name="sv_lang">Swedish</string>
|
||||||
|
<string name="zh_lang">简体中文</string>
|
||||||
|
<string name="openapsma_maxbasal_title">临时基础率最大值 U/小时</string>
|
||||||
|
<string name="openapsma_maxbasal_summary">这个值被称为最大基础率在OpenAPS里</string>
|
||||||
|
<string name="openapsma_maxiob_title">OpenAPS可以输注的最大基础(非大剂量)IOB [U]</string>
|
||||||
|
<string name="openapsma_maxiob_summary">这个值被称为最大活性胰岛素IOB 在OpenAPS里\n 缺省值为0. 几天或者几个星期后可以根据你的具体情况调整这个值.</string>
|
||||||
|
<string name="bg_lang">Bulgarian</string>
|
||||||
|
<string name="dismiss">消失</string>
|
||||||
|
<string name="language">语言</string>
|
||||||
|
<string name="danarpump">DanaR泵</string>
|
||||||
|
<string name="connecting">正在连接</string>
|
||||||
|
<string name="connected">已经连接</string>
|
||||||
|
<string name="disconnected">断开连接</string>
|
||||||
|
<string name="syncprofiletopump_title">同步 profile 到胰岛素泵</string>
|
||||||
|
<string name="danar_pump_settings">DanaR 泵设置</string>
|
||||||
|
<string name="nightscout">Nightscout</string>
|
||||||
|
<string name="end_user_license_agreement">终端用户知情同意书</string>
|
||||||
|
<string name="end_user_license_agreement_text"> 不得用于制定医疗决定。在适用法律允许的范围内,对该程序不作任何保证。除非另有书面授权的版权所有者和/或其他方均按原样提供程序,不附带明示或暗示的任何形式的担保,包括但不限于对适销性和适用于特定用途的默示担保。对您的程序的质量和性能的完整风险。如果程序存在缺陷,您应承担所有必要维修,修理或更正的代价.</string>
|
||||||
|
<string name="end_user_license_agreement_i_understand">我理解并同意</string>
|
||||||
|
<string name="save">保存</string>
|
||||||
|
<string name="nobtadapter">没有发现蓝牙适配器</string>
|
||||||
|
<string name="devicenotfound">没有找到被选择的设备</string>
|
||||||
|
<string name="connectionerror">胰岛素泵连接错误</string>
|
||||||
|
<string name="danar_iob_label">胰岛素泵 IOB</string>
|
||||||
|
<string name="danar_dailyunits">今日单位数</string>
|
||||||
|
<string name="danar_lastbolus">上次大剂量:</string>
|
||||||
|
<string name="hoursago">小时以前</string>
|
||||||
|
<string name="danar_invalidinput">输入的数据不合规</string>
|
||||||
|
<string name="danar_valuenotsetproperly">数值设置的不合适</string>
|
||||||
|
<string name="reloadprofile">重新加载配置文件</string>
|
||||||
|
<string name="danar_viewprofile">查看配置文件</string>
|
||||||
|
<string name="enacted">制定的</string>
|
||||||
|
<string name="comment">备注</string>
|
||||||
|
<string name="success">成功</string>
|
||||||
|
<string name="percent">百分比</string>
|
||||||
|
<string name="absolute">绝对值</string>
|
||||||
|
<string name="canceltemp">取消临时基础率</string>
|
||||||
|
<string name="smscommunicator">SMS 手机联系人</string>
|
||||||
|
<string name="waitingforpumpresult">等待结果</string>
|
||||||
|
<string name="smscommunicator_allowednumbers">允许的电话号码</string>
|
||||||
|
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
||||||
|
<string name="smscommunicator_bolusreplywithcode">要输入大剂量胰岛素 %1$.2fU 请回复 %2$s</string>
|
||||||
|
<string name="smscommunicator_calibrationreplywithcode">要发送校准值 %1$.2f 请回复 %2$s</string>
|
||||||
|
<string name="smscommunicator_bolusfailed">大剂量输注失败</string>
|
||||||
|
<string name="bolusdelivered" formatted="false">大剂量 %.2fU 输注成功了</string>
|
||||||
|
<string name="bolusrequested" formatted="false">将要输注 %.2fU</string>
|
||||||
|
<string name="smscommunicator_bolusdelivered" formatted="false">大剂量 %.2fU 输注成功了</string>
|
||||||
|
<string name="bolusdelivering" formatted="false">正在输注 %.2fU</string>
|
||||||
|
<string name="smscommunicator_remotecommandsallowed">允许手机通过远程命令控制泵输注</string>
|
||||||
|
<string name="smscommunicator_remotebolusnotallowed">远程大剂量没有被允许</string>
|
||||||
|
<string name="glucosetype_finger">手指</string>
|
||||||
|
<string name="glucosetype_sensor">传感器</string>
|
||||||
|
<string name="manual">手动</string>
|
||||||
|
<string name="careportal_temporarytarget">临时目标</string>
|
||||||
|
<string name="careportal_temporarytargetcancel">取消临时目标</string>
|
||||||
|
<string name="danarprofile">DanaR泵配置文件设置</string>
|
||||||
|
<string name="danarprofile_dia">DIA(胰岛素作用持续时间) [小时]</string>
|
||||||
|
<string name="danarprofile_dia_summary">胰岛素作用持续时间</string>
|
||||||
|
<string name="failedupdatebasalprofile">更新基础率配置文件失败</string>
|
||||||
|
<string name="danar_historyreload">重新加餐</string>
|
||||||
|
<string name="uploading">正在上传</string>
|
||||||
|
<string name="danar_ebolus">E bolus</string>
|
||||||
|
<string name="danar_dsbolus">DS bolus</string>
|
||||||
|
<string name="danar_debolus">DE bolus</string>
|
||||||
|
<string name="danar_error">错误</string>
|
||||||
|
<string name="danar_refill">重新充盈</string>
|
||||||
|
<string name="danar_basalhour">基础率 小时</string>
|
||||||
|
<string name="danar_glucose">血糖</string>
|
||||||
|
<string name="danar_carbohydrate">碳水化合物</string>
|
||||||
|
<string name="danar_alarm">报警</string>
|
||||||
|
<string name="danar_totaluploaded">总计 %1$d 个记录已经上传了</string>
|
||||||
|
<string name="danar_sbolus">S 大剂量</string>
|
||||||
|
<string name="danar_history_alarm">报警</string>
|
||||||
|
<string name="danar_history_basalhours">基础 小时</string>
|
||||||
|
<string name="danar_history_bolus">大剂量</string>
|
||||||
|
<string name="danar_history_carbohydrates">碳水化合物</string>
|
||||||
|
<string name="danar_history_dailyinsulin">每日胰岛素</string>
|
||||||
|
<string name="danar_history_errors">错误</string>
|
||||||
|
<string name="danar_history_glucose">血糖</string>
|
||||||
|
<string name="danar_history_refill">重新充盈</string>
|
||||||
|
<string name="danar_history_syspend">中止</string>
|
||||||
|
<string name="danar_history_connectingfor">正在连接中 %1$d s</string>
|
||||||
|
<string name="danar_password_title">胰岛素泵密码</string>
|
||||||
|
<string name="wrongpumppassword">错误的胰岛素泵密码!</string>
|
||||||
|
<string name="pumpbusy">胰岛素泵忙碌中</string>
|
||||||
|
<string name="overview_bolusprogress_delivered">已经输注的</string>
|
||||||
|
<string name="overview_bolusprogress_stoped">停止的</string>
|
||||||
|
<string name="occlusion">堵管的</string>
|
||||||
|
<string name="overview_bolusprogress_stop">停止</string>
|
||||||
|
<string name="overview_bolusprogress_stoppressed">停止按下</string>
|
||||||
|
<string name="waitingforpump">正在等待胰岛素泵</string>
|
||||||
|
<string name="waitingforpumpclicktorefresh">正在等待泵,点击刷新.</string>
|
||||||
|
<string name="overview_bolusprogress_goingtodeliver" formatted="false">将要输注 %.2fU</string>
|
||||||
|
<string name="objectives_0_objective">设置虚拟泵,并且监控,分析基础率和比值</string>
|
||||||
|
<string name="objectives_0_gate">核实确认可以从Nightscout上收到血糖, 并且泵的胰岛素注射数据上传了</string>
|
||||||
|
<string name="objectives_1_objective">开始开环模式(Open Loop)</string>
|
||||||
|
<string name="objectives_1_gate">在开环模式下运行几天,并在手机上手动制定很多次临时基础率</string>
|
||||||
|
<string name="objectives_2_objective">理解你的开环,包括它的临时基础率调整建议</string>
|
||||||
|
<string name="objectives_2_gate">基于以上的经验,决定适合自己的最大基础率,在泵和属性上设置</string>
|
||||||
|
<string name="objectives_3_objective">开始闭环模式,低血糖自动暂停</string>
|
||||||
|
<string name="objectives_3_gate">在闭环模式下运行,设置最大IOB = 0 运行几天确保没有太多的低血糖事件</string>
|
||||||
|
<string name="objectives_4_objective">优化闭环,逐渐增加最大IOB,并逐渐降低目标血糖值</string>
|
||||||
|
<string name="objectives_4_gate">运行几天,至少一个晚上没有低血糖报警,然后才可以继续调低目标血糖</string>
|
||||||
|
<string name="objectives_5_objective">如果需要的话,调整基础率和比值,然后再启用auto-sense</string>
|
||||||
|
<string name="objectives_5_gate">一个星期成功的白天闭环,常规的碳水化合物摄入</string>
|
||||||
|
<string name="objectives_6_objective">启用额外的功能以供白天使用,例如用餐助手(meal assist)</string>
|
||||||
|
<string name="objectives_7_objective">启用额外的功能以供白天使用, 例如微型大剂量 SMB</string>
|
||||||
|
<string name="youareonallowedlimit">你达到了允许的极限</string>
|
||||||
|
<string name="noprofileselected">没有指定配置文件</string>
|
||||||
|
<string name="smscommunicator_loophasbeendisabled">闭环已经被禁用</string>
|
||||||
|
<string name="smscommunicator_loophasbeenenabled">闭环已经被启用</string>
|
||||||
|
<string name="smscommunicator_loopisdisabled">禁用闭环</string>
|
||||||
|
<string name="smscommunicator_loopisenabled">启用闭环</string>
|
||||||
|
<string name="openapsma_valuelimitedto">%1$.2f 仅限于 %2$.2f</string>
|
||||||
|
<string name="openapsma_valueoutofrange" formatted="false">数值 %s 超出限制</string>
|
||||||
|
<string name="smscommunicator_remotebasalnotallowed">远程基础率设置没有被允许</string>
|
||||||
|
<string name="smscommunicator_remotecommandnotallowed">远程命令没有被允许</string>
|
||||||
|
<string name="smscommunicator_basalreplywithcode">开始基础率 %1$.2fU/h 请回复如下代码 %2$s</string>
|
||||||
|
<string name="smscommunicator_suspendreplywithcode">暂停闭环 %1$d 分钟,请回复 %2$s</string>
|
||||||
|
<string name="smscommunicator_tempbasalset">临时基础率 %1$.2fU/h for %2$d 分钟,启用成功</string>
|
||||||
|
<string name="smscommunicator_tempbasalfailed">临时基础率启用失败</string>
|
||||||
|
<string name="smscommunicator_basalstopreplywithcode" formatted="false">为了停止现在的临时基础率请回复 %s</string>
|
||||||
|
<string name="smscommunicator_tempbasalcanceled">临时基础率取消了</string>
|
||||||
|
<string name="smscommunicator_tempbasalcancelfailed">临时基础率取消失败</string>
|
||||||
|
<string name="smscommunicator_unknowncommand">未知命令或者错误的回复</string>
|
||||||
|
|
||||||
|
<string name="quickwizard">快速向导</string>
|
||||||
|
<string name="quickwizardsettings">快速向导设置</string>
|
||||||
|
<string name="overview_editquickwizard_buttontext">按钮文本:</string>
|
||||||
|
<string name="overview_editquickwizard_carbs">碳水化合物:</string>
|
||||||
|
<string name="overview_editquickwizard_valid">有效:</string>
|
||||||
|
<string name="overview_editquickwizardlistactivity_add">增加</string>
|
||||||
|
<string name="overview_quickwizard_item_edit_button">编辑</string>
|
||||||
|
<string name="overview_quickwizard_item_remove_button">删除</string>
|
||||||
|
<string name="mealbolus">用餐</string>
|
||||||
|
<string name="correctionbous">矫正</string>
|
||||||
|
<string name="ko_lang">Korean</string>
|
||||||
|
<string name="actions">手动输注</string>
|
||||||
|
<string name="androidaps_start">AndroidAPS 启动了</string>
|
||||||
|
<string name="ns_upload_only">只上传到NS服务器 (禁用同步)</string>
|
||||||
|
<string name="ns_upload_only_summary">只上传给NS服务器,对血糖结果没有影响除非选择了本地血糖来源,例如 xDrip. 对配置文件没有影响当选择NS-配置文件时.</string>
|
||||||
|
<string name="pumpNotInitialized">胰岛素泵没有初始化</string>
|
||||||
|
<string name="pumpNotInitializedProfileNotSet">泵没有初始化,配置文件没有设置!</string>
|
||||||
|
<string name="primefill">充盈</string>
|
||||||
|
<string name="fillwarning">请确认这个数量和你的储药器匹配!</string>
|
||||||
|
<string name="othersettings_title">其他</string>
|
||||||
|
<string name="fillbolus_title">Fill/Prime充盈标准的胰岛素量.</string>
|
||||||
|
<string name="button1">按钮 1</string>
|
||||||
|
<string name="button2">按钮 2</string>
|
||||||
|
<string name="button3">按钮 3</string>
|
||||||
|
<string name="percentagefactor_hint">百分比因素,用这个乘以基础率档案</string>
|
||||||
|
<string name="timeshift_hint">多少小时后配置文件将会被轮循</string>
|
||||||
|
<string name="units">单位:</string>
|
||||||
|
<string name="mgdl">mg/dl</string>
|
||||||
|
<string name="mmol">mmol/l</string>
|
||||||
|
<string name="dia">胰岛素作用持续时间DIA:</string>
|
||||||
|
<string name="target_range">目标范围:</string>
|
||||||
|
<string name="edit_base_basal">编辑 Base-Basal:</string>
|
||||||
|
<string name="edit_base_isf">编辑 Base-ISF:</string>
|
||||||
|
<string name="edit_base_ic">编辑 Base-IC:</string>
|
||||||
|
<string name="base_profile_label">基础率配置文件:</string>
|
||||||
|
<string name="circadian_percentage_profile">CircadianPercentage配置文件</string>
|
||||||
|
<string name="prefs_range_title">视觉范围</string>
|
||||||
|
<string name="prefs_range_summary">在智能手表上的图标上的高值和低值标记</string>
|
||||||
|
<string name="low_mark">低值标记</string>
|
||||||
|
<string name="high_mark">高值标记</string>
|
||||||
|
<string name="wear">手表</string>
|
||||||
|
<string name="resend_all_data">重新发送所有数据</string>
|
||||||
|
<string name="open_settings_on_wear">在手表上打开设置</string>
|
||||||
|
<string name="pumperror">胰岛素泵错误</string>
|
||||||
|
<string name="lowbattery">泵电池电量低</string>
|
||||||
|
<string name="pumpshutdown">胰岛素泵关机</string>
|
||||||
|
<string name="batterydischarged">胰岛素泵电池被卸下来了</string>
|
||||||
|
<string name="danarkoreanpump">DanaR 韩文版</string>
|
||||||
|
<string name="basal_rate">基础率:</string>
|
||||||
|
<string name="profile_set_failed">设置基础率配置文件失败</string>
|
||||||
|
<string name="profile_set_ok">泵上的基础率配置文件更新了</string>
|
||||||
|
<string name="danar_disableeasymode">在泵上禁用EasyUI模式</string>
|
||||||
|
<string name="danar_enableextendedbolus">在泵上启用扩展大剂量</string>
|
||||||
|
<string name="danar_switchtouhmode">在泵上改变模式 从 U/天 改为 U/小时 </string>
|
||||||
|
<string name="basalvaluebelowminimum">基础值小于最小值. 配置文件没有设定!</string>
|
||||||
|
<string name="sms_actualbg">血糖:</string>
|
||||||
|
<string name="sms_lastbg">上一次血糖值:</string>
|
||||||
|
<string name="mdi">MDI</string>
|
||||||
|
<string name="MM640g">MM640g</string>
|
||||||
|
<string name="ongoingnotificaction">持续通知</string>
|
||||||
|
<string name="old_data">旧的数据</string>
|
||||||
|
<string name="minago">%d分钟以前</string>
|
||||||
|
<string name="sms_minago">%d分钟以前</string>
|
||||||
|
<string name="localprofile">本地配置文件</string>
|
||||||
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
|
<string name="short_avgdelta">短 平均增量</string>
|
||||||
|
<string name="long_avgdelta">长 平均增量</string>
|
||||||
|
<string name="array_of_elements">Array of %1$d elements.\nActual value:</string>
|
||||||
|
<string name="openapsma_autosensdata_label">autosens</string>
|
||||||
|
<string name="openapsma_scriptdebugdata_label">脚本调试</string>
|
||||||
|
<string name="openapsama_useautosens">使用 AMA autosens功能</string>
|
||||||
|
<string name="refresheventsfromnightscout">从NS服务器刷新事件</string>
|
||||||
|
<string name="eatingsoon">过会吃饭</string>
|
||||||
|
<string name="activity">活动</string>
|
||||||
|
<string name="removerecord">删除记录:</string>
|
||||||
|
<string name="danar_stats">DanaR 状态</string>
|
||||||
|
<string name="danar_stats_cumulative_tdd">累积的每日胰岛素输注的总量</string>
|
||||||
|
<string name="danar_stats_expweight">日输注总量指数加权</string>
|
||||||
|
<string name="danar_stats_basalrate">基础率</string>
|
||||||
|
<string name="danar_stats_bolus">大剂量</string>
|
||||||
|
<string name="danar_stats_tdd">日胰岛素总量</string>
|
||||||
|
<string name="danar_stats_date">日期</string>
|
||||||
|
<string name="danar_stats_ratio">比例</string>
|
||||||
|
<string name="danar_stats_amount_days"># 天</string>
|
||||||
|
<string name="danar_stats_weight">权重weight</string>
|
||||||
|
<string name="danar_stats_warning_Message">如果使用大剂量充盈功能,这个数据可能不准确!</string>
|
||||||
|
<string name="danar_stats_olddata_Message">数据旧了,请按 “重新加载” 按钮"</string>
|
||||||
|
<string name="danar_stats_tbb">基础率总量</string>
|
||||||
|
<string name="danar_stats_tbb2">基础率总量* 2</string>
|
||||||
|
<string name="initializing">正在初始化...</string>
|
||||||
|
<string name="actions_shortname">手动输注</string>
|
||||||
|
<string name="configbuilder_shortname">配置</string>
|
||||||
|
<string name="loop_shortname">闭环</string>
|
||||||
|
<string name="simpleprofile_shortname">简单配置文件</string>
|
||||||
|
<string name="oaps_shortname">OAPS</string>
|
||||||
|
<string name="temptargetrange_shortname">临时目标</string>
|
||||||
|
<string name="localprofile_shortname">本地配置文件</string>
|
||||||
|
<string name="danarpump_shortname">DANA泵</string>
|
||||||
|
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||||
|
<string name="tempbasals_shortname">临基</string>
|
||||||
|
<string name="overview_shortname">主页</string>
|
||||||
|
<string name="virtualpump_shortname">虚拟泵</string>
|
||||||
|
<string name="profileviewer_shortname">NS配置文件</string>
|
||||||
|
<string name="treatments_shortname">治疗</string>
|
||||||
|
<string name="careportal_shortname">记录</string>
|
||||||
|
<string name="objectives_shortname">目的</string>
|
||||||
|
<string name="wear_shortname">手表</string>
|
||||||
|
<string name="smscommunicator_shortname">手机</string>
|
||||||
|
<string name="short_tabtitles">标题名称缩写</string>
|
||||||
|
<string name="prefs_delta_title">增量设置</string>
|
||||||
|
<string name="always_use_shortavg">总是使用短时间的平均增量代替简单增量</string>
|
||||||
|
<string name="always_use_shortavg_summary">当数据来自没有过滤的源头时,例如 xDrip 偶尔出现噪音数据.</string>
|
||||||
|
<string name="advancedsettings_title">高级设置</string>
|
||||||
|
<string name="danar_model">模块: %1$02X 协议: %2$02X 代码: %3$02X</string>
|
||||||
|
<string name="profile">Profile</string>
|
||||||
|
<string name="openapsama_current_basal_safety_multiplier" translatable="false">current_basal_safety_multiplier</string>
|
||||||
|
<string name="openapsama_current_basal_safety_multiplier_summary">Default value: 4 This is the other half of the key OpenAPS safety caps, and the other half of “3x max daily; 4x current” of the safety caps. This means your basal, regardless of max basal set on your pump, cannot be any higher than this number times the current level of your basal. This is to prevent people from getting into dangerous territory by setting excessively high max basals before understanding how the algorithm works. Again, the default is 4x; most people will never need to adjust this and are instead more likely to need to adjust other settings if they feel like they are “running into” this safety cap.</string>
|
||||||
|
<string name="openapsama_autosens_max" translatable="false">autosens_max</string>
|
||||||
|
<string name="openapsama_autosens_max_summary">Default value: 1.2\nThis is a multiplier cap for autosens (and soon autotune) to set a 20% max limit on how high the autosens ratio can be, which in turn determines how high autosens can adjust basals, how low it can adjust ISF, and how low it can set the BG target.</string>
|
||||||
|
<string name="openapsama_autosens_min" translatable="false">autosens_min</string>
|
||||||
|
<string name="openapsama_autosens_min_summary">Default value: 0.7\nThe other side of the autosens safety limits, putting a cap on how low autosens can adjust basals, and how high it can adjust ISF and BG targets.</string>
|
||||||
|
<string name="openapsama_autosens_adjusttargets" translatable="false">autosens_adjust_targets</string>
|
||||||
|
<string name="openapsama_autosens_adjusttargets_summary">Default value: true\nThis is used to allow autosens to adjust BG targets, in addition to ISF and basals.</string>
|
||||||
|
<string name="openapsama_bolussnooze_dia_divisor" translatable="false">bolussnooze_dia_divisor</string>
|
||||||
|
<string name="openapsama_bolussnooze_dia_divisor_summary">Default value: 2\nBolus snooze is enacted after you do a meal bolus, so the loop won’t counteract with low temps when you’ve just eaten. The example here and default is 2; so a 3 hour DIA means that bolus snooze will be gradually phased out over 1.5 hours (3DIA/2).</string>
|
||||||
|
<string name="openapsama_min_5m_carbimpact" translatable="false">min_5m_carbimpact</string>
|
||||||
|
<string name="openapsama_min_5m_carbimpact_summary">Default value: 3.0 This is a setting for default carb absorption impact per 5 minutes. The default is an expected 3mg/dl/5min. This affects how fast COB are decayed, and how much carb absorption is assumed in calculating future predicted BG, when BG is falling more than expected, or not rising as much as expected.</string>
|
||||||
|
<string name="openapsama_link_to_preferncejson_doc_txt">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.</string>
|
||||||
|
<string name="openapsama_link_to_preferncejson_doc" translatable="false">http://openaps.readthedocs.io/en/latest/docs/walkthrough/phase-3/beyond-low-glucose-suspend.html</string>
|
||||||
|
<string name="error_only_numeric_digits_allowed">只允许输入数字.</string>
|
||||||
|
<string name="error_only_numeric_digits_range_allowed">只有数字范围 %1$s - %2$s 是被允许的.</string>
|
||||||
|
<string name="error_field_must_not_be_empty">这个区域不能为空</string>
|
||||||
|
<string name="error_phone_not_valid">手机号码不合规</string>
|
||||||
|
<string name="smscommunicator_invalidphonennumber">手机号码不合规</string>
|
||||||
|
<string name="copy_to_clipboard">拷贝到剪切板</string>
|
||||||
|
<string name="copied_to_clipboard">已经拷贝到剪切板</string>
|
||||||
|
<string name="nav_show_logcat">显示日志</string>
|
||||||
|
<string name="overview_calibration">校准</string>
|
||||||
|
<string name="overview_calibration_bg_label">校准</string>
|
||||||
|
<string name="send_calibration" formatted="false">发送校准值 %.1f 到 xDrip?</string>
|
||||||
|
<string name="xdripnotinstalled">xDrip+ 没有安装</string>
|
||||||
|
<string name="calibrationsent">校准发送到 xDrip</string>
|
||||||
|
<string name="smscommunicator_remotecalibrationnotallowed">远程校准没有被允许</string>
|
||||||
|
<string name="smscommunicator_calibrationsent">校准已经发送。必须在xDrip上启用相关选项.</string>
|
||||||
|
<string name="smscommunicator_calibrationfailed">xDrip没有收到校准,校准失败</string>
|
||||||
|
<string name="dont_show_again">不要再显示</string>
|
||||||
|
<string name="pumpsuspendedclicktorefresh">泵暂停了. 点击刷新状态</string>
|
||||||
|
<string name="pumpsuspended">胰岛素泵暂停</string>
|
||||||
|
<string name="gettingpumpstatus">正在获取泵的状态</string>
|
||||||
|
<string name="settingtempbasal">设定临时基础率</string>
|
||||||
|
<string name="stoppingtempbasal">停止临时基础率</string>
|
||||||
|
<string name="settingextendedbolus">设置扩展大剂量</string>
|
||||||
|
<string name="stoppingextendedbolus">停止扩展大剂量</string>
|
||||||
|
<string name="updatingbasalrates">正在更新基础率</string>
|
||||||
|
<string name="disconnecting">正在断开连接</string>
|
||||||
|
<string name="executing">正在执行</string>
|
||||||
|
<string name="virtualpump_settings">虚拟泵设置</string>
|
||||||
|
<string name="virtualpump_uploadstatus_title">上传状态到 NS服务器</string>
|
||||||
|
<string name="wrongpassword">密码错误</string>
|
||||||
|
<string name="settings_password">设置密码</string>
|
||||||
|
<string name="unlock_settings">解锁设置</string>
|
||||||
|
<string name="approachingdailylimit">正在接近胰岛素每日总量极限</string>
|
||||||
|
<string name="nsclientinternal">NS客户端</string>
|
||||||
|
<string name="nsclientinternal_shortname">NS客户端</string>
|
||||||
|
<string name="nsclientinternal_url">URL:</string>
|
||||||
|
<string name="nsclientinternal_autoscroll">自动滚动</string>
|
||||||
|
<string name="restart">重启</string>
|
||||||
|
<string name="nsclientinternal_title">NS客户端</string>
|
||||||
|
<string name="nsclientinternal_url_title">Nightscout 网址</string>
|
||||||
|
<string name="nsclientinternal_url_dialogmessage">输入 Nightscout URL</string>
|
||||||
|
<string name="nsclientinternal_secret_title">NS API 密钥</string>
|
||||||
|
<string name="nsclientinternal_secret_dialogtitle">NS API 密钥</string>
|
||||||
|
<string name="nsclientinternal_secret_dialogmessage">输入 NS API 密钥 (最小12个字符)</string>
|
||||||
|
<string name="nsclientinternal_devicename_title">设备名称</string>
|
||||||
|
<string name="nsclientinternal_devicename_dialogtitle">输入设备名称</string>
|
||||||
|
<string name="nsclientinternal_devicename_dialogmessage">它将会用在输入者区域</string>
|
||||||
|
<string name="deliver_now">正在输注</string>
|
||||||
|
<string name="clear_queue">清除队列</string>
|
||||||
|
<string name="show_queue">显示队列</string>
|
||||||
|
<string name="queue">队列:</string>
|
||||||
|
<string name="status">状态:</string>
|
||||||
|
<string name="paused">暂停</string>
|
||||||
|
<string name="key_nsclientinternal_url" translatable="false">nsclientinternal_url</string>
|
||||||
|
<string name="key_nsclientinternal_api_secret" translatable="false">nsclientinternal_api_secret</string>
|
||||||
|
<string name="key_danar_bt_name" translatable="false">danar_bt_name</string>
|
||||||
|
<string name="key_danar_password" translatable="false">danar_password</string>
|
||||||
|
<string name="key_danar_useextended" translatable="false">danar_useextended</string>
|
||||||
|
<string name="key_danar_visualizeextendedaspercentage" translatable="false">danar_visualizeextendedaspercentage"</string>
|
||||||
|
<string name="key_danarprofile_dia" translatable="false">danarprofile_dia</string>
|
||||||
|
<string name="clearlog">清楚日志</string>
|
||||||
|
<string name="key_nsclientinternal_autoscroll" translatable="false">nsclientinternal_autoscroll</string>
|
||||||
|
<string name="key_nsclientinternal_paused" translatable="false">nsclientinternal_paused</string>
|
||||||
|
<string name="nowritepermission">NS客户端 没有写权限. API密钥是否错了?</string>
|
||||||
|
<string name="wear_settings">手表设置</string>
|
||||||
|
<string name="wear_detailedIOB_title">显示详细的活性胰岛素IOB</string>
|
||||||
|
<string name="wear_detailedIOB_summary">在手表的表盘上分开显示大剂量活性胰岛素IOB和基础率活性胰岛素IOB</string>
|
||||||
|
<string name="nosuccess">不成功,请检查手机</string>
|
||||||
|
<string name="notavailable">不可用</string>
|
||||||
|
<string name="key_smscommunicator_allowednumbers" translatable="false">smscommunicator_allowednumbers</string>
|
||||||
|
<string name="key_smscommunicator_remotecommandsallowed" translatable="false">smscommunicator_remotecommandsallowed</string>
|
||||||
|
<string name="patientage">病人年龄</string>
|
||||||
|
<string name="child">儿童</string>
|
||||||
|
<string name="teenage">青少年</string>
|
||||||
|
<string name="adult">成人</string>
|
||||||
|
<string name="key_age" translatable="false">age</string>
|
||||||
|
<string name="key_child" translatable="false">child</string>
|
||||||
|
<string name="key_teenage" translatable="false">teenage</string>
|
||||||
|
<string name="key_adult" translatable="false">adult</string>
|
||||||
|
<string name="patientage_summary">请选择病人的年龄以设置安全参数</string>
|
||||||
|
<string name="key_i_understand" translatable="false">I_understand</string>
|
||||||
|
<string name="Glimp">Glimp</string>
|
||||||
|
<string name="batteryoptimalizationerror">设备看上去不支持电池优化白名单!</string>
|
||||||
|
<string name="pleaseallowpermission">请允许权限</string>
|
||||||
|
<string name="needwhitelisting">%s 为了达到适当的性能请将android APS加入电池优化白名单</string>
|
||||||
|
<string name="loopsuspended">闭环暂停</string>
|
||||||
|
<string name="loopsuspendedfor">暂停 (%1$d m)</string>
|
||||||
|
<string name="loopsuperbolusfor">超级大剂量 (%1$d m)</string>
|
||||||
|
<string name="loopmenu">闭环菜单</string>
|
||||||
|
<string name="suspendloopfor1h">暂停闭环 1小时</string>
|
||||||
|
<string name="suspendloopfor2h">暂停闭环 2小时</string>
|
||||||
|
<string name="suspendloopfor3h">暂停闭环 3小时</string>
|
||||||
|
<string name="suspendloopfor10h">暂停闭环10 小时</string>
|
||||||
|
<string name="disconnectpumpfor30m">与泵断开连接 30 分钟</string>
|
||||||
|
<string name="disconnectpumpfor1h">与泵断开连接 1 小时</string>
|
||||||
|
<string name="disconnectpumpfor2h">与泵断开连接 2 小时</string>
|
||||||
|
<string name="disconnectpumpfor3h">与泵断开连接 3 小时</string>
|
||||||
|
<string name="disconnectpumpfor10h">与泵断开连接10 小时</string>
|
||||||
|
<string name="resume">恢复</string>
|
||||||
|
<string name="smscommunicator_wrongduration">错误的持续时间</string>
|
||||||
|
<string name="smscommunicator_loopsuspended">闭环已经暂停</string>
|
||||||
|
<string name="smscommunicator_loopresumed">闭环已经恢复</string>
|
||||||
|
<string name="treatments_wizard_bgtrend_label">15分钟 趋势</string>
|
||||||
|
<string name="treatments_wizard_cob_label">活性碳水COB</string>
|
||||||
|
<string name="superbolus">超级大剂量</string>
|
||||||
|
<string name="ns_logappstartedevent">记录 app 启动事件到NS服务器</string>
|
||||||
|
<string name="key_ns_logappstartedevent" translatable="false">ns_logappstartedevent</string>
|
||||||
|
<string name="key_ns_localbroadcasts" translatable="false">nsclient_localbroadcasts</string>
|
||||||
|
<string name="restartingapp">正在退出程序应用设置.</string>
|
||||||
|
<string name="danarv2pump">DanaRv2</string>
|
||||||
|
<string name="configbuilder_insulin">胰岛素</string>
|
||||||
|
<string name="fastactinginsulin">快速生效胰岛素</string>
|
||||||
|
<string name="fastactinginsulincomment">门冬胰岛素 诺和锐, 优泌乐</string>
|
||||||
|
<string name="ultrafastactinginsulincomment">Fiasp超速效</string>
|
||||||
|
<string name="insulin_shortname">胰岛素</string>
|
||||||
|
<string name="fastactinginsulinprolonged">快速生效胰岛素延长</string>
|
||||||
|
<string name="key_usesuperbolus" translatable="false">key_usersuperbolus</string>
|
||||||
|
<string name="enablesuperbolus">在向导中启用超级大剂量</string>
|
||||||
|
<string name="enablesuperbolus_summary">启用超级大剂量向导功能。不要启用这个功能除非你学会了它是做什么用的。它可能会导致胰岛素注射过量!</string>
|
||||||
|
<string name="iob">活性胰岛素IOB</string>
|
||||||
|
<string name="cob">活性碳水COB</string>
|
||||||
|
<string name="predictionshortlabel">预测</string>
|
||||||
|
<string name="basalshortlabel">基础率</string>
|
||||||
|
<string name="virtualpump_firmware_label">固件</string>
|
||||||
|
<string name="virtualpump_lastconnection_label">上次连接</string>
|
||||||
|
<string name="danar_bluetooth_status">蓝牙状态</string>
|
||||||
|
<string name="nav_about">关于</string>
|
||||||
|
<string name="smscommunicator_missingsmspermission">缺少 SMS 权限</string>
|
||||||
|
<string name="dev">DEV</string>
|
||||||
|
<string name="xdripstatus_settings">xDrip 状态 (手表)</string>
|
||||||
|
<string name="xdripstatus">xDrip 状态线 (手表)</string>
|
||||||
|
<string name="xdripstatus_shortname">xds</string>
|
||||||
|
<string name="wear_showbgi_title">显示 BGI</string>
|
||||||
|
<string name="wear_showbgi_summary">添加 BGI 到状态线</string>
|
||||||
|
<string name="ns_noupload">不上传到 NS服务器</string>
|
||||||
|
<string name="ns_noupload_summary">所有发送到NS服务器的数据被丢掉,. AAPS 连接了 NS服务器,但是没有任何配置被改变 </string>
|
||||||
|
<string name="key_ns_upload_only" translatable="false">ns_upload_only</string>
|
||||||
|
<string name="key_ns_noupload" translatable="false">ns_noupload</string>
|
||||||
|
<string name="basal_step">基础率步值</string>
|
||||||
|
<string name="bolus_step">大剂量步值</string>
|
||||||
|
<string name="extendedbolus">扩展大剂量</string>
|
||||||
|
<string name="temptarget">临时目标</string>
|
||||||
|
<string name="overview_extendedbolus_cancel_button">取消扩展大剂量</string>
|
||||||
|
<string name="careportal_sensorage_label">传感器使用时间</string>
|
||||||
|
<string name="careportal_canulaage_label">管路使用时间</string>
|
||||||
|
<string name="careportal_insulinage_label">胰岛素使用时间</string>
|
||||||
|
<string name="hours">小时</string>
|
||||||
|
<string name="overview_newtempbasal_basaltype_label">Basal type</string>
|
||||||
|
<string name="isfmissing">ISF 胰岛素敏感因子在档案中没有设置. 使用缺省值.</string>
|
||||||
|
<string name="icmissing">IC 胰岛素碳水化合物比 在档案中没有设置. 使用缺省值.</string>
|
||||||
|
<string name="basalmissing">基础率在档案中没有设置. 使用缺省值.</string>
|
||||||
|
<string name="targetmissing">目标血糖在档案中没有设置. 使用缺省值.</string>
|
||||||
|
<string name="invalidprofile">不合法的配置文件!!!</string>
|
||||||
|
<string name="profileswitch">配置文件切换</string>
|
||||||
|
<string name="careportal_pbage_label">泵电池使用时间</string>
|
||||||
|
<string name="careportal_pumpbatterychange">泵电池更换</string>
|
||||||
|
<string name="ns_alarmoptions">报警选项</string>
|
||||||
|
<string name="key_nsalarm_urgent_high" translatable="false">nsalarm_urgent_high</string>
|
||||||
|
<string name="key_nsalarm_high" translatable="false">nsalarm_high</string>
|
||||||
|
<string name="key_nsalarm_low" translatable="false">nsalarm_low</string>
|
||||||
|
<string name="key_nsalarm_urgent_low" translatable="false">nsalarm_urgent_low</string>
|
||||||
|
<string name="key_nsalarm_staledata" translatable="false">nsalarm_staledata</string>
|
||||||
|
<string name="key_nsalarm_urgent_staledata" translatable="false">nsalarm_urgent_staledata</string>
|
||||||
|
<string name="key_nsalarm_staledatavalue" translatable="false">nsalarm_staledatavalue</string>
|
||||||
|
<string name="key_nsalarm_urgent_staledatavalue" translatable="false">nsalarm_urgent_staledatavalue</string>
|
||||||
|
<string name="nsalarm_urgenthigh">紧急高</string>
|
||||||
|
<string name="nsalarm_high">高</string>
|
||||||
|
<string name="nsalarm_low">低</string>
|
||||||
|
<string name="nsalarm_urgentlow">紧急低</string>
|
||||||
|
<string name="nsalarm_summary" formatted="false">当前设置为 %f</string>
|
||||||
|
<string name="nsalarm_staledata">陈旧数据</string>
|
||||||
|
<string name="nsalarm_urgentstaledata">紧急陈旧数据</string>
|
||||||
|
<string name="nsalarm_staledatavalue_label">陈旧数据界定值 [分钟]</string>
|
||||||
|
<string name="nsalarm_urgent_staledatavalue_label">紧急陈旧数据界定值 [分钟]</string>
|
||||||
|
<string name="openapsama_autosens_period">autosens 间隔时间 [小时]</string>
|
||||||
|
<string name="openapsama_autosens_period_summary">在过去一段时间敏感度检测的总小时数 (排除碳水化合物吸收时间)</string>
|
||||||
|
<string name="key_openapsama_autosens_period" translatable="false">openapsama_autosens_period</string>
|
||||||
|
<string name="key_nsclient_localbroadcasts" translatable="false">nsclient_localbroadcasts</string>
|
||||||
|
<string name="ratio_short">SEN</string>
|
||||||
|
<string name="key_do_not_track_profile_switch" translatable="false">do_not_track_profile_switch</string>
|
||||||
|
<string name="do_not_track_profile_switch">忽略配置文件切换事件</string>
|
||||||
|
<string name="do_not_track_profile_switch_summary">所有的配置文件切换事件都将被忽略,活动的配置文件总是被使用</string>
|
||||||
|
<string name="pump">胰岛素泵</string>
|
||||||
|
<string name="openaps">OpenAPS</string>
|
||||||
|
<string name="device">设备</string>
|
||||||
|
<string name="uploader">上传</string>
|
||||||
|
<string name="configbuilder_sensitivity">敏感度检测</string>
|
||||||
|
<string name="sensitivity_shortname">敏感度</string>
|
||||||
|
<string name="sensitivityoref0">敏感度 Oref0</string>
|
||||||
|
<string name="sensitivityaaps">敏感度 AAPS</string>
|
||||||
|
<string name="absorptionsettings_title">食物消化参数设置</string>
|
||||||
|
<string name="key_absorption_maxtime" translatable="false">absorption_maxtime</string>
|
||||||
|
<string name="absorption_maxtime_title">食物最大消化 时间 [小时]</string>
|
||||||
|
<string name="absorption_maxtime_summary">膳食中的所有化合物将被消化掉的时间 小时</string>
|
||||||
|
<string name="key_rangetodisplay" translatable="false">rangetodisplay</string>
|
||||||
|
<string name="danar_visualizeextendedaspercentage_title">设想扩展大剂量为 %</string>
|
||||||
|
<string name="careportal_sensorage_label_short">SAGE</string>
|
||||||
|
<string name="careportal_insulinage_label_short">IAGE</string>
|
||||||
|
<string name="careportal_canulaage_label_short">CAGE</string>
|
||||||
|
<string name="careportal_pbage_label_short">PBAGE</string>
|
||||||
|
<string name="openaps_short">OAPS</string>
|
||||||
|
<string name="uploader_short">UPLD</string>
|
||||||
|
<string name="basal_short">基础率</string>
|
||||||
|
<string name="virtualpump_extendedbolus_label_short">退出</string>
|
||||||
|
<string name="lock_screen">锁定屏幕</string>
|
||||||
|
<string name="lock_screen_short">锁定</string>
|
||||||
|
<string name="sensitivity_warning">如果打开了自动检测功能,一定要记着输入所有摄入的碳水化合物,否则碳水化合物的偏差将随着敏感度的变化而被识别为错误 !!</string>
|
||||||
|
<string name="sensitivityweightedaverage">敏感度加权平均值</string>
|
||||||
|
<string name="mdtp_ok">确定</string>
|
||||||
|
<string name="mdtp_cancel">取消</string>
|
||||||
|
<string name="cpp_sync_setting_missing">需要激活同步到泵这个选项,如果想发送数值到泵上!</string>
|
||||||
|
<string name="cpp_notloadedplugins">不是所有配置文件都被加载了!</string>
|
||||||
|
<string name="cpp_valuesnotstored">值没有存储!</string>
|
||||||
|
<string name="wear_overviewnotifications">通知概述</string>
|
||||||
|
<string name="wear_overviewnotifications_summary">在手表上显示通知概览信息.</string>
|
||||||
|
<string name="combopump" translatable="false">Accu-Chek Combo</string>
|
||||||
|
<string name="combopump_shortname" translatable="false">COMBO</string>
|
||||||
|
<string name="ns_localbroadcasts">启用广播道其他apps (例如 xDrip).</string>
|
||||||
|
<string name="ns_localbroadcasts_title">启用本地广播.</string>
|
||||||
|
<string name="careportal_activity_label">活动 & 反馈</string>
|
||||||
|
<string name="careportal_carbsandbolus_label">碳水化合物 & 大剂量</string>
|
||||||
|
<string name="careportal_cgm_label">CGM & OPENAPS</string>
|
||||||
|
<string name="careportal_pump_label">泵</string>
|
||||||
|
<string name="overview_newtempbasal_basalabsolute">基础率值 [U/小时]</string>
|
||||||
|
<string name="careportal_newnstreatment_duration_min_label">持续时间 [分钟]</string>
|
||||||
|
<string name="key_insulin_oref_peak" translatable="false">insulin_oref_peak</string>
|
||||||
|
<string name="insulin_oref_peak">IOB 曲线 高峰时段</string>
|
||||||
|
<string name="insulin_peak_time">高峰时段 [分钟]</string>
|
||||||
|
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||||
|
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
|
||||||
|
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
|
||||||
|
<string name="dia_too_short">DIA of %1$s too short - using %2$s instead!</string>
|
||||||
|
<string name="activate_profile">激活配置文件</string>
|
||||||
|
<string name="date">日期</string>
|
||||||
|
<string name="invalid">不合规</string>
|
||||||
|
<string name="waitingforpairing">在泵上等待配对</string>
|
||||||
|
<string name="pairingok">配对成功</string>
|
||||||
|
<string name="pairingtimedout">配对超时</string>
|
||||||
|
<string name="pairing">正在配对</string>
|
||||||
|
<string name="key_danars_pairingkey" translatable="false">danars_paring_key_</string>
|
||||||
|
<string name="key_danars_address" translatable="false">danars_address</string>
|
||||||
|
<string name="key_danars_name" translatable="false">danars_name</string>
|
||||||
|
<string name="danars_nodeviceavailable">目前为止没有发现泵</string>
|
||||||
|
<string name="emptyreservoir">Empty reservoir</string>
|
||||||
|
<string name="bloodsugarmeasurementalert">提示测血糖报警</string>
|
||||||
|
<string name="remaininsulinalert">剩余胰岛素量报警</string>
|
||||||
|
<string name="danarspump">DanaRS泵</string>
|
||||||
|
<string name="danarspump_shortname">Dana泵</string>
|
||||||
|
<string name="selectedpump">选择泵</string>
|
||||||
|
<string name="pairpump">配对新的泵</string>
|
||||||
|
<string name="bolusspeed">大剂量速度</string>
|
||||||
|
<string name="key_danars_bolusspeed" translatable="false">danars_bolusspeed</string>
|
||||||
|
<string name="danar_setbasalstep001">将基础率步值设置为 0.01 U/小时</string>
|
||||||
|
<string name="serialnumber">序列号</string>
|
||||||
|
<string name="key_wizard_include_bg" translatable="false">wizard_include_bg</string>
|
||||||
|
<string name="key_wizard_include_cob" translatable="false">wizard_include_cob</string>
|
||||||
|
<string name="key_wizard_include_trend_bg" translatable="false">wizard_include_trend_bg</string>
|
||||||
|
<string name="key_wizard_include_bolus_iob" translatable="false">wizard_include_bolus_iob</string>
|
||||||
|
<string name="key_wizard_include_basal_iob" translatable="false">wizard_include_basal_iob</string>
|
||||||
|
<string name="careportal_newnstreatment_percentage_label">Percentage</string>
|
||||||
|
<string name="careportal_newnstreatment_timeshift_label">Time shift</string>
|
||||||
|
<string name="default_temptargets">缺省临时目标</string>
|
||||||
|
<string name="eatingsoon_duration">餐前持续时间</string>
|
||||||
|
<string name="eatingsoon_target">餐前临时目标</string>
|
||||||
|
<string name="activity_duration">运动持续时间</string>
|
||||||
|
<string name="activity_target">运动临时目标</string>
|
||||||
|
<string name="key_eatingsoon_duration" translatable="false">eatingsoon_duration</string>
|
||||||
|
<string name="key_eatingsoon_target" translatable="false">eatingsoon_target</string>
|
||||||
|
<string name="key_activity_duration" translatable="false">activity_duration</string>
|
||||||
|
<string name="key_activity_target" translatable="false">activity_target</string>
|
||||||
|
<string name="danar_history_prime">充盈</string>
|
||||||
|
<string name="gettingextendedbolusstatus">获取扩展大剂量状态</string>
|
||||||
|
<string name="gettingbolusstatus">获取大剂量状态s</string>
|
||||||
|
<string name="gettingtempbasalstatus">获取临时基础率状态</string>
|
||||||
|
<string name="gettingpumpsettings">获取泵设置</string>
|
||||||
|
<string name="gettingpumptime">获取泵时间</string>
|
||||||
|
<string name="reuse">reuse</string>
|
||||||
|
<string name="wearcontrol_title">Controls from Watch</string>
|
||||||
|
<string name="wearcontrol_summary">在手表上设置临时目标并且输入治疗.</string>
|
||||||
|
<string name="connectiontimedout">连接超时</string>
|
||||||
|
<string name="food">食物</string>
|
||||||
|
<string name="shortgramm">克</string>
|
||||||
|
<string name="none"><![CDATA[<none>]]></string>
|
||||||
|
<string name="shortkilojoul">kJ</string>
|
||||||
|
<string name="shortenergy">En</string>
|
||||||
|
<string name="shortprotein">Pr</string>
|
||||||
|
<string name="shortfat">Fat</string>
|
||||||
|
<string name="active"><![CDATA[<Active>]]></string>
|
||||||
|
<string name="waitingforestimatedbolusend">正在等待大剂量输注结束. 剩余 %1$d 秒.</string>
|
||||||
|
<string name="processinghistory">正在处理事件</string>
|
||||||
|
<string name="startingbolus">正在开始大剂量输注</string>
|
||||||
|
<string name="executingrightnow">命令正在执行</string>
|
||||||
|
<string name="pumpdrivercorrected">泵驱动正确</string>
|
||||||
|
<string name="pump_unreachable">找不到泵</string>
|
||||||
|
<string name="missed_bg_readings">血糖数据缺失</string>
|
||||||
|
<string name="key_raise_notifications_as_android_notifications" translatable="false">raise_urgent_alarms_as_android_notification</string>
|
||||||
|
<string name="raise_notifications_as_android_notifications">使用系统通知提醒和通知</string>
|
||||||
|
<string name="key_enable_pump_unreachable_alert" translatable="false">enable_pump_unreachable_alert</string>
|
||||||
|
<string name="key_enable_missed_bg_readings_alert" translatable="false">enable_missed_bg_readings</string>
|
||||||
|
<string name="localalertsettings_title">本地报警</string>
|
||||||
|
<string name="enable_missed_bg_readings_alert">当收不到血糖数据时报警</string>
|
||||||
|
<string name="enable_pump_unreachable_alert">当找不到泵时报警</string>
|
||||||
|
<string name="pump_unreachable_threshold">泵不可达阀值 [分钟]</string>
|
||||||
|
<string name="key_pump_unreachable_threshold" translatable="false">pump_unreachable_threshold</string>
|
||||||
|
<string name="key_missed_bg_readings_threshold" translatable="false">missed_bg_readings_threshold</string>
|
||||||
|
<string name="urgent_alarm">紧急报警</string>
|
||||||
|
<string name="info">信息</string>
|
||||||
|
<string name="key_btwatchdog" translatable="false">bt_watchdog</string>
|
||||||
|
<string name="key_btwatchdog_lastbark" translatable="false">bt_watchdog_last</string>
|
||||||
|
<string name="bluetooth">蓝牙</string>
|
||||||
|
<string name="btwatchdog_title">蓝牙监控狗</string>
|
||||||
|
<string name="btwatchdog_summary">如果不能连接到泵,自动关闭手机的蓝牙一秒钟。 这可能有助于蓝牙堆栈冻结的某些手机</string>
|
||||||
|
<string name="DexcomG5">DexcomG5 App (patched)</string>
|
||||||
|
<string name="dexcomg5_nsupload_title">上传血糖数据至nightsocut服务器</string>
|
||||||
|
<string name="key_dexcomg5_nsupload" translatable="false">dexcomg5_nsupload</string>
|
||||||
|
<string name="dexcomg5_upload">G5 血糖数据上传设置</string>
|
||||||
|
<string name="customapp">下载定制的软件包</string>
|
||||||
|
<string name="wear_detailed_delta_title">Show detailed delta</string>
|
||||||
|
<string name="wear_detailed_delta_summary">Show delta with one more decimal place</string>
|
||||||
|
<string name="unsupportedfirmware">此软件不支持这个泵的固件版本</string>
|
||||||
|
<string name="dexcomg5_xdripupload_title">将血糖数据发送给 xDrip+</string>
|
||||||
|
<string name="key_dexcomg5_xdripupload" translatable="false">dexcomg5_xdripupload</string>
|
||||||
|
<string name="dexcomg5_xdripupload_summary">在 xDrip+ 上选择640g/Eversense做为数据源</string>
|
||||||
|
<string name="nsclientbg">NSClient 血糖</string>
|
||||||
|
<string name="minimalbasalvaluereplaced">基础率值被泵支持的最小基础率替换了</string>
|
||||||
|
<string name="overview_editquickwizard_usebg">血糖计算</string>
|
||||||
|
<string name="overview_editquickwizard_usebolusiob">大剂量IOB计算</string>
|
||||||
|
<string name="overview_editquickwizard_usebasaliob">基础率IOB计算</string>
|
||||||
|
<string name="overview_editquickwizard_usetrend">趋势计算</string>
|
||||||
|
<string name="overview_editquickwizard_usesuperbolus">超级大剂量计算</string>
|
||||||
|
<string name="yes">是</string>
|
||||||
|
<string name="no">否</string>
|
||||||
|
<string name="positiveonly">Positive only(只正面)</string>
|
||||||
|
<string name="negativeonly">Negative only(只反面)</string>
|
||||||
|
<string name="overview_editquickwizard_usecob">COB活性碳水计算</string>
|
||||||
|
<string name="overview_editquickwizard_usetemptarget">临时目标计算</string>
|
||||||
|
<string name="loopenabled">启用闭环</string>
|
||||||
|
<string name="apsselected">选择 APS</string>
|
||||||
|
<string name="nsclienthaswritepermission">NSClient有写权限</string>
|
||||||
|
<string name="closedmodeenabled">闭环模式启用了</string>
|
||||||
|
<string name="maxiobset">合理设置最大IOB(活性胰岛素)</string>
|
||||||
|
<string name="hasbgdata">从选择的数据源可以获得血糖值</string>
|
||||||
|
<string name="basalprofilenotaligned" formatted="false">基础率值不符合规则 小时: %s</string>
|
||||||
|
<string name="zerovalueinprofile" formatted="false">不合规的配置文件: %s</string>
|
||||||
|
<string name="combo_programming_bolus">正在调用泵上的大剂量输注程序</string>
|
||||||
|
<string name="combo_refresh">刷新</string>
|
||||||
|
<string name="combo_tdds">TDDS</string>
|
||||||
|
<string name="combo_pump_state_label">状态</string>
|
||||||
|
<string name="combo_pump_activity_label">活动</string>
|
||||||
|
<string name="combo_no_pump_connection">%1$d 分钟无连接</string>
|
||||||
|
<string name="combo_tbr_remaining">%1$d%% (剩余 %2$d 分钟)</string>
|
||||||
|
<string name="combo_last_bolus">%1$.1f %2$s (%3$s)</string>
|
||||||
|
<string name="combo_pump_state_initializing">正在初始化</string>
|
||||||
|
<string name="combo_pump_state_disconnected">断开连接</string>
|
||||||
|
<string name="combo_pump_state_suspended_due_to_error">由于错误导致泵暂停了</string>
|
||||||
|
<string name="combo_pump_state_suspended_by_user">被用户暂停(Suspended)</string>
|
||||||
|
<string name="combo_pump_state_running">正在运行</string>
|
||||||
|
<string name="combo_pump_action_cancelling_tbr">正在取消临时基础率(TBR)</string>
|
||||||
|
<string name="combo_pump_action_setting_tbr">正在设置临时基础率(TBR) (%1$d%% / %2$d 分钟)</string>
|
||||||
|
<string name="combo_pump_action_bolusing">正在输注大剂量 (%.1f U)</string>
|
||||||
|
<string name="combo_pump_action_refreshing">正在刷新中</string>
|
||||||
|
<string name="combo_pump_never_connected">Never</string>
|
||||||
|
<string name="combo_pump_unsupported_operation">这个泵不支持你要求的操作</string>
|
||||||
|
<string name="combo_low_suspend_forced_notification">不安全的使用: 扩展大剂量(方波)或者双波被启用了,闭环只支持常规大剂量, 闭环已经被设置为6个小时的暂停模式(low-suspend only 6 hours). </string>
|
||||||
|
<string name="combo_force_disabled_notification">不安全的使用: 这个泵使用了和第一个不同的基础率配件文件,闭环已经被禁用,在泵上选择第一个配件文件然后刷新.</string>
|
||||||
|
<string name="bolus_frequency_exceeded">在最近2分钟内要输注相同数量的大剂量。 为了防止错误地重复打大剂量发生意外,不允许这样操作</string>
|
||||||
|
<string name="combo_pump_connected_now">现在</string>
|
||||||
|
<string name="combo_activity_reading_pump_history">正在读取泵历史</string>
|
||||||
|
<string name="danar_history">泵历史</string>
|
||||||
|
<string name="combo_pump_alerts">泵告警</string>
|
||||||
|
<string name="combo_activity_setting_basal_profile">正在设置基础率配置文件</string>
|
||||||
|
<string name="combo_pump_cartridge_low_warrning">泵储药器快没胰岛素了</string>
|
||||||
|
<string name="combo_pump_battery_low_warrning">泵电池电量低</string>
|
||||||
|
<string name="combo_is_in_error_state">泵上正在显示这个错误 E%1$d: %2$s</string>
|
||||||
|
<string name="combo_no_alert_data_note">长按这个按钮,读取泵的错误历史</string>
|
||||||
|
<string name="combo_no_tdd_data_note">长按这个按钮,读取泵的TDD历史</string>
|
||||||
|
<string name="combo_tdd_minimum">最小值: %3.1f U</string>
|
||||||
|
<string name="combo_tdd_average">平均值: %3.1f U</string>
|
||||||
|
<string name="combo_tdd_maximum">最大值: %3.1f U</string>
|
||||||
|
<string name="combo_reservoir_low">低</string>
|
||||||
|
<string name="combo_reservoir_empty">空了</string>
|
||||||
|
<string name="combo_reservoir_normal">正常</string>
|
||||||
|
<string name="combo_notification_check_time_date">泵的时间需要更新</string>
|
||||||
|
<string name="combo_history">历史</string>
|
||||||
|
<string name="combo_warning">警告</string>
|
||||||
|
<string name="combo_read_full_history_info">
|
||||||
|
长按此按钮,强行从泵上读取一个完整的历史和基础率配件文件。这通常是不需要的,因为泵的历史是连续读取的,但是如果泵的日期和时间发生了显著的变化,或者更换了泵,这是很有用的.</string>
|
||||||
|
<string name="combo_read_full_history_warning"> 这将读取泵的全部历史和状态。包括My DATA和基础利率 。如果它们不存在的话,大剂量boluse和临时基础率TBRs将被添加到治疗中。因为泵的时间不精确,所以可能导致重复输入。在正常情况下,千万不要进行这种操作,只有在特殊情况下才会用到。如果你还想这么做,长按这个按钮。警告:这可能触发一个错误,导致泵拒绝所有连接尝试,需要按下泵上的按钮来恢复,因此应该避免使用这个功能</string>
|
||||||
|
<string name="combo_read_full_history_confirmation">你真的确定要读取所有的泵数据并采取以下措施吗?</string>
|
||||||
|
<string name="combo_pump_tbr_cancelled_warrning">临时基础率取消告警被确认了</string>
|
||||||
|
<string name="combo_error_no_connection_no_bolus_delivered">找不到泵,大剂量输注失败</string>
|
||||||
|
<string name="combo_error_no_bolus_delivered">大剂量输注失败,看起来好像没有大剂量被输注。安全起见,请检查泵,避免重复输注大剂量。软件考虑安全因素,不会再自动重试大剂量输注.</string>
|
||||||
|
<string name="combo_error_partial_bolus_delivered">由于遇到一个错误,只有 %1$.2f U of the requested bolus of %2$.2f U 输注成功了. 请在泵上检查并核实,看是否需要采取适当的措施.</string>
|
||||||
|
<string name="combo_error_bolus_verification_failed">输注大剂量和核实泵的历史失败,请检查泵,如果大剂量已经输注成功,请在记录Tab里手动创建一个大剂量记录.</string>
|
||||||
|
<string name="combo_error_bolus_recovery_progress">正在从连接中断中恢复</string>
|
||||||
|
<string name="combo_reservoir_level_insufficient_for_bolus">储药器里没有足够的胰岛素可用于大剂量输注了</string>
|
||||||
|
<string name="extendedbolusdeliveryerror">扩展大剂量(方波)输注错误</string>
|
||||||
|
<string name="pump_basebasalrate">%.2f U/h</string>
|
||||||
|
<string name="combo_actvity_reading_basal_profile">正在读取基础率配置文件</string>
|
||||||
|
<string name="combo_bolus_rejected_due_to_pump_history_change"> 在进行大剂量计算后,泵的历史发生了变化。这个大剂量没有输注。如果还需要输注大剂量,请重新计算。如果需要相同量的大剂量,请等待两分钟,因为使用相同数量的大剂量在两分钟内将会被限制,以确保安全(无论是否执行)</string>
|
||||||
|
<string name="combo_error_updating_treatment_record">大剂量输注成功,但添加到治疗记录时失败。如果在最近两分钟内使用相同量的两个小大剂量,就会发生这种情况。请检查泵的历史记录和治疗条目,并使用记录标签添加丢失的条目。确保在同一分钟不要添加重复的条目.</string>
|
||||||
|
<string name="combo_high_temp_rejected_due_to_pump_history_changes">由于泵的历史事件变化了,拒绝过高的临时基础率</string>
|
||||||
|
<string name="combo_activity_checking_pump_state">正在刷新泵状态</string>
|
||||||
|
<string name="combo_warning_pump_basal_rate_changed">泵上的基础率已经改变了,一会将会更新</string>
|
||||||
|
<string name="combo_error_failure_reading_changed_basal_rate">泵上的基础率已经改变了,但是读取失败了</string>
|
||||||
|
<string name="combo_activity_checking_for_history_changes">正在检查历史事件变化</string>
|
||||||
|
<string name="combo_error_multiple_boluses_with_identical_timestamp">在同一分钟内使用相同数量的多个大剂量记录被导入的。治疗中只能增加一项记录。请手动检查泵并使用记录标签手动添加一个大剂量记录。确保创建一个和其他大剂量记录时间不重复的大剂量记录.</string>
|
||||||
|
<string name="mute">静音</string>
|
||||||
|
<string name="about_link_urls">\n\nhttp://www.androidaps.org\nhttp://www.androidaps.de (de)\n\nfacebook:\nhttp://facebook.androidaps.org\nhttp://facebook.androidaps.de (de)</string>
|
||||||
|
<string name="combo_check_date">最近的大剂量距离当前时间已经超过24小时或者日期在将来的时间,请检查泵上的日期设置是否正确.</string>
|
||||||
|
<string name="key_ns_create_announcements_from_errors">ns_create_announcements_from_errors</string>
|
||||||
|
<string name="ns_create_announcements_from_errors_title">为错误创建公告</string>
|
||||||
|
<string name="ns_create_announcements_from_errors_summary">为错误对话框和本地警报创建Nightscout通告(也可在记录>治疗标签下查看)</string>
|
||||||
|
<string name="combo_suspious_bolus_time">泵上输注大剂量的时间/日期看起来错了, 活性胰岛素IOB的量可能不正确,请检查泵的时间和日期.</string>
|
||||||
|
<string name="profileswitch_ismissing">配置文件切换缺失. 请做配置文件切换,或者在本地配置文件里点激活配置文件.</string>
|
||||||
|
</resources>
|
|
@ -44,7 +44,7 @@
|
||||||
<item>ru</item>
|
<item>ru</item>
|
||||||
<item>sv</item>
|
<item>sv</item>
|
||||||
<item>pl</item>
|
<item>pl</item>
|
||||||
<item>zh-rCN</item>
|
<item>zh</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="ageArray">
|
<string-array name="ageArray">
|
||||||
|
|
|
@ -313,7 +313,7 @@
|
||||||
<string name="danar_glucose">glucose</string>
|
<string name="danar_glucose">glucose</string>
|
||||||
<string name="danar_carbohydrate">carbohydrate</string>
|
<string name="danar_carbohydrate">carbohydrate</string>
|
||||||
<string name="danar_alarm">alarm</string>
|
<string name="danar_alarm">alarm</string>
|
||||||
<string name="danar_totaluploaded" formatted="false">Total %d records uploaded</string>
|
<string name="danar_totaluploaded">Total %1$d records uploaded</string>
|
||||||
<string name="danar_sbolus">S bolus</string>
|
<string name="danar_sbolus">S bolus</string>
|
||||||
<string name="danar_history_alarm">Alarms</string>
|
<string name="danar_history_alarm">Alarms</string>
|
||||||
<string name="danar_history_basalhours">Basal Hours</string>
|
<string name="danar_history_basalhours">Basal Hours</string>
|
||||||
|
@ -324,7 +324,7 @@
|
||||||
<string name="danar_history_glucose">Glucose</string>
|
<string name="danar_history_glucose">Glucose</string>
|
||||||
<string name="danar_history_refill">Refill</string>
|
<string name="danar_history_refill">Refill</string>
|
||||||
<string name="danar_history_syspend">Suspend</string>
|
<string name="danar_history_syspend">Suspend</string>
|
||||||
<string name="danar_history_connectingfor" formatted="false">Connecting for %d s</string>
|
<string name="danar_history_connectingfor">Connecting for %1$d s</string>
|
||||||
<string name="danar_password_title">Pump password</string>
|
<string name="danar_password_title">Pump password</string>
|
||||||
<string name="wrongpumppassword">Wrong pump password!</string>
|
<string name="wrongpumppassword">Wrong pump password!</string>
|
||||||
<string name="pumpbusy">Pump is busy</string>
|
<string name="pumpbusy">Pump is busy</string>
|
||||||
|
@ -425,13 +425,13 @@
|
||||||
<string name="MM640g">MM640g</string>
|
<string name="MM640g">MM640g</string>
|
||||||
<string name="ongoingnotificaction">Ongoing Notification</string>
|
<string name="ongoingnotificaction">Ongoing Notification</string>
|
||||||
<string name="old_data">OLD DATA</string>
|
<string name="old_data">OLD DATA</string>
|
||||||
<string name="minago">%d min ago</string>
|
<string name="minago">%1$d min ago</string>
|
||||||
<string name="sms_minago">%dmin ago</string>
|
<string name="sms_minago">%1$dmin ago</string>
|
||||||
<string name="localprofile">Local Profile</string>
|
<string name="localprofile">Local Profile</string>
|
||||||
<string name="openapsama">OpenAPS AMA</string>
|
<string name="openapsama">OpenAPS AMA</string>
|
||||||
<string name="short_avgdelta">Short avg. delta</string>
|
<string name="short_avgdelta">Short avg. delta</string>
|
||||||
<string name="long_avgdelta">Long avg. delta</string>
|
<string name="long_avgdelta">Long avg. delta</string>
|
||||||
<string name="array_of_elements">Array of %d elements.\nActual value:</string>
|
<string name="array_of_elements">Array of %1$d elements.\nActual value:</string>
|
||||||
<string name="openapsma_autosensdata_label">Autosens data</string>
|
<string name="openapsma_autosensdata_label">Autosens data</string>
|
||||||
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
<string name="openapsma_scriptdebugdata_label">Script debug</string>
|
||||||
<string name="openapsama_useautosens">Use AMA autosens feature</string>
|
<string name="openapsama_useautosens">Use AMA autosens feature</string>
|
||||||
|
@ -573,8 +573,8 @@
|
||||||
<string name="Glimp">Glimp</string>
|
<string name="Glimp">Glimp</string>
|
||||||
<string name="needwhitelisting">%s needs battery optimalization whitelisting for proper performance</string>
|
<string name="needwhitelisting">%s needs battery optimalization whitelisting for proper performance</string>
|
||||||
<string name="loopsuspended">Loop suspended</string>
|
<string name="loopsuspended">Loop suspended</string>
|
||||||
<string name="loopsuspendedfor" formatted="false">Suspended (%d m)</string>
|
<string name="loopsuspendedfor">Suspended (%1$d m)</string>
|
||||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
|
<string name="loopsuperbolusfor">Superbolus (%1$d m)</string>
|
||||||
<string name="suspendloopfor1h">Suspend loop for 1h</string>
|
<string name="suspendloopfor1h">Suspend loop for 1h</string>
|
||||||
<string name="suspendloopfor2h">Suspend loop for 2h</string>
|
<string name="suspendloopfor2h">Suspend loop for 2h</string>
|
||||||
<string name="suspendloopfor3h">Suspend loop for 3h</string>
|
<string name="suspendloopfor3h">Suspend loop for 3h</string>
|
||||||
|
@ -772,7 +772,7 @@
|
||||||
<string name="shortprotein">Pr</string>
|
<string name="shortprotein">Pr</string>
|
||||||
<string name="shortfat">Fat</string>
|
<string name="shortfat">Fat</string>
|
||||||
<string name="active"><![CDATA[<Active>]]></string>
|
<string name="active"><![CDATA[<Active>]]></string>
|
||||||
<string name="waitingforestimatedbolusend" formatted="false">Waiting for bolus end. Remaining %d sec.</string>
|
<string name="waitingforestimatedbolusend">Waiting for bolus end. Remaining %1$d sec.</string>
|
||||||
<string name="processinghistory">Processing event</string>
|
<string name="processinghistory">Processing event</string>
|
||||||
<string name="startingbolus">Starting bolus delivery</string>
|
<string name="startingbolus">Starting bolus delivery</string>
|
||||||
<string name="executingrightnow">Command is executed right now</string>
|
<string name="executingrightnow">Command is executed right now</string>
|
||||||
|
@ -835,7 +835,7 @@
|
||||||
<string name="combo_refresh">Refresh</string>
|
<string name="combo_refresh">Refresh</string>
|
||||||
<string name="combo_pump_state_label">State</string>
|
<string name="combo_pump_state_label">State</string>
|
||||||
<string name="combo_pump_activity_label">Activity</string>
|
<string name="combo_pump_activity_label">Activity</string>
|
||||||
<string name="combo_no_pump_connection">No connection for %d min</string>
|
<string name="combo_no_pump_connection">No connection for %1$d min</string>
|
||||||
<string name="combo_tbr_remaining">%1$d%% (%2$d min remaining)</string>
|
<string name="combo_tbr_remaining">%1$d%% (%2$d min remaining)</string>
|
||||||
<string name="combo_last_bolus" translatable="false">%1$.1f %2$s (%3$s)</string>
|
<string name="combo_last_bolus" translatable="false">%1$.1f %2$s (%3$s)</string>
|
||||||
<string name="combo_pump_state_initializing">Initializing</string>
|
<string name="combo_pump_state_initializing">Initializing</string>
|
||||||
|
@ -1001,8 +1001,8 @@
|
||||||
<string name="profileswitch_ismissing">ProfileSwitch missing. Please do a profile switch or press \"Activate Profile\" in the LocalProfile.</string>
|
<string name="profileswitch_ismissing">ProfileSwitch missing. Please do a profile switch or press \"Activate Profile\" in the LocalProfile.</string>
|
||||||
<string name="combo_bolus_count">Bolus count</string>
|
<string name="combo_bolus_count">Bolus count</string>
|
||||||
<string name="combo_tbr_count">TBR count</string>
|
<string name="combo_tbr_count">TBR count</string>
|
||||||
<string name="objectivenotstarted" formatted="false">Objective %d not started</string>
|
<string name="objectivenotstarted">Objective %1$d not started</string>
|
||||||
<string name="objectivenotfinished" formatted="false">Objective %d not finished</string>
|
<string name="objectivenotfinished">Objective %1$d not finished</string>
|
||||||
<string name="pumpisnottempbasalcapable">Pump is not temp basal capable</string>
|
<string name="pumpisnottempbasalcapable">Pump is not temp basal capable</string>
|
||||||
<string name="novalidbasalrate">No valid basal rate read from pump</string>
|
<string name="novalidbasalrate">No valid basal rate read from pump</string>
|
||||||
<string name="closedmodedisabledinpreferences">Closed loop mode disabled in preferences</string>
|
<string name="closedmodedisabledinpreferences">Closed loop mode disabled in preferences</string>
|
||||||
|
@ -1038,8 +1038,8 @@
|
||||||
<string name="food_short">Food</string>
|
<string name="food_short">Food</string>
|
||||||
<string name="iobcobcalculator" translatable="false">IobCobCalculator</string>
|
<string name="iobcobcalculator" translatable="false">IobCobCalculator</string>
|
||||||
<string name="reset">reset</string>
|
<string name="reset">reset</string>
|
||||||
<string name="waitingfortimesynchronization">Waiting for time synchronization (%d sec)</string>
|
<string name="waitingfortimesynchronization">Waiting for time synchronization (%1$d sec)</string>
|
||||||
<string name="loopdisconnectedfor">Disconnected (%d m)</string>
|
<string name="loopdisconnectedfor">Disconnected (%1$d m)</string>
|
||||||
<string name="automatic_careportal_events">Automatic careportal events</string>
|
<string name="automatic_careportal_events">Automatic careportal events</string>
|
||||||
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automatically upload insulin, cannula and battery changes and pump alarms to Nightscout</string>
|
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automatically upload insulin, cannula and battery changes and pump alarms to Nightscout</string>
|
||||||
<string name="key_openapssmb_max_iob" translatable="false">openapsmb_max_iob</string>
|
<string name="key_openapssmb_max_iob" translatable="false">openapsmb_max_iob</string>
|
||||||
|
@ -1177,22 +1177,21 @@
|
||||||
<string name="send_all_logs">Send Logs by Email</string>
|
<string name="send_all_logs">Send Logs by Email</string>
|
||||||
<string name="delete_logs">Delete Logs</string>
|
<string name="delete_logs">Delete Logs</string>
|
||||||
|
|
||||||
<!-- TODO convert to proper style -->
|
<string name="error_adding_treatment_message">A treatment (insulin: %1$.2f, carbs: %2$d, at: %3$s) could not be added to treatments. Please check and manually add a record as appropriate.</string>
|
||||||
<string name="error_adding_treatment_message" formatted="false">A treatment (insulin: %.2f, carbs: %d, at: %s) could not be added to treatments. Please check and manually add a record as appropriate.</string>
|
|
||||||
<string name="generated_ecarbs_note">Generated eCarbs with amount: %1$dg, duration: %2$dh, delay: %3$dm</string>
|
<string name="generated_ecarbs_note">Generated eCarbs with amount: %1$dg, duration: %2$dh, delay: %3$dm</string>
|
||||||
<string name="key_plugin_stats_report_timestamp" translatable="false">key_plugin_stats_report_timestamp</string>
|
<string name="key_plugin_stats_report_timestamp" translatable="false">key_plugin_stats_report_timestamp</string>
|
||||||
<string name="openaps_noasdata">No autosens data available</string>
|
<string name="openaps_noasdata">No autosens data available</string>
|
||||||
|
|
||||||
<plurals name="objective_days">
|
<plurals name="objective_days">
|
||||||
<item quantity="one">%d day</item>
|
<item quantity="one">%1$d day</item>
|
||||||
<item quantity="other">%d days</item>
|
<item quantity="other">%1$d days</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="objective_hours">
|
<plurals name="objective_hours">
|
||||||
<item quantity="one">%d hour</item>
|
<item quantity="one">%1$d hour</item>
|
||||||
<item quantity="other">%d hours</item>
|
<item quantity="other">%1$d hours</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="objective_minutes">
|
<plurals name="objective_minutes">
|
||||||
<item quantity="one">%d minute</item>
|
<item quantity="one">%1$d minute</item>
|
||||||
<item quantity="other">%d minutes</item>
|
<item quantity="other">%1$d minutes</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -3,8 +3,8 @@ package info.nightscout.androidaps.plugins.Sensitivity;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||||
import info.nightscout.androidaps.interfaces.SensitivityInterface;
|
|
||||||
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
|
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
|
||||||
|
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ public class AbstractSensitivityPluginTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AutosensResult detectSensitivity(long fromTime, long toTime) {
|
public AutosensResult detectSensitivity(IobCobCalculatorPlugin plugin, long fromTime, long toTime) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
3
crowdin.yml
Normal file
3
crowdin.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
files:
|
||||||
|
- source: /app/src/main/res/values/strings.xml
|
||||||
|
translation: /app/src/main/res/values-%two_letters_code%/strings.xml
|
BIN
logo/androiaps.eps
Normal file
BIN
logo/androiaps.eps
Normal file
Binary file not shown.
4922
logo/androiaps_tshirt.pdf
Normal file
4922
logo/androiaps_tshirt.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
logo/tshirt.jpg
BIN
logo/tshirt.jpg
Binary file not shown.
Before Width: | Height: | Size: 38 KiB |
BIN
logo/tshirt.png
Normal file
BIN
logo/tshirt.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 492 KiB |
Loading…
Reference in a new issue