move APS function from ConfigBuilder to Loop
This commit is contained in:
parent
96745b6866
commit
6a9bf04a98
4 changed files with 179 additions and 166 deletions
|
@ -412,157 +412,4 @@ public class ConfigBuilderPlugin extends PluginBase {
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* expect absolute request and allow both absolute and percent response based on pump capabilities
|
|
||||||
*/
|
|
||||||
public void applyTBRRequest(APSResult request, Profile profile, Callback callback) {
|
|
||||||
if (!request.tempBasalRequested) {
|
|
||||||
if (callback != null) {
|
|
||||||
callback.result(new PumpEnactResult().enacted(false).success(true).comment(MainApp.gs(R.string.nochangerequested))).run();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
PumpInterface pump = getActivePump();
|
|
||||||
|
|
||||||
request.rateConstraint = new Constraint<>(request.rate);
|
|
||||||
request.rate = MainApp.getConstraintChecker().applyBasalConstraints(request.rateConstraint, profile).value();
|
|
||||||
|
|
||||||
if (!pump.isInitialized()) {
|
|
||||||
log.debug("applyAPSRequest: " + MainApp.gs(R.string.pumpNotInitialized));
|
|
||||||
if (callback != null) {
|
|
||||||
callback.result(new PumpEnactResult().comment(MainApp.gs(R.string.pumpNotInitialized)).enacted(false).success(false)).run();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pump.isSuspended()) {
|
|
||||||
log.debug("applyAPSRequest: " + MainApp.gs(R.string.pumpsuspended));
|
|
||||||
if (callback != null) {
|
|
||||||
callback.result(new PumpEnactResult().comment(MainApp.gs(R.string.pumpsuspended)).enacted(false).success(false)).run();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.logCongigBuilderActions)
|
|
||||||
log.debug("applyAPSRequest: " + request.toString());
|
|
||||||
|
|
||||||
long now = System.currentTimeMillis();
|
|
||||||
TemporaryBasal activeTemp = activeTreatments.getTempBasalFromHistory(now);
|
|
||||||
if ((request.rate == 0 && request.duration == 0) || Math.abs(request.rate - pump.getBaseBasalRate()) < pump.getPumpDescription().basalStep) {
|
|
||||||
if (activeTemp != null) {
|
|
||||||
if (Config.logCongigBuilderActions)
|
|
||||||
log.debug("applyAPSRequest: cancelTempBasal()");
|
|
||||||
getCommandQueue().cancelTempBasal(false, callback);
|
|
||||||
} else {
|
|
||||||
if (Config.logCongigBuilderActions)
|
|
||||||
log.debug("applyAPSRequest: Basal set correctly");
|
|
||||||
if (callback != null) {
|
|
||||||
callback.result(new PumpEnactResult().absolute(request.rate).duration(0)
|
|
||||||
.enacted(false).success(true).comment(MainApp.gs(R.string.basal_set_correctly))).run();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (activeTemp != null
|
|
||||||
&& activeTemp.getPlannedRemainingMinutes() > 5
|
|
||||||
&& request.duration - activeTemp.getPlannedRemainingMinutes() < 30
|
|
||||||
&& Math.abs(request.rate - activeTemp.tempBasalConvertedToAbsolute(now, profile)) < pump.getPumpDescription().basalStep) {
|
|
||||||
if (Config.logCongigBuilderActions)
|
|
||||||
log.debug("applyAPSRequest: Temp basal set correctly");
|
|
||||||
if (callback != null) {
|
|
||||||
callback.result(new PumpEnactResult().absolute(activeTemp.tempBasalConvertedToAbsolute(now, profile))
|
|
||||||
.enacted(false).success(true).duration(activeTemp.getPlannedRemainingMinutes())
|
|
||||||
.comment(MainApp.gs(R.string.let_temp_basal_run))).run();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (Config.logCongigBuilderActions)
|
|
||||||
log.debug("applyAPSRequest: setTempBasalAbsolute()");
|
|
||||||
getCommandQueue().tempBasalAbsolute(request.rate, request.duration, false, profile, callback);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void applySMBRequest(APSResult request, Callback callback) {
|
|
||||||
if (!request.bolusRequested) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
long lastBolusTime = activeTreatments.getLastBolusTime();
|
|
||||||
if (lastBolusTime != 0 && lastBolusTime + 3 * 60 * 1000 > System.currentTimeMillis()) {
|
|
||||||
log.debug("SMB requested but still in 3 min interval");
|
|
||||||
if (callback != null) {
|
|
||||||
callback.result(new PumpEnactResult()
|
|
||||||
.comment(MainApp.gs(R.string.smb_frequency_exceeded))
|
|
||||||
.enacted(false).success(false)).run();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
PumpInterface pump = getActivePump();
|
|
||||||
|
|
||||||
if (!pump.isInitialized()) {
|
|
||||||
log.debug("applySMBRequest: " + MainApp.gs(R.string.pumpNotInitialized));
|
|
||||||
if (callback != null) {
|
|
||||||
callback.result(new PumpEnactResult().comment(MainApp.gs(R.string.pumpNotInitialized)).enacted(false).success(false)).run();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pump.isSuspended()) {
|
|
||||||
log.debug("applySMBRequest: " + MainApp.gs(R.string.pumpsuspended));
|
|
||||||
if (callback != null) {
|
|
||||||
callback.result(new PumpEnactResult().comment(MainApp.gs(R.string.pumpsuspended)).enacted(false).success(false)).run();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.logCongigBuilderActions)
|
|
||||||
log.debug("applySMBRequest: " + request.toString());
|
|
||||||
|
|
||||||
// deliver SMB
|
|
||||||
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
|
|
||||||
detailedBolusInfo.lastKnownBolusTime = activeTreatments.getLastBolusTime();
|
|
||||||
detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS;
|
|
||||||
detailedBolusInfo.insulin = request.smb;
|
|
||||||
detailedBolusInfo.isSMB = true;
|
|
||||||
detailedBolusInfo.source = Source.USER;
|
|
||||||
detailedBolusInfo.deliverAt = request.deliverAt;
|
|
||||||
if (Config.logCongigBuilderActions)
|
|
||||||
log.debug("applyAPSRequest: bolus()");
|
|
||||||
getCommandQueue().bolus(detailedBolusInfo, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void disconnectPump(int durationInMinutes, Profile profile) {
|
|
||||||
LoopPlugin.getPlugin().disconnectTo(System.currentTimeMillis() + durationInMinutes * 60 * 1000L);
|
|
||||||
getCommandQueue().tempBasalPercent(0, durationInMinutes, true, profile, new Callback() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!result.success) {
|
|
||||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.tempbasaldeliveryerror));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (getActivePump().getPumpDescription().isExtendedBolusCapable && activeTreatments.isInHistoryExtendedBoluslInProgress()) {
|
|
||||||
getCommandQueue().cancelExtended(new Callback() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!result.success) {
|
|
||||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.extendedbolusdeliveryerror));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
NSUpload.uploadOpenAPSOffline(durationInMinutes);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void suspendLoop(int durationInMinutes) {
|
|
||||||
LoopPlugin.getPlugin().suspendTo(System.currentTimeMillis() + durationInMinutes * 60 * 1000);
|
|
||||||
getCommandQueue().cancelTempBasal(true, new Callback() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (!result.success) {
|
|
||||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.tempbasaldeliveryerror));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
NSUpload.uploadOpenAPSOffline(durationInMinutes);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,7 +135,7 @@ public class ProfileFunctions {
|
||||||
.putCustomAttribute("getProfileSwitchesFromHistory", activeTreatments.getProfileSwitchesFromHistory().toString())
|
.putCustomAttribute("getProfileSwitchesFromHistory", activeTreatments.getProfileSwitchesFromHistory().toString())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
log.debug("getProfile at the end: returning null");
|
log.error("getProfile at the end: returning null");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,14 +21,19 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.Config;
|
||||||
import info.nightscout.androidaps.Constants;
|
import info.nightscout.androidaps.Constants;
|
||||||
import info.nightscout.androidaps.MainActivity;
|
import info.nightscout.androidaps.MainActivity;
|
||||||
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.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||||
import info.nightscout.androidaps.db.BgReading;
|
import info.nightscout.androidaps.db.BgReading;
|
||||||
|
import info.nightscout.androidaps.db.CareportalEvent;
|
||||||
import info.nightscout.androidaps.db.DatabaseHelper;
|
import info.nightscout.androidaps.db.DatabaseHelper;
|
||||||
|
import info.nightscout.androidaps.db.Source;
|
||||||
|
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||||
import info.nightscout.androidaps.events.Event;
|
import info.nightscout.androidaps.events.Event;
|
||||||
import info.nightscout.androidaps.events.EventNewBG;
|
import info.nightscout.androidaps.events.EventNewBG;
|
||||||
import info.nightscout.androidaps.interfaces.APSInterface;
|
import info.nightscout.androidaps.interfaces.APSInterface;
|
||||||
|
@ -37,6 +42,7 @@ 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.interfaces.PumpInterface;
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
|
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
||||||
import info.nightscout.androidaps.logging.L;
|
import info.nightscout.androidaps.logging.L;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ProfileFunctions;
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ProfileFunctions;
|
||||||
|
@ -50,6 +56,7 @@ import info.nightscout.androidaps.queue.Callback;
|
||||||
import info.nightscout.androidaps.queue.commands.Command;
|
import info.nightscout.androidaps.queue.commands.Command;
|
||||||
import info.nightscout.utils.FabricPrivacy;
|
import info.nightscout.utils.FabricPrivacy;
|
||||||
import info.nightscout.utils.SP;
|
import info.nightscout.utils.SP;
|
||||||
|
import info.nightscout.utils.ToastUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mike on 05.08.2016.
|
* Created by mike on 05.08.2016.
|
||||||
|
@ -349,13 +356,13 @@ public class LoopPlugin extends PluginBase {
|
||||||
lastRun.smbSetByPump = waiting;
|
lastRun.smbSetByPump = waiting;
|
||||||
MainApp.bus().post(new EventLoopUpdateGui());
|
MainApp.bus().post(new EventLoopUpdateGui());
|
||||||
FabricPrivacy.getInstance().logCustom(new CustomEvent("APSRequest"));
|
FabricPrivacy.getInstance().logCustom(new CustomEvent("APSRequest"));
|
||||||
MainApp.getConfigBuilder().applyTBRRequest(resultAfterConstraints, profile, new Callback() {
|
applyTBRRequest(resultAfterConstraints, profile, new Callback() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (result.enacted || result.success) {
|
if (result.enacted || result.success) {
|
||||||
lastRun.tbrSetByPump = result;
|
lastRun.tbrSetByPump = result;
|
||||||
lastRun.lastEnact = lastRun.lastAPSRun;
|
lastRun.lastEnact = lastRun.lastAPSRun;
|
||||||
MainApp.getConfigBuilder().applySMBRequest(resultAfterConstraints, new Callback() {
|
applySMBRequest(resultAfterConstraints, new Callback() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
//Callback is only called if a bolus was acutally requested
|
//Callback is only called if a bolus was acutally requested
|
||||||
|
@ -422,4 +429,163 @@ public class LoopPlugin extends PluginBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* expect absolute request and allow both absolute and percent response based on pump capabilities
|
||||||
|
*/
|
||||||
|
public void applyTBRRequest(APSResult request, Profile profile, Callback callback) {
|
||||||
|
if (!request.tempBasalRequested) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.result(new PumpEnactResult().enacted(false).success(true).comment(MainApp.gs(R.string.nochangerequested))).run();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PumpInterface pump = MainApp.getConfigBuilder().getActivePump();
|
||||||
|
TreatmentsInterface activeTreatments = TreatmentsPlugin.getPlugin();
|
||||||
|
|
||||||
|
request.rateConstraint = new Constraint<>(request.rate);
|
||||||
|
request.rate = MainApp.getConstraintChecker().applyBasalConstraints(request.rateConstraint, profile).value();
|
||||||
|
|
||||||
|
if (!pump.isInitialized()) {
|
||||||
|
log.debug("applyAPSRequest: " + MainApp.gs(R.string.pumpNotInitialized));
|
||||||
|
if (callback != null) {
|
||||||
|
callback.result(new PumpEnactResult().comment(MainApp.gs(R.string.pumpNotInitialized)).enacted(false).success(false)).run();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pump.isSuspended()) {
|
||||||
|
log.debug("applyAPSRequest: " + MainApp.gs(R.string.pumpsuspended));
|
||||||
|
if (callback != null) {
|
||||||
|
callback.result(new PumpEnactResult().comment(MainApp.gs(R.string.pumpsuspended)).enacted(false).success(false)).run();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config.logCongigBuilderActions)
|
||||||
|
log.debug("applyAPSRequest: " + request.toString());
|
||||||
|
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
TemporaryBasal activeTemp = activeTreatments.getTempBasalFromHistory(now);
|
||||||
|
if ((request.rate == 0 && request.duration == 0) || Math.abs(request.rate - pump.getBaseBasalRate()) < pump.getPumpDescription().basalStep) {
|
||||||
|
if (activeTemp != null) {
|
||||||
|
if (Config.logCongigBuilderActions)
|
||||||
|
log.debug("applyAPSRequest: cancelTempBasal()");
|
||||||
|
MainApp.getConfigBuilder().getCommandQueue().cancelTempBasal(false, callback);
|
||||||
|
} else {
|
||||||
|
if (Config.logCongigBuilderActions)
|
||||||
|
log.debug("applyAPSRequest: Basal set correctly");
|
||||||
|
if (callback != null) {
|
||||||
|
callback.result(new PumpEnactResult().absolute(request.rate).duration(0)
|
||||||
|
.enacted(false).success(true).comment(MainApp.gs(R.string.basal_set_correctly))).run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (activeTemp != null
|
||||||
|
&& activeTemp.getPlannedRemainingMinutes() > 5
|
||||||
|
&& request.duration - activeTemp.getPlannedRemainingMinutes() < 30
|
||||||
|
&& Math.abs(request.rate - activeTemp.tempBasalConvertedToAbsolute(now, profile)) < pump.getPumpDescription().basalStep) {
|
||||||
|
if (Config.logCongigBuilderActions)
|
||||||
|
log.debug("applyAPSRequest: Temp basal set correctly");
|
||||||
|
if (callback != null) {
|
||||||
|
callback.result(new PumpEnactResult().absolute(activeTemp.tempBasalConvertedToAbsolute(now, profile))
|
||||||
|
.enacted(false).success(true).duration(activeTemp.getPlannedRemainingMinutes())
|
||||||
|
.comment(MainApp.gs(R.string.let_temp_basal_run))).run();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (Config.logCongigBuilderActions)
|
||||||
|
log.debug("applyAPSRequest: setTempBasalAbsolute()");
|
||||||
|
MainApp.getConfigBuilder().getCommandQueue().tempBasalAbsolute(request.rate, request.duration, false, profile, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void applySMBRequest(APSResult request, Callback callback) {
|
||||||
|
if (!request.bolusRequested) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PumpInterface pump = MainApp.getConfigBuilder().getActivePump();
|
||||||
|
TreatmentsInterface activeTreatments = TreatmentsPlugin.getPlugin();
|
||||||
|
|
||||||
|
long lastBolusTime = activeTreatments.getLastBolusTime();
|
||||||
|
if (lastBolusTime != 0 && lastBolusTime + 3 * 60 * 1000 > System.currentTimeMillis()) {
|
||||||
|
log.debug("SMB requested but still in 3 min interval");
|
||||||
|
if (callback != null) {
|
||||||
|
callback.result(new PumpEnactResult()
|
||||||
|
.comment(MainApp.gs(R.string.smb_frequency_exceeded))
|
||||||
|
.enacted(false).success(false)).run();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pump.isInitialized()) {
|
||||||
|
log.debug("applySMBRequest: " + MainApp.gs(R.string.pumpNotInitialized));
|
||||||
|
if (callback != null) {
|
||||||
|
callback.result(new PumpEnactResult().comment(MainApp.gs(R.string.pumpNotInitialized)).enacted(false).success(false)).run();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pump.isSuspended()) {
|
||||||
|
log.debug("applySMBRequest: " + MainApp.gs(R.string.pumpsuspended));
|
||||||
|
if (callback != null) {
|
||||||
|
callback.result(new PumpEnactResult().comment(MainApp.gs(R.string.pumpsuspended)).enacted(false).success(false)).run();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config.logCongigBuilderActions)
|
||||||
|
log.debug("applySMBRequest: " + request.toString());
|
||||||
|
|
||||||
|
// deliver SMB
|
||||||
|
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
|
||||||
|
detailedBolusInfo.lastKnownBolusTime = activeTreatments.getLastBolusTime();
|
||||||
|
detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS;
|
||||||
|
detailedBolusInfo.insulin = request.smb;
|
||||||
|
detailedBolusInfo.isSMB = true;
|
||||||
|
detailedBolusInfo.source = Source.USER;
|
||||||
|
detailedBolusInfo.deliverAt = request.deliverAt;
|
||||||
|
if (Config.logCongigBuilderActions)
|
||||||
|
log.debug("applyAPSRequest: bolus()");
|
||||||
|
MainApp.getConfigBuilder().getCommandQueue().bolus(detailedBolusInfo, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnectPump(int durationInMinutes, Profile profile) {
|
||||||
|
PumpInterface pump = MainApp.getConfigBuilder().getActivePump();
|
||||||
|
TreatmentsInterface activeTreatments = TreatmentsPlugin.getPlugin();
|
||||||
|
|
||||||
|
LoopPlugin.getPlugin().disconnectTo(System.currentTimeMillis() + durationInMinutes * 60 * 1000L);
|
||||||
|
MainApp.getConfigBuilder().getCommandQueue().tempBasalPercent(0, durationInMinutes, true, profile, new Callback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (!result.success) {
|
||||||
|
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.tempbasaldeliveryerror));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (pump.getPumpDescription().isExtendedBolusCapable && activeTreatments.isInHistoryExtendedBoluslInProgress()) {
|
||||||
|
MainApp.getConfigBuilder().getCommandQueue().cancelExtended(new Callback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (!result.success) {
|
||||||
|
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.extendedbolusdeliveryerror));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
NSUpload.uploadOpenAPSOffline(durationInMinutes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void suspendLoop(int durationInMinutes) {
|
||||||
|
LoopPlugin.getPlugin().suspendTo(System.currentTimeMillis() + durationInMinutes * 60 * 1000);
|
||||||
|
MainApp.getConfigBuilder().getCommandQueue().cancelTempBasal(true, new Callback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (!result.success) {
|
||||||
|
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.tempbasaldeliveryerror));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
NSUpload.uploadOpenAPSOffline(durationInMinutes);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -537,39 +537,39 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
||||||
NSUpload.uploadOpenAPSOffline(0);
|
NSUpload.uploadOpenAPSOffline(0);
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor1h))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor1h))) {
|
||||||
MainApp.getConfigBuilder().suspendLoop(60);
|
LoopPlugin.getPlugin().suspendLoop(60);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor2h))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor2h))) {
|
||||||
MainApp.getConfigBuilder().suspendLoop(120);
|
LoopPlugin.getPlugin().suspendLoop(120);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor3h))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor3h))) {
|
||||||
MainApp.getConfigBuilder().suspendLoop(180);
|
LoopPlugin.getPlugin().suspendLoop(180);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor10h))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor10h))) {
|
||||||
MainApp.getConfigBuilder().suspendLoop(600);
|
LoopPlugin.getPlugin().suspendLoop(600);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor15m))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor15m))) {
|
||||||
MainApp.getConfigBuilder().disconnectPump(15, profile);
|
LoopPlugin.getPlugin().disconnectPump(15, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor30m))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor30m))) {
|
||||||
MainApp.getConfigBuilder().disconnectPump(30, profile);
|
LoopPlugin.getPlugin().disconnectPump(30, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor1h))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor1h))) {
|
||||||
MainApp.getConfigBuilder().disconnectPump(60, profile);
|
LoopPlugin.getPlugin().disconnectPump(60, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor2h))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor2h))) {
|
||||||
MainApp.getConfigBuilder().disconnectPump(120, profile);
|
LoopPlugin.getPlugin().disconnectPump(120, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor3h))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor3h))) {
|
||||||
MainApp.getConfigBuilder().disconnectPump(180, profile);
|
LoopPlugin.getPlugin().disconnectPump(180, profile);
|
||||||
updateGUI("suspendmenu");
|
updateGUI("suspendmenu");
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getTitle().equals(MainApp.gs(R.string.careportal_profileswitch))) {
|
} else if (item.getTitle().equals(MainApp.gs(R.string.careportal_profileswitch))) {
|
||||||
|
@ -741,7 +741,7 @@ 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) -> {
|
||||||
hideTempRecommendation();
|
hideTempRecommendation();
|
||||||
clearNotification();
|
clearNotification();
|
||||||
MainApp.getConfigBuilder().applyTBRRequest(finalLastRun.constraintsProcessed, profile, new Callback() {
|
LoopPlugin.getPlugin().applyTBRRequest(finalLastRun.constraintsProcessed, profile, new Callback() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (result.enacted) {
|
if (result.enacted) {
|
||||||
|
|
Loading…
Reference in a new issue