Merge remote-tracking branch 'origin/dev' into combo-scripter-v2
* origin/dev: Objectives update
This commit is contained in:
commit
8fb8182f4f
11 changed files with 96 additions and 12 deletions
|
@ -15,6 +15,8 @@ public interface ConstraintsInterface {
|
||||||
|
|
||||||
boolean isAMAModeEnabled();
|
boolean isAMAModeEnabled();
|
||||||
|
|
||||||
|
boolean isSMBModeEnabled();
|
||||||
|
|
||||||
Double applyBasalConstraints(Double absoluteRate);
|
Double applyBasalConstraints(Double absoluteRate);
|
||||||
|
|
||||||
Integer applyBasalConstraints(Integer percentRate);
|
Integer applyBasalConstraints(Integer percentRate);
|
||||||
|
|
|
@ -16,9 +16,9 @@ import info.nightscout.androidaps.Config;
|
||||||
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;
|
||||||
|
import info.nightscout.androidaps.data.Intervals;
|
||||||
import info.nightscout.androidaps.data.IobTotal;
|
import info.nightscout.androidaps.data.IobTotal;
|
||||||
import info.nightscout.androidaps.data.MealData;
|
import info.nightscout.androidaps.data.MealData;
|
||||||
import info.nightscout.androidaps.data.Intervals;
|
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
import info.nightscout.androidaps.data.ProfileIntervals;
|
import info.nightscout.androidaps.data.ProfileIntervals;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
|
@ -38,8 +38,8 @@ import info.nightscout.androidaps.interfaces.SensitivityInterface;
|
||||||
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
||||||
import info.nightscout.androidaps.plugins.Loop.APSResult;
|
import info.nightscout.androidaps.plugins.Loop.APSResult;
|
||||||
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
||||||
import info.nightscout.androidaps.plugins.Overview.notifications.Notification;
|
|
||||||
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.PumpVirtual.VirtualPumpPlugin;
|
import info.nightscout.androidaps.plugins.PumpVirtual.VirtualPumpPlugin;
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
import info.nightscout.androidaps.queue.CommandQueue;
|
import info.nightscout.androidaps.queue.CommandQueue;
|
||||||
|
@ -482,8 +482,7 @@ public class ConfigBuilderPlugin implements PluginBase, ConstraintsInterface, Tr
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAMAModeEnabled() {
|
public boolean isAMAModeEnabled() {
|
||||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
|
boolean result = SP.getBoolean("openapsama_useautosens", false);
|
||||||
boolean result = preferences.getBoolean("openapsama_useautosens", false);
|
|
||||||
|
|
||||||
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||||
for (PluginBase p : constraintsPlugins) {
|
for (PluginBase p : constraintsPlugins) {
|
||||||
|
@ -494,6 +493,19 @@ public class ConfigBuilderPlugin implements PluginBase, ConstraintsInterface, Tr
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSMBModeEnabled() {
|
||||||
|
boolean result = true; // TODO update for SMB // SP.getBoolean("openapsama_useautosens", false);
|
||||||
|
|
||||||
|
ArrayList<PluginBase> constraintsPlugins = MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class);
|
||||||
|
for (PluginBase p : constraintsPlugins) {
|
||||||
|
ConstraintsInterface constrain = (ConstraintsInterface) p;
|
||||||
|
if (!p.isEnabled(PluginBase.CONSTRAINTS)) continue;
|
||||||
|
result = result && constrain.isSMBModeEnabled();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Double applyBasalConstraints(Double absoluteRate) {
|
public Double applyBasalConstraints(Double absoluteRate) {
|
||||||
Double rateAfterConstrain = absoluteRate;
|
Double rateAfterConstrain = absoluteRate;
|
||||||
|
|
|
@ -14,9 +14,14 @@ import info.nightscout.androidaps.BuildConfig;
|
||||||
import info.nightscout.androidaps.Config;
|
import info.nightscout.androidaps.Config;
|
||||||
import info.nightscout.androidaps.MainApp;
|
import info.nightscout.androidaps.MainApp;
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
|
import info.nightscout.androidaps.interfaces.APSInterface;
|
||||||
import info.nightscout.androidaps.interfaces.ConstraintsInterface;
|
import info.nightscout.androidaps.interfaces.ConstraintsInterface;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.ConstraintsSafety.SafetyPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.PumpVirtual.VirtualPumpPlugin;
|
||||||
import info.nightscout.utils.SP;
|
import info.nightscout.utils.SP;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -152,14 +157,35 @@ public class ObjectivesPlugin implements PluginBase, ConstraintsInterface {
|
||||||
RequirementResult requirementsMet(Integer objNum) {
|
RequirementResult requirementsMet(Integer objNum) {
|
||||||
switch (objNum) {
|
switch (objNum) {
|
||||||
case 0:
|
case 0:
|
||||||
return new RequirementResult(bgIsAvailableInNS && pumpStatusIsAvailableInNS,
|
boolean isVirtualPump = VirtualPumpPlugin.getPlugin().isEnabled(PluginBase.PUMP);
|
||||||
|
boolean vpUploadEnabled = SP.getBoolean("virtualpump_uploadstatus", false);
|
||||||
|
boolean vpUploadNeeded = !isVirtualPump || vpUploadEnabled;
|
||||||
|
|
||||||
|
boolean apsEnabled = false;
|
||||||
|
APSInterface usedAPS = ConfigBuilderPlugin.getActiveAPS();
|
||||||
|
if (usedAPS != null && ((PluginBase) usedAPS).isEnabled(PluginBase.APS))
|
||||||
|
apsEnabled = true;
|
||||||
|
|
||||||
|
return new RequirementResult(bgIsAvailableInNS && pumpStatusIsAvailableInNS && NSClientInternalPlugin.getPlugin().hasWritePermission() && LoopPlugin.getPlugin().isEnabled(PluginBase.LOOP) && apsEnabled && vpUploadNeeded,
|
||||||
MainApp.sResources.getString(R.string.objectives_bgavailableinns) + ": " + yesOrNo(bgIsAvailableInNS)
|
MainApp.sResources.getString(R.string.objectives_bgavailableinns) + ": " + yesOrNo(bgIsAvailableInNS)
|
||||||
+ " " + MainApp.sResources.getString(R.string.objectives_pumpstatusavailableinns) + ": " + yesOrNo(pumpStatusIsAvailableInNS));
|
+ " " + MainApp.sResources.getString(R.string.nsclienthaswritepermission) + ": " + yesOrNo(NSClientInternalPlugin.getPlugin().hasWritePermission())
|
||||||
|
+ (isVirtualPump ? " " + MainApp.sResources.getString(R.string.virtualpump_uploadstatus_title) + ": " + yesOrNo(vpUploadEnabled) : "")
|
||||||
|
+ " " + MainApp.sResources.getString(R.string.objectives_pumpstatusavailableinns) + ": " + yesOrNo(pumpStatusIsAvailableInNS)
|
||||||
|
+ " " + MainApp.sResources.getString(R.string.loopenabled) + ": " + yesOrNo(LoopPlugin.getPlugin().isEnabled(PluginBase.LOOP))
|
||||||
|
+ " " + MainApp.sResources.getString(R.string.apsselected) + ": " + yesOrNo(apsEnabled)
|
||||||
|
);
|
||||||
case 1:
|
case 1:
|
||||||
return new RequirementResult(manualEnacts >= manualEnactsNeeded,
|
return new RequirementResult(manualEnacts >= manualEnactsNeeded,
|
||||||
MainApp.sResources.getString(R.string.objectives_manualenacts) + ": " + manualEnacts + "/" + manualEnactsNeeded);
|
MainApp.sResources.getString(R.string.objectives_manualenacts) + ": " + manualEnacts + "/" + manualEnactsNeeded);
|
||||||
case 2:
|
case 2:
|
||||||
return new RequirementResult(true, "");
|
return new RequirementResult(true, "");
|
||||||
|
case 3:
|
||||||
|
boolean closedModeEnabled = SafetyPlugin.getPlugin().isClosedModeEnabled();
|
||||||
|
return new RequirementResult(closedModeEnabled, MainApp.sResources.getString(R.string.closedmodeenabled) + ": " + yesOrNo(closedModeEnabled));
|
||||||
|
case 4:
|
||||||
|
double maxIOB = MainApp.getConfigBuilder().applyMaxIOBConstraints(1000d);
|
||||||
|
boolean maxIobSet = maxIOB > 0;
|
||||||
|
return new RequirementResult(maxIobSet, MainApp.sResources.getString(R.string.maxiobset) + ": " + yesOrNo(maxIobSet));
|
||||||
default:
|
default:
|
||||||
return new RequirementResult(true, "");
|
return new RequirementResult(true, "");
|
||||||
}
|
}
|
||||||
|
@ -212,7 +238,13 @@ public class ObjectivesPlugin implements PluginBase, ConstraintsInterface {
|
||||||
MainApp.sResources.getString(R.string.objectives_6_objective),
|
MainApp.sResources.getString(R.string.objectives_6_objective),
|
||||||
"",
|
"",
|
||||||
new Date(0),
|
new Date(0),
|
||||||
14,
|
28,
|
||||||
|
new Date(0)));
|
||||||
|
objectives.add(new Objective(7,
|
||||||
|
MainApp.sResources.getString(R.string.objectives_7_objective),
|
||||||
|
"",
|
||||||
|
new Date(0),
|
||||||
|
28,
|
||||||
new Date(0)));
|
new Date(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,6 +310,11 @@ public class ObjectivesPlugin implements PluginBase, ConstraintsInterface {
|
||||||
return objectives.get(6).started.getTime() > 0;
|
return objectives.get(6).started.getTime() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSMBModeEnabled() {
|
||||||
|
return objectives.get(7).started.getTime() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Double applyMaxIOBConstraints(Double maxIob) {
|
public Double applyMaxIOBConstraints(Double maxIob) {
|
||||||
if (objectives.get(4).started.getTime() > 0 || objectives.get(2).accomplished.getTime() == 0)
|
if (objectives.get(4).started.getTime() > 0 || objectives.get(2).accomplished.getTime() == 0)
|
||||||
|
|
|
@ -116,6 +116,11 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSMBModeEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Double applyBasalConstraints(Double absoluteRate) {
|
public Double applyBasalConstraints(Double absoluteRate) {
|
||||||
Double origAbsoluteRate = absoluteRate;
|
Double origAbsoluteRate = absoluteRate;
|
||||||
|
|
|
@ -222,4 +222,8 @@ public class NSClientInternalPlugin implements PluginBase {
|
||||||
public String url() {
|
public String url() {
|
||||||
return NSClientService.nsURL;
|
return NSClientService.nsURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasWritePermission() {
|
||||||
|
return nsClientService.hasWriteAuth;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -785,6 +785,11 @@ public class DanaRPlugin implements PluginBase, PumpInterface, DanaRInterface, C
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSMBModeEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("PointlessBooleanExpression")
|
@SuppressWarnings("PointlessBooleanExpression")
|
||||||
@Override
|
@Override
|
||||||
public Double applyBasalConstraints(Double absoluteRate) {
|
public Double applyBasalConstraints(Double absoluteRate) {
|
||||||
|
|
|
@ -787,6 +787,11 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, DanaRInterf
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSMBModeEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("PointlessBooleanExpression")
|
@SuppressWarnings("PointlessBooleanExpression")
|
||||||
@Override
|
@Override
|
||||||
public Double applyBasalConstraints(Double absoluteRate) {
|
public Double applyBasalConstraints(Double absoluteRate) {
|
||||||
|
|
|
@ -289,6 +289,11 @@ public class DanaRSPlugin implements PluginBase, PumpInterface, DanaRInterface,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSMBModeEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Double applyBasalConstraints(Double absoluteRate) {
|
public Double applyBasalConstraints(Double absoluteRate) {
|
||||||
double origAbsoluteRate = absoluteRate;
|
double origAbsoluteRate = absoluteRate;
|
||||||
|
|
|
@ -730,6 +730,11 @@ public class DanaRv2Plugin implements PluginBase, PumpInterface, DanaRInterface,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSMBModeEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("PointlessBooleanExpression")
|
@SuppressWarnings("PointlessBooleanExpression")
|
||||||
@Override
|
@Override
|
||||||
public Double applyBasalConstraints(Double absoluteRate) {
|
public Double applyBasalConstraints(Double absoluteRate) {
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package info.nightscout.androidaps.plugins.PumpVirtual;
|
package info.nightscout.androidaps.plugins.PumpVirtual;
|
||||||
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -16,6 +14,7 @@ import info.nightscout.androidaps.Config;
|
||||||
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;
|
||||||
|
import info.nightscout.androidaps.data.Profile;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.db.ExtendedBolus;
|
import info.nightscout.androidaps.db.ExtendedBolus;
|
||||||
import info.nightscout.androidaps.db.Source;
|
import info.nightscout.androidaps.db.Source;
|
||||||
|
@ -24,7 +23,6 @@ import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PumpDescription;
|
import info.nightscout.androidaps.interfaces.PumpDescription;
|
||||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
|
||||||
import info.nightscout.androidaps.plugins.Overview.events.EventOverviewBolusProgress;
|
import info.nightscout.androidaps.plugins.Overview.events.EventOverviewBolusProgress;
|
||||||
import info.nightscout.androidaps.plugins.PumpVirtual.events.EventVirtualPumpUpdateGui;
|
import info.nightscout.androidaps.plugins.PumpVirtual.events.EventVirtualPumpUpdateGui;
|
||||||
import info.nightscout.utils.DateUtil;
|
import info.nightscout.utils.DateUtil;
|
||||||
|
@ -65,6 +63,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static VirtualPumpPlugin plugin = null;
|
private static VirtualPumpPlugin plugin = null;
|
||||||
|
|
||||||
public static VirtualPumpPlugin getPlugin() {
|
public static VirtualPumpPlugin getPlugin() {
|
||||||
loadFakingStatus();
|
loadFakingStatus();
|
||||||
if (plugin == null)
|
if (plugin == null)
|
||||||
|
@ -401,8 +400,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject getJSONStatus() {
|
public JSONObject getJSONStatus() {
|
||||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
|
if (!SP.getBoolean("virtualpump_uploadstatus", false)) {
|
||||||
if (!preferences.getBoolean("virtualpump_uploadstatus", false)) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
JSONObject pump = new JSONObject();
|
JSONObject pump = new JSONObject();
|
||||||
|
|
|
@ -316,6 +316,7 @@
|
||||||
<string name="objectives_5_objective">Adjust basals and ratios if needed, and then enable auto-sens</string>
|
<string name="objectives_5_objective">Adjust basals and ratios if needed, and then enable auto-sens</string>
|
||||||
<string name="objectives_5_gate">1 week successful daytime looping with regular carb entry</string>
|
<string name="objectives_5_gate">1 week successful daytime looping with regular carb entry</string>
|
||||||
<string name="objectives_6_objective">Enabling additional features for daytime use, such as advanced meal assist</string>
|
<string name="objectives_6_objective">Enabling additional features for daytime use, such as advanced meal assist</string>
|
||||||
|
<string name="objectives_7_objective">Enabling additional features for daytime use, such as SMB</string>
|
||||||
<string name="youareonallowedlimit">You reached allowed limit</string>
|
<string name="youareonallowedlimit">You reached allowed limit</string>
|
||||||
<string name="noprofileselected">No profile selected</string>
|
<string name="noprofileselected">No profile selected</string>
|
||||||
<string name="smscommunicator_loophasbeendisabled">Loop has been disabled</string>
|
<string name="smscommunicator_loophasbeendisabled">Loop has been disabled</string>
|
||||||
|
@ -802,6 +803,11 @@
|
||||||
<string name="negativeonly">Negative only</string>
|
<string name="negativeonly">Negative only</string>
|
||||||
<string name="overview_editquickwizard_usecob">COB calculation</string>
|
<string name="overview_editquickwizard_usecob">COB calculation</string>
|
||||||
<string name="overview_editquickwizard_usetemptarget">Temporary target calculation</string>
|
<string name="overview_editquickwizard_usetemptarget">Temporary target calculation</string>
|
||||||
|
<string name="loopenabled">Loop enabled</string>
|
||||||
|
<string name="apsselected">APS selected</string>
|
||||||
|
<string name="nsclienthaswritepermission">NSClient has write permission</string>
|
||||||
|
<string name="closedmodeenabled">Closed mode enabled</string>
|
||||||
|
<string name="maxiobset">Maximal IOB set properly</string>
|
||||||
<string name="bolusstopping">Stopping bolus delivery</string>
|
<string name="bolusstopping">Stopping bolus delivery</string>
|
||||||
<string name="bolusstopped">Bolus delivery stopped</string>
|
<string name="bolusstopped">Bolus delivery stopped</string>
|
||||||
<string name="combo_programming_bolus">Programming pump for bolusing</string>
|
<string name="combo_programming_bolus">Programming pump for bolusing</string>
|
||||||
|
|
Loading…
Reference in a new issue