Trim requested TBR rate to maximum the pump supports, properly round.

This commit is contained in:
Johannes Mockenhaupt 2017-07-30 02:44:13 +02:00
parent 127fbc993e
commit 27f788424a
No known key found for this signature in database
GPG key ID: 9E1EA6AF7BBBB0D1

View file

@ -478,20 +478,27 @@ public class ComboPlugin implements PluginBase, PumpInterface {
@Override @Override
public PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes) { public PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes) {
log.debug("setTempBasalPercent called with " + percent + "% for " + durationInMinutes + "min"); log.debug("setTempBasalPercent called with " + percent + "% for " + durationInMinutes + "min");
if (percent % 10 != 0) {
int rounded = percent; int adjustedPercent = percent;
while (rounded % 10 != 0) rounded = rounded - 1;
log.debug("Rounded requested percentage from " + percent + " to " + rounded); if (adjustedPercent > pumpDescription.maxTempPercent) {
percent = rounded; log.debug("Reducing requested TBR to the maximum support by the pump: " + percent + " -> " + pumpDescription.maxTempPercent);
adjustedPercent = pumpDescription.maxTempPercent;
} }
CommandResult commandResult = runCommand(new SetTbrCommand(percent, durationInMinutes)); if (adjustedPercent % 10 != 0) {
Long rounded = Math.round(adjustedPercent / 10d) * 10;
log.debug("Rounded requested percentage:" + adjustedPercent + " -> " + rounded);
adjustedPercent = rounded.intValue();
}
CommandResult commandResult = runCommand(new SetTbrCommand(adjustedPercent, durationInMinutes));
if (commandResult.enacted) { if (commandResult.enacted) {
TemporaryBasal tempStart = new TemporaryBasal(commandResult.completionTime); TemporaryBasal tempStart = new TemporaryBasal(commandResult.completionTime);
// TODO commandResult.state.tbrRemainingDuration might already display 29 if 30 was set, since 29:59 is shown as 29 ... // TODO commandResult.state.tbrRemainingDuration might already display 29 if 30 was set, since 29:59 is shown as 29 ...
// we should check this, but really ... something must be really screwed up if that number was anything different // we should check this, but really ... something must be really screwed up if that number was anything different
tempStart.durationInMinutes = durationInMinutes; tempStart.durationInMinutes = durationInMinutes;
tempStart.percentRate = percent; tempStart.percentRate = adjustedPercent;
tempStart.isAbsolute = false; tempStart.isAbsolute = false;
tempStart.source = Source.USER; tempStart.source = Source.USER;
ConfigBuilderPlugin treatmentsInterface = MainApp.getConfigBuilder(); ConfigBuilderPlugin treatmentsInterface = MainApp.getConfigBuilder();
@ -505,7 +512,7 @@ public class ComboPlugin implements PluginBase, PumpInterface {
pumpEnactResult.isPercent = true; pumpEnactResult.isPercent = true;
// Combo would have bailed if this wasn't set properly. Maybe we should // Combo would have bailed if this wasn't set properly. Maybe we should
// have the command return this anyways ... // have the command return this anyways ...
pumpEnactResult.percent = percent; pumpEnactResult.percent = adjustedPercent;
pumpEnactResult.duration = durationInMinutes; pumpEnactResult.duration = durationInMinutes;
return pumpEnactResult; return pumpEnactResult;
} }