Merge branch 're-add-pump-time-check' into combo-scripter-v2

* re-add-pump-time-check:
  Shorten/make clearer message on pump clock being off.
  Pump time warning: urgency level based on how much the time is off.
  Check pump time not last connection time
  Re-add warning if pump time is off (needed for basal rates).
  RuffyScripter: read/infer pump time from menu.
This commit is contained in:
Johannes Mockenhaupt 2017-12-09 19:45:30 +01:00
commit 279d322c53
No known key found for this signature in database
GPG key ID: 9E1EA6AF7BBBB0D1
3 changed files with 32 additions and 4 deletions

View file

@ -46,7 +46,6 @@ import info.nightscout.androidaps.plugins.Overview.events.EventOverviewBolusProg
import info.nightscout.androidaps.plugins.Overview.notifications.Notification;
import info.nightscout.androidaps.plugins.PumpCombo.events.EventComboPumpUpdateGUI;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.SP;
import static de.jotomo.ruffy.spi.BolusProgressReporter.State.FINISHED;
@ -703,10 +702,25 @@ public class ComboPlugin implements PluginBase, PumpInterface, ConstraintsInterf
}
checkAndResolveTbrMismatch(preCheckResult.state);
checkPumpTime(preCheckResult.state);
return null;
}
/** Check pump time (on the main menu) and raise notification if time is off.
* (setting clock is not supported by ruffy) */
private void checkPumpTime(PumpState state) {
if (state.pumpTime == 0) {
// time couldn't be read (e.g. a warning is displayed on the menu , hiding the time field)
} else if (Math.abs(state.pumpTime - System.currentTimeMillis()) >= 10 * 60 * 1000) {
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.sResources.getString(R.string.combo_notification_check_time_date), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(notification));
} else if (Math.abs(state.pumpTime - System.currentTimeMillis()) >= 3 * 60 * 1000) {
Notification notification = new Notification(Notification.COMBO_PUMP_ALARM, MainApp.sResources.getString(R.string.combo_notification_check_time_date), Notification.NORMAL);
MainApp.bus().post(new EventNewNotification(notification));
}
}
private void notifyAboutPumpWarning(WarningOrErrorCode activeAlert) {
if (activeAlert.warningCode == null ||
(!activeAlert.warningCode.equals(PumpWarningCodes.CARTRIDGE_LOW)
@ -797,7 +811,7 @@ public class ComboPlugin implements PluginBase, PumpInterface, ConstraintsInterf
/**
* Reads the pump's history and updates the DB accordingly.
*
* <p>
* Only ever called by #readAllPumpData which is triggered by the user via the combo fragment
* which warns the user against doing this.
*/
@ -1016,4 +1030,4 @@ public class ComboPlugin implements PluginBase, PumpInterface, ConstraintsInterf
public Double applyMaxIOBConstraints(Double maxIob) {
return lowSuspendOnlyLoopEnforcetTill < System.currentTimeMillis() ? maxIob : 0;
}
}
}

View file

@ -2,8 +2,11 @@ package de.jotomo.ruffy.spi;
/** State displayed on the main screen of the pump. */
public class PumpState {
/** Time the state was captured. This is NOT the pump's time! */
/** Time the state was captured. */
public long timestamp;
/** Pump time. Note that this is derived from the time displayed on the main menu and assumes
* the date is set correctly */
public long pumpTime;
public String menu = null;
public boolean suspended;

View file

@ -22,6 +22,7 @@ import org.monkey.d.ruffy.ruffy.driver.display.menu.MenuTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@ -509,12 +510,22 @@ public class RuffyScripter implements RuffyCommands {
}
state.batteryState = ((int) menu.getAttribute(MenuAttribute.BATTERY_STATE));
state.insulinState = ((int) menu.getAttribute(MenuAttribute.INSULIN_STATE));
MenuTime time = (MenuTime) menu.getAttribute(MenuAttribute.TIME);
Date date = new Date();
date.setHours(time.getHour());
date.setMinutes(time.getMinute());
state.pumpTime = date.getTime();
} else if (menuType == MenuType.WARNING_OR_ERROR) {
state.activeAlert = readWarningOrErrorCode();
} else if (menuType == MenuType.STOP) {
state.suspended = true;
state.batteryState = ((int) menu.getAttribute(MenuAttribute.BATTERY_STATE));
state.insulinState = ((int) menu.getAttribute(MenuAttribute.INSULIN_STATE));
MenuTime time = (MenuTime) menu.getAttribute(MenuAttribute.TIME);
Date date = new Date();
date.setHours(time.getHour());
date.setMinutes(time.getMinute());
state.pumpTime = date.getTime();
}
return state;