Omnipod: improve error messages and notifications and reorganize string resources

This commit is contained in:
Bart Sopers 2020-09-24 22:52:21 +02:00
parent 1f5c8aca21
commit cf7069e64b
66 changed files with 728 additions and 823 deletions

View file

@ -13,13 +13,11 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RFSpyResponse;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RLMessage;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioPacket;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioResponse;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RLMessageType;
@ -56,7 +54,7 @@ import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
* functionality added.
*/
@Singleton
public class MedtronicCommunicationManager extends RileyLinkCommunicationManager {
public class MedtronicCommunicationManager extends RileyLinkCommunicationManager<PumpMessage> {
@Inject MedtronicPumpStatus medtronicPumpStatus;
@Inject MedtronicPumpPlugin medtronicPumpPlugin;
@ -75,7 +73,8 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
// This empty constructor must be kept, otherwise dagger injection might break!
@Inject
public MedtronicCommunicationManager() {}
public MedtronicCommunicationManager() {
}
@Inject
public void onInit() {
@ -85,9 +84,8 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
}
@Override
public RLMessage createResponseMessage(byte[] payload) {
PumpMessage pumpMessage = new PumpMessage(aapsLogger, payload);
return pumpMessage;
public PumpMessage createResponseMessage(byte[] payload) {
return new PumpMessage(aapsLogger, payload);
}
@Override
@ -170,7 +168,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
if (radioResponse.isValid()) {
PumpMessage pumpResponse = (PumpMessage) createResponseMessage(radioResponse.getPayload());
PumpMessage pumpResponse = createResponseMessage(radioResponse.getPayload());
if (!pumpResponse.isValid()) {
aapsLogger.warn(LTag.PUMPCOMM, "Response is invalid ! [interrupted={}, timeout={}]", rfSpyResponse.wasInterrupted(),
@ -545,14 +543,15 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
}
private PumpMessage sendAndListen(RLMessage msg) throws RileyLinkCommunicationException {
private PumpMessage sendAndListen(PumpMessage msg) throws RileyLinkCommunicationException {
return sendAndListen(msg, 4000); // 2000
}
// All pump communications go through this function.
protected PumpMessage sendAndListen(RLMessage msg, int timeout_ms) throws RileyLinkCommunicationException {
return (PumpMessage) super.sendAndListen(msg, timeout_ms);
@Override
protected PumpMessage sendAndListen(PumpMessage msg, int timeout_ms) throws RileyLinkCommunicationException {
return super.sendAndListen(msg, timeout_ms);
}

View file

@ -52,7 +52,6 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.common.ManufacturerType;
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction;
import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
import info.nightscout.androidaps.queue.commands.CustomCommand;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
import info.nightscout.androidaps.plugins.pump.common.data.TempBasalPair;
@ -87,6 +86,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.service.RileyLi
import info.nightscout.androidaps.plugins.pump.omnipod.ui.OmnipodFragment;
import info.nightscout.androidaps.plugins.pump.omnipod.util.AapsOmnipodUtil;
import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodAlertUtil;
import info.nightscout.androidaps.queue.commands.CustomCommand;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.FabricPrivacy;
@ -358,7 +358,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface,
rxBus.send(new EventNewNotification(notification));
} else {
if (podStateManager.isSuspended()) {
Notification notification = new Notification(Notification.OMNIPOD_POD_SUSPENDED, resourceHelper.gs(R.string.omnipod_error_pod_suspended), Notification.NORMAL);
Notification notification = new Notification(Notification.OMNIPOD_POD_SUSPENDED, resourceHelper.gs(R.string.omnipod_pod_suspended), Notification.NORMAL);
rxBus.send(new EventNewNotification(notification));
}
}
@ -711,7 +711,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface,
public PumpEnactResult executeCustomCommand(CustomCommand command) {
if (!(command instanceof OmnipodCustomCommand)) {
aapsLogger.warn(LTag.PUMP, "Unknown custom command: " + command.getClass().getName());
return new PumpEnactResult(getInjector()).success(false).enacted(false).comment(resourceHelper.gs(R.string.omnipod_unknown_custom_command, command.getClass().getName()));
return new PumpEnactResult(getInjector()).success(false).enacted(false).comment(resourceHelper.gs(R.string.omnipod_error_unknown_custom_command, command.getClass().getName()));
}
OmnipodCustomCommandType commandType = ((OmnipodCustomCommand) command).getType();
@ -735,7 +735,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface,
return updateAlertConfiguration();
default:
aapsLogger.warn(LTag.PUMP, "Unknown custom command: " + commandType);
return new PumpEnactResult(getInjector()).success(false).enacted(false).comment(resourceHelper.gs(R.string.omnipod_unknown_custom_command, commandType));
return new PumpEnactResult(getInjector()).success(false).enacted(false).comment(resourceHelper.gs(R.string.omnipod_error_unknown_custom_command, commandType));
}
}
@ -777,7 +777,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface,
Notification notification = new Notification(
Notification.OMNIPOD_POD_ALERTS_UPDATED,
resourceHelper.gs(R.string.omnipod_expiration_alerts_updated),
resourceHelper.gs(R.string.omnipod_confirmation_expiration_alerts_updated),
Notification.INFO, 60);
rxBus.send(new EventNewNotification(notification));
} else {
@ -806,7 +806,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface,
if (!requestedByUser && aapsOmnipodManager.isTimeChangeEventEnabled()) {
Notification notification = new Notification(
Notification.TIME_OR_TIMEZONE_CHANGE,
resourceHelper.gs(R.string.omnipod_time_or_timezone_change),
resourceHelper.gs(R.string.omnipod_confirmation_time_or_timezone_change),
Notification.INFO, 60);
rxBus.send(new EventNewNotification(notification));
}
@ -819,7 +819,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface,
if (aapsOmnipodManager.isTimeChangeEventEnabled()) {
Notification notification = new Notification(
Notification.TIME_OR_TIMEZONE_CHANGE,
resourceHelper.gs(R.string.omnipod_time_or_timezone_change_failed),
resourceHelper.gs(R.string.omnipod_error_automatic_time_or_timezone_change_failed),
Notification.INFO, 60);
rxBus.send(new EventNewNotification(notification));
}
@ -982,7 +982,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface,
return true;
}
private void incrementStatistics(String statsKey) {
private void incrementStatistics(int statsKey) {
long currentCount = sp.getLong(statsKey, 0L);
currentCount++;
sp.putLong(statsKey, currentCount);

View file

@ -3,11 +3,9 @@ package info.nightscout.androidaps.plugins.pump.omnipod.definition;
import info.nightscout.androidaps.plugins.pump.omnipod.R;
public class OmnipodStorageKeys {
private static final String PREFIX = "AAPS.Omnipod.";
public static class Preferences {
public static final String POD_STATE = PREFIX + "pod_state";
public static final String ACTIVE_BOLUS = PREFIX + "current_bolus";
public static final int POD_STATE = R.string.key_omnipod_pod_state;
public static final int ACTIVE_BOLUS = R.string.key_omnipod_current_bolus;
public static final int BASAL_BEEPS_ENABLED = R.string.key_omnipod_basal_beeps_enabled;
public static final int BOLUS_BEEPS_ENABLED = R.string.key_omnipod_bolus_beeps_enabled;
public static final int SMB_BEEPS_ENABLED = R.string.key_omnipod_smb_beeps_enabled;
@ -22,8 +20,8 @@ public class OmnipodStorageKeys {
}
public static class Statistics {
public static final String TBRS_SET = PREFIX + "tbrs_set";
public static final String STANDARD_BOLUSES_DELIVERED = PREFIX + "std_boluses_delivered";
public static final String SMB_BOLUSES_DELIVERED = PREFIX + "smb_boluses_delivered";
public static final int TBRS_SET = R.string.key_omnipod_tbrs_set;
public static final int STANDARD_BOLUSES_DELIVERED = R.string.key_omnipod_std_boluses_delivered;
public static final int SMB_BOLUSES_DELIVERED = R.string.key_omnipod_smb_boluses_delivered;
}
}

View file

@ -16,7 +16,7 @@ public enum PodHistoryEntryType {
PAIR_AND_PRIME(1, R.string.omnipod_init_pod_wizard_step2_title, PumpHistoryEntryGroup.Prime),
FILL_CANNULA_SET_BASAL_PROFILE(2, R.string.omnipod_init_pod_wizard_step4_title, PumpHistoryEntryGroup.Prime),
DEACTIVATE_POD(3, R.string.omnipod_cmd_deactivate_pod, PumpHistoryEntryGroup.Prime),
RESET_POD_STATE(4, R.string.omnipod_cmd_discard_pod, PumpHistoryEntryGroup.Prime),
DISCARD_POD_STATE(4, R.string.omnipod_cmd_discard_pod, PumpHistoryEntryGroup.Prime),
SET_TEMPORARY_BASAL(10, R.string.omnipod_cmd_set_tbr, PumpHistoryEntryGroup.Basal),
CANCEL_TEMPORARY_BASAL_BY_DRIVER(11, R.string.omnipod_cmd_cancel_tbr_by_driver, PumpHistoryEntryGroup.Basal),

View file

@ -6,7 +6,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.mess
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSet;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertSlot;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -16,12 +15,12 @@ public class AcknowledgeAlertsAction implements OmnipodAction<StatusResponse> {
public AcknowledgeAlertsAction(PodStateManager podStateManager, AlertSet alerts) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
if (alerts == null) {
throw new ActionInitializationException("Alert set can not be null");
throw new IllegalArgumentException("Alert set can not be null");
} else if (alerts.size() == 0) {
throw new ActionInitializationException("Alert set can not be empty");
throw new IllegalArgumentException("Alert set can not be empty");
}
this.podStateManager = podStateManager;
this.alerts = alerts;

View file

@ -9,7 +9,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.mess
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.SetInsulinScheduleCommand;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BolusDeliverySchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -23,10 +22,10 @@ public class BolusAction implements OmnipodAction<StatusResponse> {
public BolusAction(PodStateManager podStateManager, double units, Duration timeBetweenPulses,
boolean acknowledgementBeep, boolean completionBeep) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
if (timeBetweenPulses == null) {
throw new ActionInitializationException("Time between pulses cannot be null");
throw new IllegalArgumentException("Time between pulses cannot be null");
}
this.podStateManager = podStateManager;
this.units = units;

View file

@ -10,7 +10,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.mess
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -22,10 +21,10 @@ public class CancelDeliveryAction implements OmnipodAction<StatusResponse> {
public CancelDeliveryAction(PodStateManager podStateManager, EnumSet<DeliveryType> deliveryTypes,
boolean acknowledgementBeep) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
if (deliveryTypes == null) {
throw new ActionInitializationException("Delivery types cannot be null");
throw new IllegalArgumentException("Delivery types cannot be null");
}
this.podStateManager = podStateManager;
this.deliveryTypes = deliveryTypes;

View file

@ -5,7 +5,6 @@ import java.util.List;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.ConfigureAlertsCommand;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertConfiguration;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -15,10 +14,10 @@ public class ConfigureAlertsAction implements OmnipodAction<StatusResponse> {
public ConfigureAlertsAction(PodStateManager podStateManager, List<AlertConfiguration> alertConfigurations) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
if (alertConfigurations == null) {
throw new ActionInitializationException("Alert configurations cannot be null");
throw new IllegalArgumentException("Alert configurations cannot be null");
}
this.podStateManager = podStateManager;
this.alertConfigurations = alertConfigurations;

View file

@ -5,7 +5,6 @@ import java.util.EnumSet;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.DeactivatePodCommand;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -16,7 +15,7 @@ public class DeactivatePodAction implements OmnipodAction<StatusResponse> {
public DeactivatePodAction(PodStateManager podStateManager, boolean acknowledgementBeep) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
this.podStateManager = podStateManager;
this.acknowledgementBeep = acknowledgementBeep;

View file

@ -3,7 +3,6 @@ package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.act
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.GetStatusCommand;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.podinfo.PodInfoResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -13,10 +12,10 @@ public class GetPodInfoAction implements OmnipodAction<PodInfoResponse> {
public GetPodInfoAction(PodStateManager podStateManager, PodInfoType podInfoType) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
if (podInfoType == null) {
throw new ActionInitializationException("Pod info type cannot be null");
throw new IllegalArgumentException("Pod info type cannot be null");
}
this.podStateManager = podStateManager;
this.podInfoType = podInfoType;

View file

@ -3,7 +3,6 @@ package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.act
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.GetStatusCommand;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -12,7 +11,7 @@ public class GetStatusAction implements OmnipodAction<StatusResponse> {
public GetStatusAction(PodStateManager podState) {
if (podState == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
this.podStateManager = podState;
}

View file

@ -11,7 +11,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.AlertCo
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPodProgressException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -26,10 +25,10 @@ public class InsertCannulaAction implements OmnipodAction<StatusResponse> {
public InsertCannulaAction(PodStateManager podStateManager, BasalSchedule initialBasalSchedule,
Duration expirationReminderTimeBeforeShutdown, Integer lowReservoirAlertUnits) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
if (initialBasalSchedule == null) {
throw new ActionInitializationException("Initial basal schedule cannot be null");
throw new IllegalArgumentException("Initial basal schedule cannot be null");
}
this.podStateManager = podStateManager;
this.initialBasalSchedule = initialBasalSchedule;

View file

@ -3,7 +3,6 @@ package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.act
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.service.PrimeService;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPodProgressException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -15,10 +14,10 @@ public class PrimeAction implements OmnipodAction<StatusResponse> {
public PrimeAction(PrimeService primeService, PodStateManager podStateManager) {
if (primeService == null) {
throw new ActionInitializationException("Prime service cannot be null");
throw new IllegalArgumentException("Prime service cannot be null");
}
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
this.service = primeService;
this.podStateManager = podStateManager;

View file

@ -9,7 +9,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.mess
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.SetInsulinScheduleCommand;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -23,13 +22,13 @@ public class SetBasalScheduleAction implements OmnipodAction<StatusResponse> {
public SetBasalScheduleAction(PodStateManager podStateManager, BasalSchedule basalSchedule,
boolean confidenceReminder, Duration scheduleOffset, boolean acknowledgementBeep) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
if (basalSchedule == null) {
throw new ActionInitializationException("Basal schedule cannot be null");
throw new IllegalArgumentException("Basal schedule cannot be null");
}
if (scheduleOffset == null) {
throw new ActionInitializationException("Schedule offset cannot be null");
throw new IllegalArgumentException("Schedule offset cannot be null");
}
this.podStateManager = podStateManager;
this.basalSchedule = basalSchedule;

View file

@ -10,7 +10,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.mess
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.SetInsulinScheduleCommand;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.TempBasalExtraCommand;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.rileylink.manager.OmnipodRileyLinkCommunicationManager;
@ -24,10 +23,10 @@ public class SetTempBasalAction implements OmnipodAction<StatusResponse> {
public SetTempBasalAction(PodStateManager podStateManager, double rate, Duration duration,
boolean acknowledgementBeep, boolean completionBeep) {
if (podStateManager == null) {
throw new ActionInitializationException("Pod state manager cannot be null");
throw new IllegalArgumentException("Pod state manager cannot be null");
}
if (duration == null) {
throw new ActionInitializationException("Duration cannot be null");
throw new IllegalArgumentException("Duration cannot be null");
}
this.podStateManager = podStateManager;
this.rate = rate;

View file

@ -6,7 +6,6 @@ import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommandInitializationException;
public class BolusExtraCommand extends MessageBlock {
private final boolean acknowledgementBeep;
@ -29,9 +28,9 @@ public class BolusExtraCommand extends MessageBlock {
boolean acknowledgementBeep, boolean completionBeep,
Duration programReminderInterval, Duration timeBetweenPulses) {
if (units <= 0D) {
throw new CommandInitializationException("Units should be > 0");
throw new IllegalArgumentException("Units should be > 0");
} else if (units > OmnipodConstants.MAX_BOLUS) {
throw new CommandInitializationException("Units exceeds max bolus");
throw new IllegalArgumentException("Units exceeds max bolus");
}
this.units = units;
this.squareWaveUnits = squareWaveUnits;

View file

@ -12,7 +12,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedul
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BolusDeliverySchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.DeliverySchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.TempBasalDeliverySchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommandInitializationException;
public class SetInsulinScheduleCommand extends NonceResyncableMessageBlock {
@ -51,12 +50,12 @@ public class SetInsulinScheduleCommand extends NonceResyncableMessageBlock {
// Temp basal
public SetInsulinScheduleCommand(int nonce, double tempBasalRate, Duration duration) {
if (tempBasalRate < 0D) {
throw new CommandInitializationException("Rate should be >= 0");
throw new IllegalArgumentException("Rate should be >= 0");
} else if (tempBasalRate > OmnipodConstants.MAX_BASAL_RATE) {
throw new CommandInitializationException("Rate exceeds max basal rate");
throw new IllegalArgumentException("Rate exceeds max basal rate");
}
if (duration.isLongerThan(OmnipodConstants.MAX_TEMP_BASAL_DURATION)) {
throw new CommandInitializationException("Duration exceeds max temp basal duration");
throw new IllegalArgumentException("Duration exceeds max temp basal duration");
}
int pulsesPerHour = (int) Math.round(tempBasalRate / OmnipodConstants.POD_PULSE_SIZE);
int pulsesPerSegment = pulsesPerHour / 2;

View file

@ -10,7 +10,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.mess
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.MessageBlockType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.RateEntry;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommandInitializationException;
public class TempBasalExtraCommand extends MessageBlock {
private final boolean acknowledgementBeep;
@ -24,12 +23,12 @@ public class TempBasalExtraCommand extends MessageBlock {
public TempBasalExtraCommand(double rate, Duration duration, boolean acknowledgementBeep, boolean completionBeep,
Duration programReminderInterval) {
if (rate < 0D) {
throw new CommandInitializationException("Rate should be >= 0");
throw new IllegalArgumentException("Rate should be >= 0");
} else if (rate > OmnipodConstants.MAX_BASAL_RATE) {
throw new CommandInitializationException("Rate exceeds max basal rate");
throw new IllegalArgumentException("Rate exceeds max basal rate");
}
if (duration.isLongerThan(OmnipodConstants.MAX_TEMP_BASAL_DURATION)) {
throw new CommandInitializationException("Duration exceeds max temp basal duration");
throw new IllegalArgumentException("Duration exceeds max temp basal duration");
}
this.acknowledgementBeep = acknowledgementBeep;

View file

@ -1,7 +0,0 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception;
public class ActionInitializationException extends OmnipodException {
public ActionInitializationException(String message) {
super(message, true);
}
}

View file

@ -1,11 +0,0 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception;
public class CommandInitializationException extends OmnipodException {
public CommandInitializationException(String message) {
super(message, true);
}
public CommandInitializationException(String message, Throwable cause) {
super(message, cause, true);
}
}

View file

@ -1,34 +0,0 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception;
public class CommunicationException extends OmnipodException {
private final Type type;
public CommunicationException(Type type) {
super(type.getDescription(), false);
this.type = type;
}
public CommunicationException(Type type, Throwable cause) {
super(type.getDescription() + ": " + cause, cause, false);
this.type = type;
}
public Type getType() {
return type;
}
public enum Type {
TIMEOUT("Communication timeout"),
UNEXPECTED_EXCEPTION("Caught an unexpected Exception");
private final String description;
Type(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
}

View file

@ -0,0 +1,7 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception;
public class RileyLinkInterruptedException extends OmnipodException {
public RileyLinkInterruptedException() {
super("RileyLink interrupted", false);
}
}

View file

@ -0,0 +1,8 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception;
// Response indicating that there was a timeout in communication between the RileyLink and the Pod
public class RileyLinkTimeoutException extends OmnipodException {
public RileyLinkTimeoutException() {
super("Timeout in communication between RileyLink and Pod", false);
}
}

View file

@ -0,0 +1,7 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception;
public class RileyLinkUnexpectedException extends OmnipodException {
public RileyLinkUnexpectedException(Throwable cause) {
super("Unexpected Exception during RileyLink communication", cause, false);
}
}

View file

@ -0,0 +1,8 @@
package info.nightscout.androidaps.plugins.pump.omnipod.driver.exception;
// Indicates that we didn't get any response from the RL
public class RileyLinkUnreachableException extends OmnipodException {
public RileyLinkUnreachableException() {
super("Timeout in communication between phone and RileyLink", false);
}
}

View file

@ -41,7 +41,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfo
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodProgressStatus;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommandFailedAfterChangingDeliveryStatusException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommunicationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.DeliveryStatusVerificationFailedException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalDeliveryStatusException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException;
@ -595,7 +594,7 @@ public class OmnipodManager {
logStartingCommandExecution("verifyCommand");
try {
return supplier.get();
} catch (Exception originalException) {
} catch (OmnipodException originalException) {
if (isCertainFailure(originalException)) {
throw originalException;
} else {
@ -608,18 +607,11 @@ public class OmnipodManager {
return statusResponse;
} catch (NonceOutOfSyncException verificationException) {
aapsLogger.error(LTag.PUMPCOMM, "Command resolved to FAILURE (CERTAIN_FAILURE)", verificationException);
if (originalException instanceof OmnipodException) {
((OmnipodException) originalException).setCertainFailure(true);
throw originalException;
} else {
OmnipodException newException = new CommunicationException(CommunicationException.Type.UNEXPECTED_EXCEPTION, originalException);
newException.setCertainFailure(true);
throw newException;
}
aapsLogger.info(LTag.PUMPCOMM, "Command resolved to FAILURE (CERTAIN_FAILURE)", verificationException);
originalException.setCertainFailure(true);
throw originalException;
} catch (Exception verificationException) {
aapsLogger.error(LTag.PUMPCOMM, "Command unresolved (UNCERTAIN_FAILURE)", verificationException);
aapsLogger.warn(LTag.PUMPCOMM, "Command unresolved (UNCERTAIN_FAILURE)", verificationException);
throw originalException;
}
}

View file

@ -47,10 +47,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.Omnipod
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalSchedule;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.schedule.BasalScheduleEntry;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.ActionInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommandFailedAfterChangingDeliveryStatusException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommandInitializationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommunicationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CrcMismatchException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.DeliveryStatusVerificationFailedException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalDeliveryStatusException;
@ -67,6 +64,10 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NotEnoug
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.OmnipodException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodReturnedErrorResponseException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkInterruptedException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkTimeoutException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkUnexpectedException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkUnreachableException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.OmnipodManager;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.SetupActionResult;
@ -153,10 +154,10 @@ public class AapsOmnipodManager {
return new PumpEnactResult(injector).success(true).enacted(true);
} catch (Exception ex) {
String comment = translateException(ex);
podInitReceiver.returnInitTaskStatus(podInitActionType, false, comment);
addFailureToHistory(System.currentTimeMillis(), PodHistoryEntryType.PAIR_AND_PRIME, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
podInitReceiver.returnInitTaskStatus(podInitActionType, false, errorMessage);
addFailureToHistory(System.currentTimeMillis(), PodHistoryEntryType.PAIR_AND_PRIME, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
}
@ -173,20 +174,15 @@ public class AapsOmnipodManager {
}
try {
BasalSchedule basalSchedule;
try {
basalSchedule = mapProfileToBasalSchedule(profile);
} catch (Exception ex) {
throw new CommandInitializationException("Basal profile mapping failed", ex);
}
BasalSchedule basalSchedule = mapProfileToBasalSchedule(profile);
executeCommand(() -> delegate.insertCannula(basalSchedule, omnipodAlertUtil.getExpirationReminderTimeBeforeShutdown(), omnipodAlertUtil.getLowReservoirAlertUnits()).subscribe(res -> //
handleSetupActionResult(podInitActionType, podInitReceiver, res, System.currentTimeMillis(), profile)));
} catch (Exception ex) {
String comment = translateException(ex);
podInitReceiver.returnInitTaskStatus(podInitActionType, false, comment);
addFailureToHistory(PodHistoryEntryType.FILL_CANNULA_SET_BASAL_PROFILE, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
podInitReceiver.returnInitTaskStatus(podInitActionType, false, errorMessage);
addFailureToHistory(PodHistoryEntryType.FILL_CANNULA_SET_BASAL_PROFILE, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
rxBus.send(new EventDismissNotification(Notification.OMNIPOD_POD_NOT_ATTACHED));
@ -200,9 +196,9 @@ public class AapsOmnipodManager {
try {
executeCommand(() -> delegate.configureAlerts(alertConfigurations));
} catch (Exception ex) {
String comment = translateException(ex);
addFailureToHistory(PodHistoryEntryType.CONFIGURE_ALERTS, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(PodHistoryEntryType.CONFIGURE_ALERTS, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
addSuccessToHistory(PodHistoryEntryType.CONFIGURE_ALERTS, alertConfigurations);
@ -215,9 +211,9 @@ public class AapsOmnipodManager {
try {
statusResponse = executeCommand(delegate::getPodStatus);
} catch (Exception ex) {
String comment = translateException(ex);
addFailureToHistory(PodHistoryEntryType.GET_POD_STATUS, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(PodHistoryEntryType.GET_POD_STATUS, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
addSuccessToHistory(PodHistoryEntryType.GET_POD_STATUS, statusResponse);
@ -228,10 +224,10 @@ public class AapsOmnipodManager {
try {
executeCommand(delegate::deactivatePod);
} catch (Exception ex) {
String comment = translateException(ex);
podInitReceiver.returnInitTaskStatus(PodInitActionType.DEACTIVATE_POD_WIZARD_STEP, false, comment);
addFailureToHistory(PodHistoryEntryType.DEACTIVATE_POD, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
podInitReceiver.returnInitTaskStatus(PodInitActionType.DEACTIVATE_POD_WIZARD_STEP, false, errorMessage);
addFailureToHistory(PodHistoryEntryType.DEACTIVATE_POD, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
addSuccessToHistory(PodHistoryEntryType.DEACTIVATE_POD, null);
@ -243,50 +239,46 @@ public class AapsOmnipodManager {
public PumpEnactResult setBasalProfile(Profile profile, boolean showNotifications) {
if (profile == null) {
String comment = getStringResource(R.string.omnipod_error_failed_to_set_profile_empty_profile);
showNotification(Notification.FAILED_UDPATE_PROFILE, comment, Notification.URGENT, R.raw.boluserror);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String note = getStringResource(R.string.omnipod_error_failed_to_set_profile_empty_profile);
showNotification(Notification.FAILED_UDPATE_PROFILE, note, Notification.URGENT, R.raw.boluserror);
return new PumpEnactResult(injector).success(false).enacted(false).comment(note);
}
PodHistoryEntryType historyEntryType = podStateManager.isSuspended() ? PodHistoryEntryType.RESUME_DELIVERY : PodHistoryEntryType.SET_BASAL_SCHEDULE;
try {
BasalSchedule basalSchedule;
try {
basalSchedule = mapProfileToBasalSchedule(profile);
} catch (Exception ex) {
throw new CommandInitializationException("Basal profile mapping failed", ex);
}
BasalSchedule basalSchedule = mapProfileToBasalSchedule(profile);
executeCommand(() -> delegate.setBasalSchedule(basalSchedule, isBasalBeepsEnabled()));
} catch (CommandFailedAfterChangingDeliveryStatusException ex) {
createSuspendedFakeTbrIfNotExists();
String comment = getStringResource(R.string.omnipod_error_set_basal_failed_delivery_suspended);
if (showNotifications) {
showNotification(Notification.FAILED_UDPATE_PROFILE, comment, Notification.URGENT, R.raw.boluserror);
showNotification(Notification.FAILED_UDPATE_PROFILE, getStringResource(R.string.omnipod_error_set_basal_failed_delivery_suspended), Notification.URGENT, R.raw.boluserror);
}
addFailureToHistory(historyEntryType, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex.getCause());
addFailureToHistory(historyEntryType, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
} catch (DeliveryStatusVerificationFailedException ex) {
String comment;
if (ex.getExpectedStatus() == DeliveryStatus.SUSPENDED) {
// Happened when suspending delivery before setting the new profile
comment = getStringResource(R.string.omnipod_error_set_basal_failed_delivery_might_be_suspended);
} else {
// Happened when setting the new profile (after suspending delivery)
comment = getStringResource(R.string.omnipod_error_set_basal_might_have_failed_delivery_might_be_suspended);
}
if (showNotifications) {
showNotification(Notification.FAILED_UDPATE_PROFILE, comment, Notification.URGENT, R.raw.boluserror);
String note;
if (ex.getExpectedStatus() == DeliveryStatus.SUSPENDED) {
// Happened when suspending delivery before setting the new profile
note = getStringResource(R.string.omnipod_error_set_basal_failed_delivery_might_be_suspended);
} else {
// Happened when setting the new profile (after suspending delivery)
note = getStringResource(R.string.omnipod_error_set_basal_might_have_failed_delivery_might_be_suspended);
}
showNotification(Notification.FAILED_UDPATE_PROFILE, note, Notification.URGENT, R.raw.boluserror);
}
addFailureToHistory(historyEntryType, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex.getCause());
addFailureToHistory(historyEntryType, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
} catch (Exception ex) {
String comment = translateException(ex);
if (showNotifications) {
showNotification(Notification.FAILED_UDPATE_PROFILE, comment, Notification.URGENT, R.raw.boluserror);
showNotification(Notification.FAILED_UDPATE_PROFILE, getStringResource(R.string.omnipod_error_set_basal_failed), Notification.URGENT, R.raw.boluserror);
}
addFailureToHistory(historyEntryType, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(historyEntryType, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
if (historyEntryType == PodHistoryEntryType.RESUME_DELIVERY) {
@ -305,7 +297,7 @@ public class AapsOmnipodManager {
public PumpEnactResult discardPodState() {
podStateManager.discardState();
addSuccessToHistory(System.currentTimeMillis(), PodHistoryEntryType.RESET_POD_STATE, null);
addSuccessToHistory(System.currentTimeMillis(), PodHistoryEntryType.DISCARD_POD_STATE, null);
createSuspendedFakeTbrIfNotExists();
@ -329,17 +321,17 @@ public class AapsOmnipodManager {
bolusStarted = new Date();
} catch (Exception ex) {
String comment = translateException(ex);
addFailureToHistory(System.currentTimeMillis(), PodHistoryEntryType.SET_BOLUS, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(System.currentTimeMillis(), PodHistoryEntryType.SET_BOLUS, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
if (OmnipodManager.CommandDeliveryStatus.UNCERTAIN_FAILURE.equals(bolusCommandResult.getCommandDeliveryStatus())) {
// For safety reasons, we treat this as a bolus that has successfully been delivered, in order to prevent insulin overdose
if (detailedBolusInfo.isSMB) {
showNotification(getStringResource(R.string.omnipod_bolus_failed_uncertain_smb, detailedBolusInfo.insulin), Notification.URGENT, R.raw.boluserror);
showNotification(getStringResource(R.string.omnipod_error_bolus_failed_uncertain_smb, detailedBolusInfo.insulin), Notification.URGENT, R.raw.boluserror);
} else {
showNotification(getStringResource(R.string.omnipod_bolus_failed_uncertain), Notification.URGENT, R.raw.boluserror);
showNotification(getStringResource(R.string.omnipod_error_bolus_failed_uncertain), Notification.URGENT, R.raw.boluserror);
}
}
@ -399,7 +391,7 @@ public class AapsOmnipodManager {
aapsLogger.debug(LTag.PUMP, "Bolus command successfully executed. Proceeding bolus cancellation");
} else {
aapsLogger.debug(LTag.PUMP, "Not cancelling bolus: bolus command failed");
String comment = getStringResource(R.string.omnipod_bolus_did_not_succeed);
String comment = getStringResource(R.string.omnipod_error_bolus_did_not_succeed);
addFailureToHistory(System.currentTimeMillis(), PodHistoryEntryType.CANCEL_BOLUS, comment);
return new PumpEnactResult(injector).success(true).enacted(false).comment(comment);
}
@ -433,17 +425,17 @@ public class AapsOmnipodManager {
try {
executeCommand(() -> delegate.setTemporaryBasal(PumpType.Insulet_Omnipod.determineCorrectBasalSize(tempBasalPair.getInsulinRate()), Duration.standardMinutes(tempBasalPair.getDurationMinutes()), beepsEnabled, beepsEnabled));
} catch (CommandFailedAfterChangingDeliveryStatusException ex) {
String comment = getStringResource(R.string.omnipod_cancelled_old_tbr_failed_to_set_new);
addFailureToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, comment);
showNotification(comment, Notification.NORMAL, null);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
showNotification(getStringResource(R.string.omnipod_error_cancelled_old_tbr_failed_to_set_new), Notification.NORMAL, null);
String errorMessage = translateException(ex.getCause());
addFailureToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
} catch (DeliveryStatusVerificationFailedException ex) {
String comment;
String errorMessage = translateException(ex.getCause());
String note;
if (ex.getExpectedStatus() == DeliveryStatus.TEMP_BASAL_RUNNING) {
// Happened after cancelling the old TBR, when attempting to set new TBR
comment = getStringResource(R.string.omnipod_error_set_temp_basal_failed_old_tbr_cancelled_new_might_have_failed);
long pumpId = addFailureToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, comment);
note = getStringResource(R.string.omnipod_error_set_temp_basal_failed_old_tbr_cancelled_new_might_have_failed);
// Assume that setting the temp basal succeeded here, because in case it didn't succeed,
// The next StatusResponse that we receive will allow us to recover from the wrong state
@ -451,19 +443,20 @@ public class AapsOmnipodManager {
// If we would assume that the TBR didn't succeed, we couldn't properly recover upon the next StatusResponse,
// as we could only see that the Pod is running a TBR, but we don't know the rate and duration as
// the Pod doesn't provide this information
long pumpId = addFailureToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, errorMessage);
addTempBasalTreatment(System.currentTimeMillis(), pumpId, tempBasalPair);
} else {
// Happened when attempting to cancel the old TBR
comment = getStringResource(R.string.omnipod_error_set_temp_basal_failed_old_tbr_might_be_cancelled);
addFailureToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, comment);
note = getStringResource(R.string.omnipod_error_set_temp_basal_failed_old_tbr_might_be_cancelled);
addFailureToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, errorMessage);
}
showNotification(note, Notification.URGENT, R.raw.boluserror);
showNotification(comment, Notification.URGENT, R.raw.boluserror);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
} catch (Exception ex) {
String comment = translateException(ex);
addFailureToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
long pumpId = addSuccessToHistory(PodHistoryEntryType.SET_TEMPORARY_BASAL, tempBasalPair);
@ -477,15 +470,12 @@ public class AapsOmnipodManager {
try {
executeCommand(() -> delegate.cancelTemporaryBasal(isTbrBeepsEnabled()));
} catch (Exception ex) {
String comment;
if (ex instanceof OmnipodException && !((OmnipodException) ex).isCertainFailure()) {
comment = getStringResource(R.string.omnipod_error_cancel_temp_basal_failed_uncertain);
showNotification(comment, Notification.URGENT, R.raw.boluserror);
} else {
comment = translateException(ex);
showNotification(getStringResource(R.string.omnipod_error_cancel_temp_basal_failed_uncertain), Notification.URGENT, R.raw.boluserror);
}
addFailureToHistory(PodHistoryEntryType.CANCEL_TEMPORARY_BASAL, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(PodHistoryEntryType.CANCEL_TEMPORARY_BASAL, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
long pumpId = addSuccessToHistory(PodHistoryEntryType.CANCEL_TEMPORARY_BASAL, null);
@ -505,9 +495,9 @@ public class AapsOmnipodManager {
try {
executeCommand(delegate::acknowledgeAlerts);
} catch (Exception ex) {
String comment = translateException(ex);
addFailureToHistory(PodHistoryEntryType.ACKNOWLEDGE_ALERTS, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(PodHistoryEntryType.ACKNOWLEDGE_ALERTS, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
addSuccessToHistory(PodHistoryEntryType.ACKNOWLEDGE_ALERTS, null);
@ -518,14 +508,9 @@ public class AapsOmnipodManager {
try {
executeCommand(() -> delegate.suspendDelivery(isBasalBeepsEnabled()));
} catch (Exception ex) {
String comment;
if (ex instanceof OmnipodException && !((OmnipodException) ex).isCertainFailure()) {
comment = getStringResource(R.string.omnipod_error_suspend_delivery_failed_uncertain);
} else {
comment = getStringResource(R.string.omnipod_error_suspend_delivery_failed);
}
addFailureToHistory(PodHistoryEntryType.SUSPEND_DELIVERY, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(PodHistoryEntryType.SUSPEND_DELIVERY, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
addSuccessToHistory(PodHistoryEntryType.SUSPEND_DELIVERY, null);
@ -540,23 +525,23 @@ public class AapsOmnipodManager {
executeCommand(() -> delegate.setTime(isBasalBeepsEnabled()));
} catch (CommandFailedAfterChangingDeliveryStatusException ex) {
createSuspendedFakeTbrIfNotExists();
String comment = getStringResource(R.string.omnipod_error_set_time_failed_delivery_suspended);
if (showNotifications) {
showNotification(comment, Notification.URGENT, R.raw.boluserror);
showNotification(getStringResource(R.string.omnipod_error_set_time_failed_delivery_suspended), Notification.URGENT, R.raw.boluserror);
}
addFailureToHistory(PodHistoryEntryType.SET_TIME, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex.getCause());
addFailureToHistory(PodHistoryEntryType.SET_TIME, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
} catch (DeliveryStatusVerificationFailedException ex) {
String comment = getStringResource(R.string.omnipod_error_set_time_failed_delivery_might_be_suspended);
if (showNotifications) {
showNotification(comment, Notification.URGENT, R.raw.boluserror);
showNotification(getStringResource(R.string.omnipod_error_set_time_failed_delivery_might_be_suspended), Notification.URGENT, R.raw.boluserror);
}
addFailureToHistory(PodHistoryEntryType.SET_TIME, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex.getCause());
addFailureToHistory(PodHistoryEntryType.SET_TIME, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
} catch (Exception ex) {
String comment = translateException(ex);
addFailureToHistory(PodHistoryEntryType.SET_TIME, comment);
return new PumpEnactResult(injector).success(false).enacted(false).comment(comment);
String errorMessage = translateException(ex);
addFailureToHistory(PodHistoryEntryType.SET_TIME, errorMessage);
return new PumpEnactResult(injector).success(false).enacted(false).comment(errorMessage);
}
addSuccessToHistory(PodHistoryEntryType.SET_TIME, null);
@ -732,12 +717,12 @@ public class AapsOmnipodManager {
switch (res.getResultType()) {
case FAILURE: {
aapsLogger.error(LTag.PUMP, "Setup action failed: illegal setup progress: {}", res.getPodProgressStatus());
comment = getStringResource(R.string.omnipod_driver_error_invalid_progress_state, res.getPodProgressStatus());
comment = getStringResource(R.string.omnipod_error_invalid_progress_state, res.getPodProgressStatus());
}
break;
case VERIFICATION_FAILURE: {
aapsLogger.error(LTag.PUMP, "Setup action verification failed: caught exception", res.getException());
comment = getStringResource(R.string.omnipod_driver_error_setup_action_verification_failed);
comment = getStringResource(R.string.omnipod_error_setup_action_verification_failed);
}
break;
}
@ -781,51 +766,48 @@ public class AapsOmnipodManager {
}
}
public String translateException(Exception ex) {
public String translateException(Throwable ex) {
String comment;
if (ex instanceof OmnipodException) {
if (ex instanceof ActionInitializationException || ex instanceof CommandInitializationException) {
comment = getStringResource(R.string.omnipod_driver_error_invalid_parameters);
} else if (ex instanceof CommunicationException) {
if (((CommunicationException) ex).getType() == CommunicationException.Type.TIMEOUT) {
comment = getStringResource(R.string.omnipod_driver_error_communication_failed_timeout);
} else {
comment = getStringResource(R.string.omnipod_driver_error_communication_failed_unexpected_exception);
}
} else if (ex instanceof CrcMismatchException) {
comment = getStringResource(R.string.omnipod_driver_error_crc_mismatch);
} else if (ex instanceof IllegalPacketTypeException) {
comment = getStringResource(R.string.omnipod_driver_error_invalid_packet_type);
} else if (ex instanceof IllegalPodProgressException || ex instanceof IllegalDeliveryStatusException) {
comment = getStringResource(R.string.omnipod_driver_error_invalid_progress_state);
} else if (ex instanceof IllegalVersionResponseTypeException) {
comment = getStringResource(R.string.omnipod_driver_error_invalid_response);
} else if (ex instanceof IllegalResponseException) {
comment = getStringResource(R.string.omnipod_driver_error_invalid_response);
} else if (ex instanceof IllegalMessageSequenceNumberException) {
comment = getStringResource(R.string.omnipod_driver_error_invalid_message_sequence_number);
} else if (ex instanceof IllegalMessageAddressException) {
comment = getStringResource(R.string.omnipod_driver_error_invalid_message_address);
} else if (ex instanceof MessageDecodingException) {
comment = getStringResource(R.string.omnipod_driver_error_message_decoding_failed);
} else if (ex instanceof NonceOutOfSyncException) {
comment = getStringResource(R.string.omnipod_driver_error_nonce_out_of_sync);
} else if (ex instanceof NonceResyncException) {
comment = getStringResource(R.string.omnipod_driver_error_nonce_resync_failed);
} else if (ex instanceof NotEnoughDataException) {
comment = getStringResource(R.string.omnipod_driver_error_not_enough_data);
} else if (ex instanceof PodFaultException) {
FaultEventCode faultEventCode = ((PodFaultException) ex).getFaultEvent().getFaultEventCode();
comment = createPodFaultErrorMessage(faultEventCode);
} else if (ex instanceof PodReturnedErrorResponseException) {
comment = getStringResource(R.string.omnipod_driver_error_pod_returned_error_response);
} else {
// Shouldn't be reachable
comment = getStringResource(R.string.omnipod_driver_error_unexpected_exception_type, ex.getClass().getName(), ex.getMessage());
}
if (ex instanceof CrcMismatchException) {
comment = getStringResource(R.string.omnipod_error_crc_mismatch);
} else if (ex instanceof IllegalPacketTypeException) {
comment = getStringResource(R.string.omnipod_error_invalid_packet_type);
} else if (ex instanceof IllegalPodProgressException || ex instanceof IllegalDeliveryStatusException) {
comment = getStringResource(R.string.omnipod_error_invalid_progress_state);
} else if (ex instanceof IllegalVersionResponseTypeException) {
comment = getStringResource(R.string.omnipod_error_invalid_response);
} else if (ex instanceof IllegalResponseException) {
comment = getStringResource(R.string.omnipod_error_invalid_response);
} else if (ex instanceof IllegalMessageSequenceNumberException) {
comment = getStringResource(R.string.omnipod_error_invalid_message_sequence_number);
} else if (ex instanceof IllegalMessageAddressException) {
comment = getStringResource(R.string.omnipod_error_invalid_message_address);
} else if (ex instanceof MessageDecodingException) {
comment = getStringResource(R.string.omnipod_error_message_decoding_failed);
} else if (ex instanceof NonceOutOfSyncException) {
comment = getStringResource(R.string.omnipod_error_nonce_out_of_sync);
} else if (ex instanceof NonceResyncException) {
comment = getStringResource(R.string.omnipod_error_nonce_resync_failed);
} else if (ex instanceof NotEnoughDataException) {
comment = getStringResource(R.string.omnipod_error_not_enough_data);
} else if (ex instanceof PodFaultException) {
FaultEventCode faultEventCode = ((PodFaultException) ex).getFaultEvent().getFaultEventCode();
comment = createPodFaultErrorMessage(faultEventCode);
} else if (ex instanceof PodReturnedErrorResponseException) {
comment = getStringResource(R.string.omnipod_error_pod_returned_error_response);
} else if (ex instanceof RileyLinkUnreachableException) {
comment = getStringResource(R.string.omnipod_error_communication_failed_no_response_from_riley_link);
} else if (ex instanceof RileyLinkInterruptedException) {
comment = getStringResource(R.string.omnipod_error_communication_failed_riley_link_interrupted);
} else if (ex instanceof RileyLinkTimeoutException) {
comment = getStringResource(R.string.omnipod_error_communication_failed_no_response_from_pod);
} else if (ex instanceof RileyLinkUnexpectedException) {
Throwable cause = ex.getCause();
comment = getStringResource(R.string.omnipod_error_unexpected_exception, cause.getClass().getName(), cause.getMessage());
} else {
comment = getStringResource(R.string.omnipod_driver_error_unexpected_exception_type, ex.getClass().getName(), ex.getMessage());
// Shouldn't be reachable
comment = getStringResource(R.string.omnipod_error_unexpected_exception, ex.getClass().getName(), ex.getMessage());
}
return comment;
@ -833,7 +815,7 @@ public class AapsOmnipodManager {
private String createPodFaultErrorMessage(FaultEventCode faultEventCode) {
String comment;
comment = getStringResource(R.string.omnipod_driver_error_pod_fault,
comment = getStringResource(R.string.omnipod_error_pod_fault,
ByteUtil.convertUnsignedByteToInt(faultEventCode.getValue()), faultEventCode.name());
return comment;
}

View file

@ -12,7 +12,6 @@ import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RLMessage;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RLMessageType;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkBLEError;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
@ -30,7 +29,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.Message
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PacketType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.PodInfoType;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.CommunicationException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageAddressException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalMessageSequenceNumberException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.IllegalPacketTypeException;
@ -41,13 +39,16 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.NotEnoug
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.OmnipodException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodFaultException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.PodReturnedErrorResponseException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkTimeoutException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkUnexpectedException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.exception.RileyLinkUnreachableException;
import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager;
/**
* Created by andy on 6/29/18.
*/
@Singleton
public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunicationManager {
public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunicationManager<OmnipodPacket> {
// This empty constructor must be kept, otherwise dagger injection might break!
@Inject
public OmnipodRileyLinkCommunicationManager() {
@ -69,7 +70,7 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
}
@Override
public RLMessage createResponseMessage(byte[] payload) {
public OmnipodPacket createResponseMessage(byte[] payload) {
return new OmnipodPacket(payload);
}
@ -137,7 +138,7 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
if (responseClass.isInstance(responseMessageBlock)) {
podStateManager.setLastSuccessfulCommunication(DateTime.now());
return (T) responseMessageBlock;
return responseClass.cast(responseMessageBlock);
} else {
if (responseMessageBlock.getType() == MessageBlockType.ERROR_RESPONSE) {
ErrorResponse error = (ErrorResponse) responseMessageBlock;
@ -219,23 +220,16 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
try {
// We actually ignore previous (ack) responses if it was not last packet to send
response = exchangePackets(podStateManager, packet);
} catch (Exception ex) {
OmnipodException newException;
if (ex instanceof OmnipodException) {
newException = (OmnipodException) ex;
} else {
newException = new CommunicationException(CommunicationException.Type.UNEXPECTED_EXCEPTION, ex);
}
} catch (OmnipodException ex) {
boolean lastPacket = encodedMessage.length == 0;
// If this is not the last packet, the message wasn't fully sent,
// so it's impossible for the pod to have received the message
newException.setCertainFailure(!lastPacket);
ex.setCertainFailure(!lastPacket);
aapsLogger.debug(LTag.PUMPBTCOMM, "Caught exception in transportMessages. Set certainFailure to {} because encodedMessage.length={}", newException.isCertainFailure(), encodedMessage.length);
aapsLogger.debug(LTag.PUMPBTCOMM, "Caught OmnipodException in transportMessages. Set certainFailure to {} because encodedMessage.length={}", ex.isCertainFailure(), encodedMessage.length);
throw newException;
throw ex;
}
}
@ -261,18 +255,11 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
OmnipodPacket ackForCon = createAckPacket(podStateManager, packetAddress, ackAddressOverride);
try {
OmnipodPacket conPacket = exchangePackets(podStateManager, ackForCon, 3, 40);
if (conPacket.getPacketType() != PacketType.CON) {
throw new IllegalPacketTypeException(PacketType.CON, conPacket.getPacketType());
}
receivedMessageData = ByteUtil.concat(receivedMessageData, conPacket.getEncodedMessage());
} catch (OmnipodException ex2) {
throw ex2;
} catch (Exception ex2) {
throw new CommunicationException(CommunicationException.Type.UNEXPECTED_EXCEPTION, ex2);
OmnipodPacket conPacket = exchangePackets(podStateManager, ackForCon, 3, 40);
if (conPacket.getPacketType() != PacketType.CON) {
throw new IllegalPacketTypeException(PacketType.CON, conPacket.getPacketType());
}
receivedMessageData = ByteUtil.concat(receivedMessageData, conPacket.getEncodedMessage());
}
}
@ -317,8 +304,6 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
}
} catch (OmnipodException ex) {
aapsLogger.debug(LTag.PUMPBTCOMM, "Ignoring exception in ackUntilQuiet", ex);
} catch (Exception ex) {
throw new CommunicationException(CommunicationException.Type.UNEXPECTED_EXCEPTION, ex);
}
podStateManager.increasePacketNumber();
@ -337,24 +322,32 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
podStateManager.increasePacketNumber();
boolean gotResponseFromRileyLink = false;
while (System.currentTimeMillis() < timeoutTime) {
OmnipodPacket response;
try {
response = (OmnipodPacket) sendAndListen(packet, responseTimeoutMilliseconds, repeatCount, 9, preambleExtensionMilliseconds);
} catch (RileyLinkCommunicationException | OmnipodException ex) {
response = sendAndListen(packet, responseTimeoutMilliseconds, repeatCount, 9, preambleExtensionMilliseconds);
gotResponseFromRileyLink = true;
} catch (RileyLinkCommunicationException ex) {
if (ex.getErrorCode() != RileyLinkBLEError.NoResponse) {
gotResponseFromRileyLink = true;
}
aapsLogger.debug(LTag.PUMPBTCOMM, "Ignoring exception in exchangePackets: " + ex.getClass().getSimpleName() + ": " + ex.getMessage());
continue;
} catch (OmnipodException ex) {
gotResponseFromRileyLink = true;
aapsLogger.debug(LTag.PUMPBTCOMM, "Ignoring exception in exchangePackets: " + ex.getClass().getSimpleName() + ": " + ex.getMessage());
continue;
} catch (Exception ex) {
throw new CommunicationException(CommunicationException.Type.UNEXPECTED_EXCEPTION, ex);
throw new RileyLinkUnexpectedException(ex);
}
if (response == null) {
aapsLogger.debug(LTag.PUMPBTCOMM, "exchangePackets response is null");
continue;
} else if (!response.isValid()) {
if (!response.isValid()) {
aapsLogger.debug(LTag.PUMPBTCOMM, "exchangePackets response is invalid: " + response);
continue;
}
if (response.getAddress() != packet.getAddress() &&
response.getAddress() != OmnipodConstants.DEFAULT_ADDRESS) { // In some (strange) cases, the Pod remains a packet address of 0xffffffff during it's lifetime
aapsLogger.debug(LTag.PUMPBTCOMM, "Packet address " + response.getAddress() + " doesn't match " + packet.getAddress());
@ -371,7 +364,12 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication
return response;
}
throw new CommunicationException(CommunicationException.Type.TIMEOUT);
if (gotResponseFromRileyLink) {
throw new RileyLinkTimeoutException();
}
throw new RileyLinkUnreachableException();
}
}

View file

@ -108,13 +108,13 @@ class OmnipodFragment : DaggerFragment() {
omnipod_button_resume_delivery.setOnClickListener {
disablePodActionButtons()
commandQueue.customCommand(CommandResumeDelivery(),
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_failed_to_resume_delivery), true).messageOnSuccess(resourceHelper.gs(R.string.omnipod_delivery_resumed)))
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_error_failed_to_resume_delivery), true).messageOnSuccess(resourceHelper.gs(R.string.omnipod_confirmation_delivery_resumed)))
}
omnipod_button_refresh_status.setOnClickListener {
disablePodActionButtons()
commandQueue.customCommand(CommandGetPodStatus(),
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_failed_to_refresh_status), false))
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_error_failed_to_refresh_status), false))
}
omnipod_button_rileylink_stats.setOnClickListener {
@ -128,28 +128,28 @@ class OmnipodFragment : DaggerFragment() {
omnipod_button_acknowledge_active_alerts.setOnClickListener {
disablePodActionButtons()
commandQueue.customCommand(CommandAcknowledgeAlerts(),
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_failed_to_acknowledge_alerts), false)
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_acknowledged_alerts)))
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_error_failed_to_acknowledge_alerts), false)
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_confirmation_acknowledged_alerts)))
}
omnipod_button_suspend_delivery.setOnClickListener {
disablePodActionButtons()
commandQueue.customCommand(CommandSuspendDelivery(),
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_failed_to_suspend_delivery), true)
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_suspended_delivery)))
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_error_failed_to_suspend_delivery), true)
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_confirmation_suspended_delivery)))
}
omnipod_button_set_time.setOnClickListener {
disablePodActionButtons()
commandQueue.customCommand(CommandHandleTimeChange(true),
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_failed_to_set_time), true)
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_time_on_pod_updated)))
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_error_failed_to_set_time), true)
.messageOnSuccess(resourceHelper.gs(R.string.omnipod_confirmation_time_on_pod_updated)))
}
omnipod_button_pulse_log.setOnClickListener {
disablePodActionButtons()
commandQueue.customCommand(CommandReadPulseLog(),
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_failed_to_read_pulse_log), false))
DisplayResultDialogCallback(resourceHelper.gs(R.string.omnipod_error_failed_to_read_pulse_log), false))
}
}
@ -380,7 +380,7 @@ class OmnipodFragment : DaggerFragment() {
private fun updateLastBolus() {
if (podStateManager.isPodActivationCompleted && podStateManager.hasLastBolus()) {
var text = resourceHelper.gs(R.string.omnipod_last_bolus, omnipodPumpPlugin.model().determineCorrectBolusSize(podStateManager.lastBolusAmount), resourceHelper.gs(R.string.insulin_unit_shortname), readableDuration(podStateManager.lastBolusStartTime))
var text = resourceHelper.gs(R.string.omnipod_last_bolus_value, omnipodPumpPlugin.model().determineCorrectBolusSize(podStateManager.lastBolusAmount), resourceHelper.gs(R.string.insulin_unit_shortname), readableDuration(podStateManager.lastBolusStartTime))
val textColor: Int
if (podStateManager.isLastBolusCertain) {
@ -411,7 +411,7 @@ class OmnipodFragment : DaggerFragment() {
var text: String
val textColor: Int
text = resourceHelper.gs(R.string.omnipod_temp_basal, amount, dateUtil.timeString(startTime.millis), minutesRunning, duration.standardMinutes)
text = resourceHelper.gs(R.string.omnipod_temp_basal_value, amount, dateUtil.timeString(startTime.millis), minutesRunning, duration.standardMinutes)
if (podStateManager.isTempBasalCertain) {
textColor = Color.WHITE
} else {

View file

@ -250,7 +250,7 @@ public class PodHistoryActivity extends NoSplashAppCompatActivity {
case SET_TEMPORARY_BASAL: {
TempBasalPair tempBasalPair = aapsOmnipodUtil.getGsonInstance().fromJson(historyEntry.getData(), TempBasalPair.class);
valueView.setText(resourceHelper.gs(R.string.omnipod_cmd_tbr_value, tempBasalPair.getInsulinRate(), tempBasalPair.getDurationMinutes()));
valueView.setText(resourceHelper.gs(R.string.omnipod_history_tbr_value, tempBasalPair.getInsulinRate(), tempBasalPair.getDurationMinutes()));
}
break;
@ -265,9 +265,9 @@ public class PodHistoryActivity extends NoSplashAppCompatActivity {
case SET_BOLUS: {
if (historyEntry.getData().contains(";")) {
String[] splitVal = historyEntry.getData().split(";");
valueView.setText(resourceHelper.gs(R.string.omnipod_cmd_bolus_value_with_carbs, Double.valueOf(splitVal[0]), Double.valueOf(splitVal[1])));
valueView.setText(resourceHelper.gs(R.string.omnipod_history_bolus_value_with_carbs, Double.valueOf(splitVal[0]), Double.valueOf(splitVal[1])));
} else {
valueView.setText(resourceHelper.gs(R.string.omnipod_cmd_bolus_value, Double.valueOf(historyEntry.getData())));
valueView.setText(resourceHelper.gs(R.string.omnipod_history_bolus_value, Double.valueOf(historyEntry.getData())));
}
}
break;
@ -281,7 +281,7 @@ public class PodHistoryActivity extends NoSplashAppCompatActivity {
case CONFIGURE_ALERTS:
case CANCEL_BOLUS:
case DEACTIVATE_POD:
case RESET_POD_STATE:
case DISCARD_POD_STATE:
case ACKNOWLEDGE_ALERTS:
case SUSPEND_DELIVERY:
case RESUME_DELIVERY:

View file

@ -145,7 +145,7 @@ class PodManagementActivity : NoSplashAppCompatActivity() {
private fun discardPodAction() {
OKDialog.showConfirmation(this,
resourceHelper.gs(R.string.omnipod_cmd_discard_pod_desc), Thread {
resourceHelper.gs(R.string.omnipod_discard_pod_state_confirmation), Thread {
aapsOmnipodManager.discardPodState()
rxBus.send(EventOmnipodPumpValuesChanged())
})

View file

@ -1,9 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#72a8ff"
android:pathData="M22,5.72l-4.6,-3.86 -1.29,1.53 4.6,3.86L22,5.72zM7.88,3.39L6.6,1.86 2,5.71l1.29,1.53 4.59,-3.85zM12.5,8L11,8v6l4.75,2.85 0.75,-1.23 -4,-2.37L12.5,8zM12,4c-4.97,0 -9,4.03 -9,9s4.02,9 9,9c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9zM12,20c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,7 -3.13,7 -7,7z"/>
android:pathData="M22,5.72l-4.6,-3.86 -1.29,1.53 4.6,3.86L22,5.72zM7.88,3.39L6.6,1.86 2,5.71l1.29,1.53 4.59,-3.85zM12.5,8L11,8v6l4.75,2.85 0.75,-1.23 -4,-2.37L12.5,8zM12,4c-4.97,0 -9,4.03 -9,9s4.02,9 9,9c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9zM12,20c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,7 -3.13,7 -7,7z" />
</vector>

View file

@ -3,7 +3,7 @@
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M18.71,11.606h-0.736c-0.198,-3.001 -2.579,-5.382 -5.58,-5.58V5.29c0,-0.218 -0.177,-0.394 -0.394,-0.394s-0.394,0.177 -0.394,0.394v0.736c-3.001,0.198 -5.382,2.579 -5.58,5.58H5.29c-0.218,0 -0.394,0.177 -0.394,0.394s0.177,0.394 0.394,0.394h0.736c0.198,3.001 2.579,5.382 5.58,5.58v0.736c0,0.217 0.177,0.394 0.394,0.394s0.394,-0.177 0.394,-0.394v-0.736c3.001,-0.198 5.382,-2.579 5.58,-5.58h0.736c0.217,0 0.394,-0.177 0.394,-0.394S18.927,11.606 18.71,11.606zM17.143,11.606h-1.944c-0.179,-1.478 -1.331,-2.643 -2.804,-2.841V6.85C14.939,7.044 16.953,9.06 17.143,11.606zM13.542,12.394h0.938c-0.171,1.079 -1.01,1.93 -2.085,2.115v-0.967c0,-0.217 -0.177,-0.394 -0.394,-0.394s-0.394,0.177 -0.394,0.394v0.975c-1.111,-0.156 -1.988,-1.017 -2.163,-2.122h1.016c0.218,0 0.394,-0.177 0.394,-0.394s-0.177,-0.394 -0.394,-0.394H9.442c0.171,-1.111 1.049,-1.978 2.164,-2.134v0.987c0,0.218 0.177,0.394 0.394,0.394s0.394,-0.177 0.394,-0.394v-0.98c1.079,0.185 1.92,1.041 2.086,2.126h-0.939c-0.217,0 -0.394,0.177 -0.394,0.394S13.324,12.394 13.542,12.394zM11.606,6.851v1.906C10.095,8.921 8.903,10.1 8.72,11.606H6.864C7.053,9.062 9.064,7.047 11.606,6.851zM6.866,12.394H8.72c0.183,1.505 1.374,2.684 2.885,2.849v1.884C9.071,16.931 7.065,14.928 6.866,12.394zM12.394,17.128v-1.893c1.473,-0.197 2.625,-1.362 2.804,-2.841h1.942C16.941,14.93 14.932,16.935 12.394,17.128z"
android:fillColor="#36FF00"/>
<path
android:pathData="M18.71,11.606h-0.736c-0.198,-3.001 -2.579,-5.382 -5.58,-5.58V5.29c0,-0.218 -0.177,-0.394 -0.394,-0.394s-0.394,0.177 -0.394,0.394v0.736c-3.001,0.198 -5.382,2.579 -5.58,5.58H5.29c-0.218,0 -0.394,0.177 -0.394,0.394s0.177,0.394 0.394,0.394h0.736c0.198,3.001 2.579,5.382 5.58,5.58v0.736c0,0.217 0.177,0.394 0.394,0.394s0.394,-0.177 0.394,-0.394v-0.736c3.001,-0.198 5.382,-2.579 5.58,-5.58h0.736c0.217,0 0.394,-0.177 0.394,-0.394S18.927,11.606 18.71,11.606zM17.143,11.606h-1.944c-0.179,-1.478 -1.331,-2.643 -2.804,-2.841V6.85C14.939,7.044 16.953,9.06 17.143,11.606zM13.542,12.394h0.938c-0.171,1.079 -1.01,1.93 -2.085,2.115v-0.967c0,-0.217 -0.177,-0.394 -0.394,-0.394s-0.394,0.177 -0.394,0.394v0.975c-1.111,-0.156 -1.988,-1.017 -2.163,-2.122h1.016c0.218,0 0.394,-0.177 0.394,-0.394s-0.177,-0.394 -0.394,-0.394H9.442c0.171,-1.111 1.049,-1.978 2.164,-2.134v0.987c0,0.218 0.177,0.394 0.394,0.394s0.394,-0.177 0.394,-0.394v-0.98c1.079,0.185 1.92,1.041 2.086,2.126h-0.939c-0.217,0 -0.394,0.177 -0.394,0.394S13.324,12.394 13.542,12.394zM11.606,6.851v1.906C10.095,8.921 8.903,10.1 8.72,11.606H6.864C7.053,9.062 9.064,7.047 11.606,6.851zM6.866,12.394H8.72c0.183,1.505 1.374,2.684 2.885,2.849v1.884C9.071,16.931 7.065,14.928 6.866,12.394zM12.394,17.128v-1.893c1.473,-0.197 2.625,-1.362 2.804,-2.841h1.942C16.941,14.93 14.932,16.935 12.394,17.128z"
android:fillColor="#36FF00" />
</vector>

View file

@ -3,19 +3,19 @@
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,17.813m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"
android:fillColor="#E93057"/>
<path
android:pathData="M19.357,6.125c0.195,-0.196 0.195,-0.512 0,-0.708c-0.195,-0.195 -0.512,-0.195 -0.707,0l-2.364,2.364C14.916,7.314 13.477,7.062 12,7.062c-2.902,0 -5.674,0.925 -8.015,2.675c-0.222,0.166 -0.267,0.479 -0.102,0.7c0.166,0.222 0.479,0.266 0.7,0.102C6.751,8.919 9.315,8.063 12,8.063c1.198,0 2.369,0.177 3.493,0.512l-1.829,1.829c-0.547,-0.093 -1.1,-0.154 -1.663,-0.154c-2.212,0 -4.325,0.705 -6.111,2.039c-0.222,0.166 -0.267,0.479 -0.102,0.701c0.166,0.221 0.478,0.267 0.7,0.101C8.099,11.887 10.005,11.25 12,11.25c0.26,0 0.516,0.022 0.773,0.044l-2.215,2.215c-1.012,0.201 -1.989,0.596 -2.839,1.231c-0.222,0.165 -0.267,0.479 -0.102,0.7c0.166,0.22 0.479,0.268 0.7,0.101c0.192,-0.143 0.392,-0.271 0.597,-0.389l-2.618,2.618c-0.195,0.195 -0.195,0.512 0,0.707c0.098,0.098 0.226,0.146 0.354,0.146s0.256,-0.049 0.354,-0.146L19.357,6.125z"
android:fillColor="#E93057"/>
<path
android:pathData="M20.016,9.737c-0.562,-0.42 -1.15,-0.789 -1.757,-1.113L17.513,9.37c0.66,0.331 1.299,0.717 1.903,1.169c0.09,0.067 0.195,0.1 0.3,0.1c0.152,0 0.303,-0.069 0.4,-0.201C20.282,10.216 20.236,9.902 20.016,9.737z"
android:fillColor="#E93057"/>
<path
android:pathData="M15.867,11.016l-0.776,0.776c0.856,0.307 1.671,0.739 2.421,1.298c0.09,0.067 0.195,0.1 0.3,0.1c0.152,0 0.303,-0.069 0.4,-0.2c0.166,-0.222 0.12,-0.535 -0.101,-0.701C17.409,11.764 16.656,11.341 15.867,11.016z"
android:fillColor="#E93057"/>
<path
android:pathData="M13.394,13.489l-0.887,0.887c1.13,0.091 2.24,0.467 3.176,1.166c0.09,0.067 0.195,0.1 0.3,0.1c0.152,0 0.303,-0.069 0.4,-0.2c0.166,-0.222 0.12,-0.535 -0.101,-0.7C15.418,14.095 14.424,13.688 13.394,13.489z"
android:fillColor="#E93057"/>
<path
android:pathData="M12,17.813m-1.5,0a1.5,1.5 0,1 1,3 0a1.5,1.5 0,1 1,-3 0"
android:fillColor="#E93057" />
<path
android:pathData="M19.357,6.125c0.195,-0.196 0.195,-0.512 0,-0.708c-0.195,-0.195 -0.512,-0.195 -0.707,0l-2.364,2.364C14.916,7.314 13.477,7.062 12,7.062c-2.902,0 -5.674,0.925 -8.015,2.675c-0.222,0.166 -0.267,0.479 -0.102,0.7c0.166,0.222 0.479,0.266 0.7,0.102C6.751,8.919 9.315,8.063 12,8.063c1.198,0 2.369,0.177 3.493,0.512l-1.829,1.829c-0.547,-0.093 -1.1,-0.154 -1.663,-0.154c-2.212,0 -4.325,0.705 -6.111,2.039c-0.222,0.166 -0.267,0.479 -0.102,0.701c0.166,0.221 0.478,0.267 0.7,0.101C8.099,11.887 10.005,11.25 12,11.25c0.26,0 0.516,0.022 0.773,0.044l-2.215,2.215c-1.012,0.201 -1.989,0.596 -2.839,1.231c-0.222,0.165 -0.267,0.479 -0.102,0.7c0.166,0.22 0.479,0.268 0.7,0.101c0.192,-0.143 0.392,-0.271 0.597,-0.389l-2.618,2.618c-0.195,0.195 -0.195,0.512 0,0.707c0.098,0.098 0.226,0.146 0.354,0.146s0.256,-0.049 0.354,-0.146L19.357,6.125z"
android:fillColor="#E93057" />
<path
android:pathData="M20.016,9.737c-0.562,-0.42 -1.15,-0.789 -1.757,-1.113L17.513,9.37c0.66,0.331 1.299,0.717 1.903,1.169c0.09,0.067 0.195,0.1 0.3,0.1c0.152,0 0.303,-0.069 0.4,-0.201C20.282,10.216 20.236,9.902 20.016,9.737z"
android:fillColor="#E93057" />
<path
android:pathData="M15.867,11.016l-0.776,0.776c0.856,0.307 1.671,0.739 2.421,1.298c0.09,0.067 0.195,0.1 0.3,0.1c0.152,0 0.303,-0.069 0.4,-0.2c0.166,-0.222 0.12,-0.535 -0.101,-0.701C17.409,11.764 16.656,11.341 15.867,11.016z"
android:fillColor="#E93057" />
<path
android:pathData="M13.394,13.489l-0.887,0.887c1.13,0.091 2.24,0.467 3.176,1.166c0.09,0.067 0.195,0.1 0.3,0.1c0.152,0 0.303,-0.069 0.4,-0.2c0.166,-0.222 0.12,-0.535 -0.101,-0.7C15.418,14.095 14.424,13.688 13.394,13.489z"
android:fillColor="#E93057" />
</vector>

View file

@ -3,10 +3,10 @@
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M16.578,18.026l0,-11.042l-3.698,0l0,11.042l-9.363,0l0,-1.01l8.354,0l0,-11.041l5.717,0l0,11.041l1.645,0l0,1.01z"
android:fillColor="#E93057"/>
<path
android:pathData="M2.852,13.946c-0.248,0 -0.498,-0.123 -0.74,-0.366c-0.49,-0.49 -0.492,-0.986 -0.004,-1.474l3.125,-3.125C5.106,8.737 5.048,8.435 5.048,8.136c0,-1.336 1.172,-2.508 2.508,-2.508c0.282,0 0.572,0.055 0.864,0.163c0.186,0.069 0.347,0.148 0.493,0.242L8.547,6.484L7.431,7.6l0.731,0.661l1.046,-1.116l0.374,-0.374c0.171,0.154 0.25,0.315 0.319,0.501c0.108,0.292 0.163,0.583 0.163,0.864c0,0.67 -0.261,1.3 -0.734,1.773c-0.473,0.474 -1.103,0.734 -1.773,0.735c-0.298,0 -0.6,-0.058 -0.898,-0.173l-3.072,3.113C3.346,13.824 3.099,13.946 2.852,13.946zM7.556,6.237c-0.507,0 -0.984,0.198 -1.342,0.556C5.855,7.152 5.657,7.629 5.657,8.136c0,0.153 0.024,0.313 0.076,0.5c0.046,0.168 0.114,0.326 0.2,0.47l0.022,0.037c0,0 -0.139,0.115 -0.168,0.146l-3.249,3.248c-0.26,0.26 -0.227,0.381 0.004,0.612c0.134,0.134 0.219,0.186 0.304,0.186c0.085,0 0.184,-0.058 0.308,-0.182l3.249,-3.249c0.03,-0.03 0.104,-0.12 0.104,-0.12l0.078,-0.026c0.146,0.087 0.304,0.155 0.471,0.2c0.186,0.052 0.344,0.076 0.499,0.076c1.009,0 1.896,-0.887 1.898,-1.898c0,-0.134 -0.018,-0.274 -0.054,-0.43L8.342,8.872C8.284,8.929 8.208,8.961 8.126,8.961c-0.081,0 -0.158,-0.032 -0.215,-0.089L6.82,7.78c-0.119,-0.119 -0.119,-0.313 0,-0.431l1.143,-1.142C7.886,6.235 7.807,6.241 7.729,6.241C7.67,6.241 7.556,6.237 7.556,6.237z"
android:fillColor="#E93057"/>
<path
android:pathData="M16.578,18.026l0,-11.042l-3.698,0l0,11.042l-9.363,0l0,-1.01l8.354,0l0,-11.041l5.717,0l0,11.041l1.645,0l0,1.01z"
android:fillColor="#E93057" />
<path
android:pathData="M2.852,13.946c-0.248,0 -0.498,-0.123 -0.74,-0.366c-0.49,-0.49 -0.492,-0.986 -0.004,-1.474l3.125,-3.125C5.106,8.737 5.048,8.435 5.048,8.136c0,-1.336 1.172,-2.508 2.508,-2.508c0.282,0 0.572,0.055 0.864,0.163c0.186,0.069 0.347,0.148 0.493,0.242L8.547,6.484L7.431,7.6l0.731,0.661l1.046,-1.116l0.374,-0.374c0.171,0.154 0.25,0.315 0.319,0.501c0.108,0.292 0.163,0.583 0.163,0.864c0,0.67 -0.261,1.3 -0.734,1.773c-0.473,0.474 -1.103,0.734 -1.773,0.735c-0.298,0 -0.6,-0.058 -0.898,-0.173l-3.072,3.113C3.346,13.824 3.099,13.946 2.852,13.946zM7.556,6.237c-0.507,0 -0.984,0.198 -1.342,0.556C5.855,7.152 5.657,7.629 5.657,8.136c0,0.153 0.024,0.313 0.076,0.5c0.046,0.168 0.114,0.326 0.2,0.47l0.022,0.037c0,0 -0.139,0.115 -0.168,0.146l-3.249,3.248c-0.26,0.26 -0.227,0.381 0.004,0.612c0.134,0.134 0.219,0.186 0.304,0.186c0.085,0 0.184,-0.058 0.308,-0.182l3.249,-3.249c0.03,-0.03 0.104,-0.12 0.104,-0.12l0.078,-0.026c0.146,0.087 0.304,0.155 0.471,0.2c0.186,0.052 0.344,0.076 0.499,0.076c1.009,0 1.896,-0.887 1.898,-1.898c0,-0.134 -0.018,-0.274 -0.054,-0.43L8.342,8.872C8.284,8.929 8.208,8.961 8.126,8.961c-0.081,0 -0.158,-0.032 -0.215,-0.089L6.82,7.78c-0.119,-0.119 -0.119,-0.313 0,-0.431l1.143,-1.142C7.886,6.235 7.807,6.241 7.729,6.241C7.67,6.241 7.556,6.237 7.556,6.237z"
android:fillColor="#E93057" />
</vector>

View file

@ -3,7 +3,7 @@
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M23.706,7.373c-0.149,-0.541 -0.728,-0.854 -1.294,-0.699L19.87,7.373c-0.325,-0.913 -1.301,-1.438 -2.255,-1.175l-3.008,0.826c-0.954,0.262 -1.525,1.212 -1.338,2.163l-2.542,0.698c-0.499,0.137 -0.799,0.593 -0.767,1.07c-1.696,0.439 -3.037,0.067 -4.101,-0.248c-1.047,-0.309 -1.951,-0.578 -2.713,0.152c-1.307,1.253 -0.369,2.87 0.384,4.17c0.501,0.863 1.019,1.757 0.766,2.3c-0.519,1.124 -2.729,1.128 -3.537,1.033c-0.203,-0.022 -0.392,0.122 -0.417,0.328c-0.024,0.206 0.123,0.391 0.329,0.414c0.086,0.01 1.376,0.152 2.554,-0.172c0.734,-0.202 1.424,-0.585 1.753,-1.292c0.416,-0.896 -0.173,-1.912 -0.797,-2.987c-0.844,-1.456 -1.336,-2.47 -0.515,-3.257c0.426,-0.409 0.972,-0.272 1.977,0.026c1.128,0.334 2.648,0.808 4.674,0.215c0.255,0.206 0.598,0.304 0.949,0.207l5.63,-1.547l2.016,7.338l0.127,-1.203l-1.718,-6.252l5.63,-1.547C23.517,8.479 23.855,7.914 23.706,7.373z"
android:fillColor="#67DFE8"/>
<path
android:pathData="M23.706,7.373c-0.149,-0.541 -0.728,-0.854 -1.294,-0.699L19.87,7.373c-0.325,-0.913 -1.301,-1.438 -2.255,-1.175l-3.008,0.826c-0.954,0.262 -1.525,1.212 -1.338,2.163l-2.542,0.698c-0.499,0.137 -0.799,0.593 -0.767,1.07c-1.696,0.439 -3.037,0.067 -4.101,-0.248c-1.047,-0.309 -1.951,-0.578 -2.713,0.152c-1.307,1.253 -0.369,2.87 0.384,4.17c0.501,0.863 1.019,1.757 0.766,2.3c-0.519,1.124 -2.729,1.128 -3.537,1.033c-0.203,-0.022 -0.392,0.122 -0.417,0.328c-0.024,0.206 0.123,0.391 0.329,0.414c0.086,0.01 1.376,0.152 2.554,-0.172c0.734,-0.202 1.424,-0.585 1.753,-1.292c0.416,-0.896 -0.173,-1.912 -0.797,-2.987c-0.844,-1.456 -1.336,-2.47 -0.515,-3.257c0.426,-0.409 0.972,-0.272 1.977,0.026c1.128,0.334 2.648,0.808 4.674,0.215c0.255,0.206 0.598,0.304 0.949,0.207l5.63,-1.547l2.016,7.338l0.127,-1.203l-1.718,-6.252l5.63,-1.547C23.517,8.479 23.855,7.914 23.706,7.373z"
android:fillColor="#67DFE8" />
</vector>

View file

@ -3,10 +3,10 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M16.495,12.092l-4.921,-4.92l-1.444,1.444l2.468,2.467l-9.765,0l0,2.042l9.765,0l-2.468,2.467l1.444,1.444l4.921,-4.92l-0.012,-0.012z"
android:fillColor="@color/white"/>
<path
android:pathData="M18.682,2.975H5.152c-1.272,0 -2.307,1.035 -2.307,2.307v3.801h2.126V5.282c0,-0.1 0.081,-0.181 0.181,-0.181h13.53c0.1,0 0.181,0.081 0.181,0.181v13.436c0,0.1 -0.081,0.181 -0.181,0.181H5.152c-0.1,0 -0.181,-0.081 -0.181,-0.181v-3.593H2.845v3.593c0,1.272 1.035,2.307 2.307,2.307h13.53c1.272,0 2.308,-1.034 2.308,-2.307V5.282C20.989,4.01 19.954,2.975 18.682,2.975z"
android:fillColor="@color/white"/>
<path
android:pathData="M16.495,12.092l-4.921,-4.92l-1.444,1.444l2.468,2.467l-9.765,0l0,2.042l9.765,0l-2.468,2.467l1.444,1.444l4.921,-4.92l-0.012,-0.012z"
android:fillColor="@color/white" />
<path
android:pathData="M18.682,2.975H5.152c-1.272,0 -2.307,1.035 -2.307,2.307v3.801h2.126V5.282c0,-0.1 0.081,-0.181 0.181,-0.181h13.53c0.1,0 0.181,0.081 0.181,0.181v13.436c0,0.1 -0.081,0.181 -0.181,0.181H5.152c-0.1,0 -0.181,-0.081 -0.181,-0.181v-3.593H2.845v3.593c0,1.272 1.035,2.307 2.307,2.307h13.53c1.272,0 2.308,-1.034 2.308,-2.307V5.282C20.989,4.01 19.954,2.975 18.682,2.975z"
android:fillColor="@color/white" />
</vector>

View file

@ -3,10 +3,10 @@
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12.069,20.423c-4.644,0 -8.422,-3.779 -8.422,-8.423s3.778,-8.422 8.422,-8.422S20.492,7.355 20.492,12S16.713,20.423 12.069,20.423zM12.069,4.943c-3.891,0 -7.057,3.166 -7.057,7.057c0,3.891 3.166,7.057 7.057,7.057c3.891,0 7.057,-3.166 7.057,-7.057C19.126,8.109 15.961,4.943 12.069,4.943z"
android:fillColor="#67DFE8"/>
<path
android:pathData="M9.945,16.362c-0.113,0 -0.227,-0.028 -0.33,-0.085c-0.217,-0.12 -0.353,-0.349 -0.353,-0.598V8.32c0,-0.249 0.135,-0.478 0.353,-0.598c0.218,-0.12 0.485,-0.112 0.694,0.021l5.827,3.679c0.198,0.125 0.318,0.343 0.318,0.577s-0.12,0.452 -0.318,0.577l-5.827,3.679C10.198,16.326 10.072,16.362 9.945,16.362zM10.627,9.559v4.881L14.493,12L10.627,9.559z"
android:fillColor="#67DFE8"/>
<path
android:pathData="M12.069,20.423c-4.644,0 -8.422,-3.779 -8.422,-8.423s3.778,-8.422 8.422,-8.422S20.492,7.355 20.492,12S16.713,20.423 12.069,20.423zM12.069,4.943c-3.891,0 -7.057,3.166 -7.057,7.057c0,3.891 3.166,7.057 7.057,7.057c3.891,0 7.057,-3.166 7.057,-7.057C19.126,8.109 15.961,4.943 12.069,4.943z"
android:fillColor="#67DFE8" />
<path
android:pathData="M9.945,16.362c-0.113,0 -0.227,-0.028 -0.33,-0.085c-0.217,-0.12 -0.353,-0.349 -0.353,-0.598V8.32c0,-0.249 0.135,-0.478 0.353,-0.598c0.218,-0.12 0.485,-0.112 0.694,0.021l5.827,3.679c0.198,0.125 0.318,0.343 0.318,0.577s-0.12,0.452 -0.318,0.577l-5.827,3.679C10.198,16.326 10.072,16.362 9.945,16.362zM10.627,9.559v4.881L14.493,12L10.627,9.559z"
android:fillColor="#67DFE8" />
</vector>

View file

@ -3,13 +3,13 @@
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M24,9.343l-5.781,-3.968l-1.328,6.688l2.102,-1.757c0.014,0.056 0.03,0.111 0.043,0.168c0.116,0.512 0.183,1.042 0.183,1.589c0,3.952 -3.204,7.156 -7.156,7.156s-7.156,-3.204 -7.156,-7.156s3.204,-7.156 7.156,-7.156c1.072,0 2.085,0.242 2.998,0.665c0.325,0.151 0.639,0.321 0.936,0.517l0.002,-0.002l-0.352,-1.784l1.876,-0.538c-1.567,-1.033 -3.442,-1.639 -5.46,-1.639c-5.488,0 -9.938,4.449 -9.938,9.938S6.574,22 12.063,22S22,17.551 22,12.063c0,-0.759 -0.093,-1.496 -0.254,-2.206c-0.04,-0.176 -0.085,-0.35 -0.134,-0.523L24,9.343L24,9.343z"
android:fillColor="#FF1313"/>
<path
android:pathData="M10.2429,8.7408l5.0162,5.0162l-1.5026,1.5026l-5.0162,-5.0162z"
android:fillColor="#FF1313"/>
<path
android:pathData="M8.7408,13.7571l5.0162,-5.0162l1.5026,1.5026l-5.0162,5.0162z"
android:fillColor="#FF1313"/>
<path
android:pathData="M24,9.343l-5.781,-3.968l-1.328,6.688l2.102,-1.757c0.014,0.056 0.03,0.111 0.043,0.168c0.116,0.512 0.183,1.042 0.183,1.589c0,3.952 -3.204,7.156 -7.156,7.156s-7.156,-3.204 -7.156,-7.156s3.204,-7.156 7.156,-7.156c1.072,0 2.085,0.242 2.998,0.665c0.325,0.151 0.639,0.321 0.936,0.517l0.002,-0.002l-0.352,-1.784l1.876,-0.538c-1.567,-1.033 -3.442,-1.639 -5.46,-1.639c-5.488,0 -9.938,4.449 -9.938,9.938S6.574,22 12.063,22S22,17.551 22,12.063c0,-0.759 -0.093,-1.496 -0.254,-2.206c-0.04,-0.176 -0.085,-0.35 -0.134,-0.523L24,9.343L24,9.343z"
android:fillColor="#FF1313" />
<path
android:pathData="M10.2429,8.7408l5.0162,5.0162l-1.5026,1.5026l-5.0162,-5.0162z"
android:fillColor="#FF1313" />
<path
android:pathData="M8.7408,13.7571l5.0162,-5.0162l1.5026,1.5026l-5.0162,5.0162z"
android:fillColor="#FF1313" />
</vector>

View file

@ -759,7 +759,7 @@
android:drawableTop="@drawable/ic_actions_refill"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/omnipod_refresh" />
android:text="@string/omnipod_button_refresh" />
<Button
android:id="@+id/omnipod_button_pod_mgmt"
@ -770,7 +770,7 @@
android:drawableTop="@drawable/ic_danarhistory"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/omnipod_pod_mgmt" />
android:text="@string/omnipod_button_pod_management" />
<Button
android:id="@+id/omnipod_button_acknowledge_active_alerts"
@ -781,7 +781,7 @@
android:drawableTop="@drawable/ic_cp_aaps_offline"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/omnipod_acknowledge_active_alerts_short" />
android:text="@string/omnipod_button_acknowledge_active_alerts" />
<Button
android:id="@+id/omnipod_button_rileylink_stats"
@ -792,7 +792,7 @@
android:drawableTop="@drawable/ic_danarstats"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/omnipod_rl_stats" />
android:text="@string/omnipod_button_riley_link_stats" />
<Button
android:id="@+id/omnipod_button_pulse_log"
@ -803,7 +803,7 @@
android:drawableTop="@drawable/ic_cp_bolus_correction"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/omnipod_read_pulse_log_short"
android:text="@string/omnipod_button_read_pulse_log"
android:visibility="gone" />
<Button
@ -815,7 +815,7 @@
android:drawableTop="@drawable/ic_access_alarm"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/omnipod_set_time"
android:text="@string/omnipod_button_set_time"
android:visibility="gone" />
<Button
@ -827,7 +827,7 @@
android:drawableTop="@drawable/ic_local_activate"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/omnipod_resume_delivery"
android:text="@string/omnipod_button_resume_delivery"
android:visibility="gone" />
<Button
@ -839,7 +839,7 @@
android:drawableTop="@drawable/ic_loop_disabled"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:text="@string/omnipod_suspend_delivery_short"
android:text="@string/omnipod_button_suspend_delivery"
android:visibility="gone" />
</LinearLayout>

View file

@ -30,8 +30,7 @@
android:layout_marginBottom="40dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
style="@style/WizardPagePodContent"
/>
style="@style/WizardPagePodContent" />
<LinearLayout
style="@style/ButtonBar"
@ -40,7 +39,8 @@
android:orientation="horizontal">
<ListView android:id="@+id/podInfoList"
<ListView
android:id="@+id/podInfoList"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"

View file

@ -25,7 +25,8 @@
android:paddingTop="12dp"
android:paddingBottom="12dp">
<TextView android:id="@android:id/text1"
<TextView
android:id="@android:id/text1"
style="?android:textAppearanceSmall"
android:textColor="@color/text_light"
android:textAllCaps="false"
@ -35,7 +36,8 @@
android:layout_height="wrap_content"
android:layout_marginEnd="16dp" />
<TextView android:id="@android:id/text2"
<TextView
android:id="@android:id/text2"
style="?android:textAppearanceMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"

View file

@ -34,7 +34,7 @@
android:layout_weight="1"
android:background="@drawable/pillborder"
android:gravity="center_horizontal"
android:text="@string/omnipod_cmd_pod_history" />
android:text="@string/omnipod_history_title" />
</LinearLayout>

View file

@ -24,7 +24,7 @@
android:layout_marginBottom="3dp"
android:layout_weight="0.5"
android:gravity="center"
android:text="@string/omnipod_pod_mgmt_title"
android:text="@string/omnipod_pod_management_title"
android:textAlignment="center"
android:textSize="12pt"
android:textStyle="bold" />
@ -55,7 +55,7 @@
android:gravity="center"
android:text="@string/omnipod_waiting_for_rileylink_connection"
android:textAlignment="center"
android:textSize="8pt"/>
android:textSize="8pt" />
</LinearLayout>
<info.nightscout.androidaps.utils.ui.SingleClickButton
@ -69,7 +69,7 @@
android:layout_marginBottom="3dp"
android:layout_weight="0.5"
android:drawableTop="@drawable/ic_cp_pump_canula"
android:text="@string/omnipod_cmd_init_pod"
android:text="@string/omnipod_button_init_pod"
android:textAllCaps="false" />
<TextView
@ -90,7 +90,7 @@
android:layout_marginBottom="3dp"
android:layout_weight="0.5"
android:drawableTop="@drawable/ic_actions_temptarget"
android:text="@string/omnipod_cmd_deactivate_pod"
android:text="@string/omnipod_button_deactivate_pod"
android:textAllCaps="false" />
<TextView
@ -111,7 +111,7 @@
android:layout_marginBottom="3dp"
android:layout_weight="0.5"
android:drawableTop="@drawable/ic_cp_pump_canula"
android:text="@string/omnipod_cmd_discard_pod"
android:text="@string/omnipod_button_discard_pod"
android:textAllCaps="false" />
<TextView
@ -132,7 +132,7 @@
android:layout_marginBottom="3dp"
android:layout_weight="0.5"
android:drawableTop="@drawable/ic_danarhistory"
android:text="@string/omnipod_cmd_pod_history"
android:text="@string/omnipod_button_pod_history"
android:textAllCaps="false" />
</LinearLayout>

View file

@ -11,12 +11,11 @@
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_illegal_init_action_type">Неправилен PodInitActionType: %1$s</string>
<string name="omnipod_driver_error_unexpected_exception_type">Непредвидена грешка. Моля, докладвайте! (тип: %1$s).</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Комуникацията е неуспешна: възникнала е неочаквана грешка. Моля, докладвайте!</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Комуникацията е неуспешна: възникнала е неочаквана грешка. Моля, докладвайте!</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Инициализация на Pod</string>
<string name="omnipod_button_init_pod">Инициализация на Pod</string>
<string name="omnipod_cmd_deactivate_pod">Деактивирай под</string>
<string name="omnipod_cmd_pod_history_na">Историята на Pod не е достъпна в момента.</string>
<string name="omnipod_history_history_not_available">Историята на Pod не е достъпна в момента.</string>
<string name="omnipod_init_pod_wizard_step1_title">Напълни Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Пълнене</string>
<string name="omnipod_init_pod_wizard_step3_title">Прикрепете Pod</string>

View file

@ -17,7 +17,7 @@
<string name="omnipod_config_low_reservoir_alert_units">Počet jednotek</string>
<!-- Omnipod - Fragment -->
<string name="omnipod_moments_ago">před chvílí</string>
<string name="omnipod_pod_mgmt">Správa Podu</string>
<string name="omnipod_button_pod_management">Správa Podu</string>
<string name="omnipod_pod_status">Stav Podu</string>
<string name="omnipod_total_delivered_label">Celkem dodáno</string>
<string name="omnipod_total_delivered">%1$.2f U</string>
@ -36,7 +36,7 @@
<string name="omnipod_pod_status_inactive">Neaktivní</string>
<string name="omnipod_pod_status_pod_fault_description">Chyba Podu: %1$s %2$s</string>
<string name="omnipod_pod_active_alerts">Výstrahy aktivního Podu</string>
<string name="omnipod_acknowledge_active_alerts_short">Potrvdit upozornění</string>
<string name="omnipod_button_acknowledge_active_alerts">Potrvdit upozornění</string>
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433,91 MHz)</string>
<!-- Omnipod - Error -->
@ -45,29 +45,28 @@
<string name="omnipod_error_operation_not_possible_no_profile">Operace není možná.\n\n Je třeba několik minut počkat, dokud se AAPS nepokusí poprvé nastavit profil.</string>
<string name="omnipod_error_illegal_init_action_type">Neplatný atribut PodInitActionType: %1$s</string>
<string name="omnipod_error_pod_not_attached">Žádný aktivní Pod</string>
<string name="omnipod_driver_error_setup_action_verification_failed">Ověření příkazu se nezdařilo</string>
<string name="omnipod_driver_error_unexpected_exception_type">Došlo k neočekávané chybě. Nahlaste ji! (typ: %1$s).</string>
<string name="omnipod_driver_error_invalid_parameters">Komunikace selhala: byly přijaty neplatné vstupní parametry</string>
<string name="omnipod_driver_error_communication_failed_timeout">Komunikace selhala: časový limit vypršel</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Komunikace se nezdařila: došlo k neočekávané chybě. Prosím nahlašte!</string>
<string name="omnipod_driver_error_crc_mismatch">Komunikace selhala: ověření integrity zprávy se nezdařilo</string>
<string name="omnipod_driver_error_invalid_packet_type">Komunikace selhala: byly přijaty neplatné pakety z podu</string>
<string name="omnipod_driver_error_invalid_progress_state">Komunikace selhala: Pod je v chybném stavu</string>
<string name="omnipod_driver_error_invalid_response">Komunikace selhala: byla přijata neplatná odezva z Podu</string>
<string name="omnipod_driver_error_invalid_message_sequence_number">Komunikace selhala: od Podu byla přijata zpráva s neplatným pořadovým číslem</string>
<string name="omnipod_driver_error_invalid_message_address">Komunikace selhala: od Podu byla přijata zpráva s neplatnou adresou</string>
<string name="omnipod_driver_error_message_decoding_failed">Komunikace selhala: nepodařilo se dekódovat zprávu z Podu</string>
<string name="omnipod_driver_error_nonce_resync_failed">Komunikace selhala: synchronizace hodnoty Nonce se nezdařila</string>
<string name="omnipod_driver_error_nonce_out_of_sync">Komunikace selhala: hodnota Nonce nebyla synchronizována</string>
<string name="omnipod_driver_error_not_enough_data">Komunikace selhala: nedostatek dat přijatých z Podu</string>
<string name="omnipod_driver_error_pod_fault">Byla zjištěna chyba Podu (%1$03d %2$s). Deaktivujte Pod a spusťte nový</string>
<string name="omnipod_driver_error_pod_returned_error_response">Komunikace selhala: Pod vrátil chybovou odezvu</string>
<string name="omnipod_error_setup_action_verification_failed">Ověření příkazu se nezdařilo</string>
<string name="omnipod_error_invalid_parameters">Komunikace selhala: byly přijaty neplatné vstupní parametry</string>
<string name="omnipod_error_communication_failed_timeout">Komunikace selhala: časový limit vypršel</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Komunikace se nezdařila: došlo k neočekávané chybě. Prosím nahlašte!</string>
<string name="omnipod_error_crc_mismatch">Komunikace selhala: ověření integrity zprávy se nezdařilo</string>
<string name="omnipod_error_invalid_packet_type">Komunikace selhala: byly přijaty neplatné pakety z podu</string>
<string name="omnipod_error_invalid_progress_state">Komunikace selhala: Pod je v chybném stavu</string>
<string name="omnipod_error_invalid_response">Komunikace selhala: byla přijata neplatná odezva z Podu</string>
<string name="omnipod_error_invalid_message_sequence_number">Komunikace selhala: od Podu byla přijata zpráva s neplatným pořadovým číslem</string>
<string name="omnipod_error_invalid_message_address">Komunikace selhala: od Podu byla přijata zpráva s neplatnou adresou</string>
<string name="omnipod_error_message_decoding_failed">Komunikace selhala: nepodařilo se dekódovat zprávu z Podu</string>
<string name="omnipod_error_nonce_resync_failed">Komunikace selhala: synchronizace hodnoty Nonce se nezdařila</string>
<string name="omnipod_error_nonce_out_of_sync">Komunikace selhala: hodnota Nonce nebyla synchronizována</string>
<string name="omnipod_error_not_enough_data">Komunikace selhala: nedostatek dat přijatých z Podu</string>
<string name="omnipod_error_pod_fault">Byla zjištěna chyba Podu (%1$03d %2$s). Deaktivujte Pod a spusťte nový</string>
<string name="omnipod_error_pod_returned_error_response">Komunikace selhala: Pod vrátil chybovou odezvu</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_pod_mgmt_title">Správa Podu</string>
<string name="omnipod_cmd_init_pod">Inicializovat Pod</string>
<string name="omnipod_pod_management_title">Správa Podu</string>
<string name="omnipod_button_init_pod">Inicializovat Pod</string>
<string name="omnipod_cmd_deactivate_pod">Deaktivovat Pod</string>
<string name="omnipod_cmd_discard_pod">Vyřadit Pod</string>
<string name="omnipod_cmd_pod_history">Historie Podu</string>
<string name="omnipod_button_pod_history">Historie Podu</string>
<string name="omnipod_cmd_set_bolus">Nastavit bolus</string>
<string name="omnipod_cmd_cancel_bolus">Zrušit bolus</string>
<string name="omnipod_cmd_set_tbr">Nastavit dočasný bazál</string>
@ -82,11 +81,11 @@
<string name="omnipod_cmd_suspend_delivery">Pozastavit dodávání inzulínu</string>
<string name="omnipod_cmd_resume_delivery">Obnovit dodávání inzulínu</string>
<string name="omnipod_cmd_unknown_entry">Neznámá položka</string>
<string name="omnipod_cmd_bolus_value">%1$.2f U</string>
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.2f U, Sach=%2$.1f g</string>
<string name="omnipod_cmd_tbr_value">Rychlost: %1$.2f U, doba trvání: %2$d min</string>
<string name="omnipod_cmd_discard_pod_desc">Pokud stisknete <b>OK</b>, stav Podu bude vynuceně resetován a již nebudete moci komunikovat s Podem. Udělejte to pouze v případě, že s Podem již nelze komunikovat. Pokud stále můžete komunikovat s Podem, použijte volbu <b>Deaktivovat Pod</b>.\n\nPokud chcete pokračovat, ujistěte se, že Pod je sundaný z těla.</string>
<string name="omnipod_cmd_pod_history_na">Historie Podu není v daném okamžiku k dispozici.</string>
<string name="omnipod_history_bolus_value">%1$.2f U</string>
<string name="omnipod_history_bolus_value_with_carbs">%1$.2f U, Sach=%2$.1f g</string>
<string name="omnipod_history_tbr_value">Rychlost: %1$.2f U, doba trvání: %2$d min</string>
<string name="omnipod_discard_pod_state_confirmation">Pokud stisknete <b>OK</b>, stav Podu bude vynuceně resetován a již nebudete moci komunikovat s Podem. Udělejte to pouze v případě, že s Podem již nelze komunikovat. Pokud stále můžete komunikovat s Podem, použijte volbu <b>Deaktivovat Pod</b>.\n\nPokud chcete pokračovat, ujistěte se, že Pod je sundaný z těla.</string>
<string name="omnipod_history_history_not_available">Historie Podu není v daném okamžiku k dispozici.</string>
<string name="omnipod_init_pod_wizard_step1_title">Naplňte Pod</string>
<string name="omnipod_init_pod_wizard_step1_desc">\nNaplňte nový Pod dostatkem inzulínu na 3 dny.\n\nSledujte dvě pípnutí z Podu během procesu plnění. Tyto ukazují, že minimální množství 85U bylo naplněno. Ujistěte se, že stříkačka je zcela vyprázdněná a to i po vyslechnutí dvou pípnutí.\n\nPo naplnění Podu, prosím, stiskněte <b>Další</b>.\n\n<b>Poznámka:</b> prozatím nesundavejte kryt jehly.\n<b>Poznámka:</b>prosím umístěte RileyLink ve svislé pozici blízko Podu.</string>
<string name="omnipod_init_pod_wizard_step2_title">Plnění</string>
@ -111,15 +110,15 @@
<string name="omnipod_alert_low_reservoir">Nízký stav zásobníku</string>
<string name="omnipod_alert_unknown_alert">Neznámá výstraha</string>
<string name="omnipod_errors">Chyby</string>
<string name="omnipod_cmd_basal_profile_not_set_is_same">Bazální profil je stejný, takže nebude znovu nastaven.</string>
<string name="omnipod_refresh">Obnovit</string>
<string name="omnipod_suspend_delivery_short">Vypnutí</string>
<string name="omnipod_uncertain_failure">Neznámá chyba</string>
<string name="omnipod_cancelled_old_tbr_failed_to_set_new">Byl zrušen starý dočasný bazál, ale nový dočasný bazál se nepodařilo nastavit</string>
<string name="omnipod_confirmation_basal_profile_not_set_is_same">Bazální profil je stejný, takže nebude znovu nastaven.</string>
<string name="omnipod_button_refresh">Obnovit</string>
<string name="omnipod_button_suspend_delivery">Vypnutí</string>
<string name="omnipod_error_uncertain_failure">Neznámá chyba</string>
<string name="omnipod_error_cancelled_old_tbr_failed_to_set_new">Byl zrušen starý dočasný bazál, ale nový dočasný bazál se nepodařilo nastavit</string>
<string name="omnipod_cmd_set_fake_suspended_tbr">Nastavit falešný dočasný bazál, protože Pod je pozastaven</string>
<string name="omnipod_cmd_cancel_fake_suspended_tbr">Zrušit falešný dočasný bazál který byl vytvořen, protože Pod byl pozastaven</string>
<string name="omnipod_uncertain">neznámé</string>
<string name="omnipod_expiration_alerts_updated">Nastavení výstrahy bylo v Podu aktualizováno</string>
<string name="omnipod_confirmation_expiration_alerts_updated">Nastavení výstrahy bylo v Podu aktualizováno</string>
<string name="omnipod_preference_category_rileylink">RileyLink</string>
<string name="omnipod_preference_category_other">Jiné</string>
<string name="omnipod_preference_category_alerts">Varování</string>

View file

@ -15,7 +15,7 @@
<string name="omnipod_config_low_reservoir_alert_units">Anzahl der Einheiten</string>
<!-- Omnipod - Fragment -->
<string name="omnipod_moments_ago">gerade eben</string>
<string name="omnipod_pod_mgmt">Pod mgmt</string>
<string name="omnipod_button_pod_management">Pod mgmt</string>
<string name="omnipod_pod_status">Pod Status</string>
<string name="omnipod_total_delivered_label">Insgesamt abgegeben</string>
<string name="omnipod_total_delivered">%1$.2f IE</string>
@ -34,7 +34,7 @@
<string name="omnipod_pod_status_inactive">Inaktiv</string>
<string name="omnipod_pod_status_pod_fault_description">Pod-Fehler: %1$s %2$s</string>
<string name="omnipod_pod_active_alerts">Aktive Pod-Warnungen</string>
<string name="omnipod_acknowledge_active_alerts_short">Alarm bestätigen</string>
<string name="omnipod_button_acknowledge_active_alerts">Alarm bestätigen</string>
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
@ -43,29 +43,28 @@
<string name="omnipod_error_operation_not_possible_no_profile">Aktion ist nicht möglich.\n\n Du musst ein paar Minuten warten bis AAPS versucht, das Basalprofil zum ersten Mal zu setzen.</string>
<string name="omnipod_error_illegal_init_action_type">Illegal PodInitActionType: %1$s</string>
<string name="omnipod_error_pod_not_attached">Kein aktiver Pod</string>
<string name="omnipod_driver_error_setup_action_verification_failed">Kommandoprüfung fehlgeschlagen</string>
<string name="omnipod_driver_error_unexpected_exception_type">Es ist ein unerwarteter Fehler aufgetreten. Bitte melden! (Typ: %1$s).</string>
<string name="omnipod_driver_error_invalid_parameters">Kommunikation fehlgeschlagen: Ungültige Eingabeparameter empfangen</string>
<string name="omnipod_driver_error_communication_failed_timeout">Keine Verbindung: Zeitüberschreitung</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Keine Verbindung: Es ist ein unerwarteter Fehler aufgetreten. Bitte melden!</string>
<string name="omnipod_driver_error_crc_mismatch">Kommunikation fehlgeschlagen: Die Überprüfung der Nachrichtenintegrität ist fehlgeschlagen</string>
<string name="omnipod_driver_error_invalid_packet_type">Kommunikation fehlgeschlagen: Es wurde ein ungültiges Paket vom Pod empfangen</string>
<string name="omnipod_driver_error_invalid_progress_state">Kommunikation fehlgeschlagen: Der Pod befindet sich in einem falschen Status</string>
<string name="omnipod_driver_error_invalid_response">Kommunikation fehlgeschlagen: Es wurde eine ungültige Antwort vom Pod empfangen</string>
<string name="omnipod_driver_error_invalid_message_sequence_number">Kommunikation fehlgeschlagen: Ungültige Zeichenfolge vom Pod empfangen</string>
<string name="omnipod_driver_error_invalid_message_address">Kommunikation fehlgeschlagen: Ungültige Adresse vom Pod empfangen</string>
<string name="omnipod_driver_error_message_decoding_failed">Kommunikation fehlgeschlagen: Nachricht vom Pod konnte nicht decodiert werden</string>
<string name="omnipod_driver_error_nonce_resync_failed">Kommunikation fehlgeschlagen: Nonce resync fehlgeschlagen</string>
<string name="omnipod_driver_error_nonce_out_of_sync">Kommunikation fehlgeschlagen: Nonce nicht synchronisiert</string>
<string name="omnipod_driver_error_not_enough_data">Kommunikation fehlgeschlagen: Nicht genügend Daten vom Pod empfangen</string>
<string name="omnipod_driver_error_pod_fault">Ein Pod-Fehler (%1$03d %2$s) wurde festgestellt. Bitte deaktiviere den Pod und starte einen neuen</string>
<string name="omnipod_driver_error_pod_returned_error_response">Kommunikation fehlgeschlagen: Fehlerhafte Antwort vom Pod</string>
<string name="omnipod_error_setup_action_verification_failed">Kommandoprüfung fehlgeschlagen</string>
<string name="omnipod_error_invalid_parameters">Kommunikation fehlgeschlagen: Ungültige Eingabeparameter empfangen</string>
<string name="omnipod_error_communication_failed_timeout">Keine Verbindung: Zeitüberschreitung</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Keine Verbindung: Es ist ein unerwarteter Fehler aufgetreten. Bitte melden!</string>
<string name="omnipod_error_crc_mismatch">Kommunikation fehlgeschlagen: Die Überprüfung der Nachrichtenintegrität ist fehlgeschlagen</string>
<string name="omnipod_error_invalid_packet_type">Kommunikation fehlgeschlagen: Es wurde ein ungültiges Paket vom Pod empfangen</string>
<string name="omnipod_error_invalid_progress_state">Kommunikation fehlgeschlagen: Der Pod befindet sich in einem falschen Status</string>
<string name="omnipod_error_invalid_response">Kommunikation fehlgeschlagen: Es wurde eine ungültige Antwort vom Pod empfangen</string>
<string name="omnipod_error_invalid_message_sequence_number">Kommunikation fehlgeschlagen: Ungültige Zeichenfolge vom Pod empfangen</string>
<string name="omnipod_error_invalid_message_address">Kommunikation fehlgeschlagen: Ungültige Adresse vom Pod empfangen</string>
<string name="omnipod_error_message_decoding_failed">Kommunikation fehlgeschlagen: Nachricht vom Pod konnte nicht decodiert werden</string>
<string name="omnipod_error_nonce_resync_failed">Kommunikation fehlgeschlagen: Nonce resync fehlgeschlagen</string>
<string name="omnipod_error_nonce_out_of_sync">Kommunikation fehlgeschlagen: Nonce nicht synchronisiert</string>
<string name="omnipod_error_not_enough_data">Kommunikation fehlgeschlagen: Nicht genügend Daten vom Pod empfangen</string>
<string name="omnipod_error_pod_fault">Ein Pod-Fehler (%1$03d %2$s) wurde festgestellt. Bitte deaktiviere den Pod und starte einen neuen</string>
<string name="omnipod_error_pod_returned_error_response">Kommunikation fehlgeschlagen: Fehlerhafte Antwort vom Pod</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_pod_mgmt_title">Pod Management</string>
<string name="omnipod_cmd_init_pod">Init Pod</string>
<string name="omnipod_pod_management_title">Pod Management</string>
<string name="omnipod_button_init_pod">Init Pod</string>
<string name="omnipod_cmd_deactivate_pod">Pod deaktivieren</string>
<string name="omnipod_cmd_discard_pod">Pod ablegen</string>
<string name="omnipod_cmd_pod_history">Pod Historie</string>
<string name="omnipod_button_pod_history">Pod Historie</string>
<string name="omnipod_cmd_set_bolus">Mahlzeiten Bolus abgeben</string>
<string name="omnipod_cmd_cancel_bolus">Bolus abbrechen</string>
<string name="omnipod_cmd_set_tbr">Temp. Basalrate setzen</string>
@ -80,9 +79,9 @@
<string name="omnipod_cmd_suspend_delivery">Abgabe unterbrechen</string>
<string name="omnipod_cmd_resume_delivery">Abgabe fortsetzen</string>
<string name="omnipod_cmd_unknown_entry">Unbekannte Eingabe</string>
<string name="omnipod_cmd_bolus_value">%1$.2f IE</string>
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.2f IE, CH=%2$.1f g</string>
<string name="omnipod_cmd_pod_history_na">Pod Historie derzeit nicht verfügbar.</string>
<string name="omnipod_history_bolus_value">%1$.2f IE</string>
<string name="omnipod_history_bolus_value_with_carbs">%1$.2f IE, CH=%2$.1f g</string>
<string name="omnipod_history_history_not_available">Pod Historie derzeit nicht verfügbar.</string>
<string name="omnipod_init_pod_wizard_step1_title">Befülle den Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Befüllen</string>
<string name="omnipod_init_pod_wizard_step3_title">Befestige den Pod</string>
@ -106,9 +105,9 @@
<string name="omnipod_alert_low_reservoir">Niedriger Reservoirstand</string>
<string name="omnipod_alert_unknown_alert">Unbekannter Alarm</string>
<string name="omnipod_errors">Fehler</string>
<string name="omnipod_cmd_basal_profile_not_set_is_same">Basalprofil, unverändert wird nicht erneut eingestellt.</string>
<string name="omnipod_refresh">Aktualisieren</string>
<string name="omnipod_suspend_delivery_short">Unterbrechungen</string>
<string name="omnipod_confirmation_basal_profile_not_set_is_same">Basalprofil, unverändert wird nicht erneut eingestellt.</string>
<string name="omnipod_button_refresh">Aktualisieren</string>
<string name="omnipod_button_suspend_delivery">Unterbrechungen</string>
<string name="omnipod_preference_category_rileylink">RileyLink</string>
<string name="omnipod_preference_category_other">Andere</string>
<string name="omnipod_wizard_button_exit">Schließen</string>

View file

@ -11,12 +11,11 @@
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_illegal_init_action_type">Ilegal PodInitActionType: %1$s</string>
<string name="omnipod_driver_error_unexpected_exception_type">Error inesperado. Por favor, informe! (tipo: %1$s).</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">La comunicación ha fallado: error inesperado. ¡Por favor, Informe!</string>
<string name="omnipod_error_communication_failed_unexpected_exception">La comunicación ha fallado: error inesperado. ¡Por favor, Informe!</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Iniciar Pod</string>
<string name="omnipod_button_init_pod">Iniciar Pod</string>
<string name="omnipod_cmd_deactivate_pod">Desactivar Pod</string>
<string name="omnipod_cmd_pod_history_na">Historial del Pod no disponible en el momento.</string>
<string name="omnipod_history_history_not_available">Historial del Pod no disponible en el momento.</string>
<string name="omnipod_init_pod_wizard_step1_title">Llenar el Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Cebado</string>
<string name="omnipod_init_pod_wizard_step3_title">Adherir el Pod</string>

View file

@ -11,12 +11,11 @@
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_illegal_init_action_type">type d\'action d\'init Pod non autorisée : %1$s</string>
<string name="omnipod_driver_error_unexpected_exception_type">Erreur inconnue. Veuillez signaler ! (type : %1$s).</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Échec de communication : Erreur inconnue. Veuillez signaler !</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Échec de communication : Erreur inconnue. Veuillez signaler !</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Init Pod</string>
<string name="omnipod_button_init_pod">Init Pod</string>
<string name="omnipod_cmd_deactivate_pod">Désactiver Pod</string>
<string name="omnipod_cmd_pod_history_na">Historique Pod non disponible pour le moment.</string>
<string name="omnipod_history_history_not_available">Historique Pod non disponible pour le moment.</string>
<string name="omnipod_init_pod_wizard_step1_title">Remplir le Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Amorçage</string>
<string name="omnipod_init_pod_wizard_step3_title">Collez le Pod</string>

View file

@ -15,7 +15,7 @@
<string name="omnipod_config_low_reservoir_alert_units">Numero di unità</string>
<!-- Omnipod - Fragment -->
<string name="omnipod_moments_ago">Momenti fa</string>
<string name="omnipod_pod_mgmt">GSTN pod</string>
<string name="omnipod_button_pod_management">GSTN pod</string>
<string name="omnipod_pod_status">Stato pod</string>
<string name="omnipod_total_delivered_label">Totale erogato</string>
<string name="omnipod_total_delivered">%1$.2f U</string>
@ -33,7 +33,7 @@
<string name="omnipod_pod_status_inactive">Inattivo</string>
<string name="omnipod_pod_status_pod_fault_description">Guasto pod: %1$s %2$s</string>
<string name="omnipod_pod_active_alerts">Attiva avvisi pod</string>
<string name="omnipod_acknowledge_active_alerts_short">Conferma avvisi</string>
<string name="omnipod_button_acknowledge_active_alerts">Conferma avvisi</string>
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
@ -42,28 +42,27 @@
<string name="omnipod_error_operation_not_possible_no_profile">Operazione non possibile.\n\n Devi attendere qualche minuto che AAPS imposti il profilo basale per la prima volta.</string>
<string name="omnipod_error_illegal_init_action_type">Illegal PodInitActionType: %1$s</string>
<string name="omnipod_error_pod_not_attached">Nessun pod attivo</string>
<string name="omnipod_driver_error_setup_action_verification_failed">Verifica comando fallita</string>
<string name="omnipod_driver_error_unexpected_exception_type">Si è verificato un errore imprevisto. Segnalalo! (%1$s).</string>
<string name="omnipod_driver_error_invalid_parameters">Comunicazione fallita: ricevuti parametri di input non validi</string>
<string name="omnipod_driver_error_communication_failed_timeout">Comunicazione fallita: timeout</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Comunicazione fallita: si è verificato un errore imprevisto. Segnalalo!</string>
<string name="omnipod_driver_error_crc_mismatch">Comunicazione fallita: verifica dell\'integrità del messaggio fallita</string>
<string name="omnipod_driver_error_invalid_packet_type">Comunicazione fallita: ricevuto un pacchetto non valido dal pod</string>
<string name="omnipod_driver_error_invalid_progress_state">Comunicazione fallita: il pod è in uno stato non corretto</string>
<string name="omnipod_driver_error_invalid_response">Comunicazione fallita: ricevuta una risposta non valida dal pod</string>
<string name="omnipod_driver_error_invalid_message_sequence_number">Comunicazione fallita: ricevuto dal pod un messaggio con una sequenza numerica non valida</string>
<string name="omnipod_driver_error_invalid_message_address">Comunicazione fallita: ricevuto dal pod un messaggio con un indirizzo non valido</string>
<string name="omnipod_driver_error_message_decoding_failed">Comunicazione fallita: non si è riuscito a decodificare il messaggio dal pod</string>
<string name="omnipod_driver_error_nonce_resync_failed">Comunicazione fallita: risincronizzazione \'nonce\' non riuscita</string>
<string name="omnipod_driver_error_nonce_out_of_sync">Comunicazione fallita: \'nonce\' non sincronizzato</string>
<string name="omnipod_driver_error_not_enough_data">Comunicazione fallita: non abbastanza dati ricevuti dal pod</string>
<string name="omnipod_driver_error_pod_fault">È stato rilevato un guasto al pod (%1$03d %2$s). Disattiva il tuo pod e avviane uno nuovo</string>
<string name="omnipod_driver_error_pod_returned_error_response">Comunicazione fallita: il pod ha restituito una risposta di errore</string>
<string name="omnipod_error_setup_action_verification_failed">Verifica comando fallita</string>
<string name="omnipod_error_invalid_parameters">Comunicazione fallita: ricevuti parametri di input non validi</string>
<string name="omnipod_error_communication_failed_timeout">Comunicazione fallita: timeout</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Comunicazione fallita: si è verificato un errore imprevisto. Segnalalo!</string>
<string name="omnipod_error_crc_mismatch">Comunicazione fallita: verifica dell\'integrità del messaggio fallita</string>
<string name="omnipod_error_invalid_packet_type">Comunicazione fallita: ricevuto un pacchetto non valido dal pod</string>
<string name="omnipod_error_invalid_progress_state">Comunicazione fallita: il pod è in uno stato non corretto</string>
<string name="omnipod_error_invalid_response">Comunicazione fallita: ricevuta una risposta non valida dal pod</string>
<string name="omnipod_error_invalid_message_sequence_number">Comunicazione fallita: ricevuto dal pod un messaggio con una sequenza numerica non valida</string>
<string name="omnipod_error_invalid_message_address">Comunicazione fallita: ricevuto dal pod un messaggio con un indirizzo non valido</string>
<string name="omnipod_error_message_decoding_failed">Comunicazione fallita: non si è riuscito a decodificare il messaggio dal pod</string>
<string name="omnipod_error_nonce_resync_failed">Comunicazione fallita: risincronizzazione \'nonce\' non riuscita</string>
<string name="omnipod_error_nonce_out_of_sync">Comunicazione fallita: \'nonce\' non sincronizzato</string>
<string name="omnipod_error_not_enough_data">Comunicazione fallita: non abbastanza dati ricevuti dal pod</string>
<string name="omnipod_error_pod_fault">È stato rilevato un guasto al pod (%1$03d %2$s). Disattiva il tuo pod e avviane uno nuovo</string>
<string name="omnipod_error_pod_returned_error_response">Comunicazione fallita: il pod ha restituito una risposta di errore</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_pod_mgmt_title">Gestione pod</string>
<string name="omnipod_cmd_init_pod">Inizializza pod</string>
<string name="omnipod_pod_management_title">Gestione pod</string>
<string name="omnipod_button_init_pod">Inizializza pod</string>
<string name="omnipod_cmd_deactivate_pod">Disattiva pod</string>
<string name="omnipod_cmd_pod_history">Storico pod</string>
<string name="omnipod_button_pod_history">Storico pod</string>
<string name="omnipod_cmd_set_bolus">Imposta bolo</string>
<string name="omnipod_cmd_set_tbr">Imposta basale temporanea</string>
<string name="omnipod_cmd_set_basal_schedule">Imposta piano basale</string>
@ -75,10 +74,10 @@
<string name="omnipod_cmd_suspend_delivery">Sospendi erogazione</string>
<string name="omnipod_cmd_resume_delivery">Riprendi erogazione</string>
<string name="omnipod_cmd_unknown_entry">Inserimento sconosciuto</string>
<string name="omnipod_cmd_bolus_value">%1$.2f U</string>
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.2f U, CHO=%2$.1f g</string>
<string name="omnipod_cmd_tbr_value">Tasso: %1$.2f U, durata: %2$d min</string>
<string name="omnipod_cmd_pod_history_na">Storico pod non disponibile al momento.</string>
<string name="omnipod_history_bolus_value">%1$.2f U</string>
<string name="omnipod_history_bolus_value_with_carbs">%1$.2f U, CHO=%2$.1f g</string>
<string name="omnipod_history_tbr_value">Tasso: %1$.2f U, durata: %2$d min</string>
<string name="omnipod_history_history_not_available">Storico pod non disponibile al momento.</string>
<string name="omnipod_init_pod_wizard_step1_title">Riempi il pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Caricamento</string>
<string name="omnipod_init_pod_wizard_step3_title">Attacca il pod</string>
@ -105,23 +104,23 @@
<string name="omnipod_alert_low_reservoir">Livello serbatoio basso</string>
<string name="omnipod_alert_unknown_alert">Avviso sconosciuto</string>
<string name="omnipod_error_set_basal_failed_delivery_might_be_suspended">Impostazione profilo basale non riuscita. L\'erogazione potrebbe essere sospesa! Aggiorna manualmente lo stato del pod dalla scheda Omnipod e riprendi l\'erogazione se necessario.</string>
<string name="omnipod_rl_stats">Statistiche RL</string>
<string name="omnipod_button_riley_link_stats">Statistiche RL</string>
<string name="omnipod_pod_firmware_version">Versione firmware</string>
<string name="omnipod_errors">Errori</string>
<string name="omnipod_cmd_basal_profile_not_set_is_same">Il profilo basale è lo stesso, non sarà impostato di nuovo.</string>
<string name="omnipod_confirmation_basal_profile_not_set_is_same">Il profilo basale è lo stesso, non sarà impostato di nuovo.</string>
<string name="omnipod_custom_action_reset_rileylink">Reset config.ne RileyLink</string>
<string name="omnipod_composite_time">%1$s e %2$s</string>
<string name="omnipod_time_ago">%1$s fa</string>
<string name="omnipod_waiting_for_rileylink_connection">Attesa connessione RileyLink...</string>
<string name="omnipod_bolus_did_not_succeed">Il bolo non è riuscito</string>
<string name="omnipod_refresh">Ricarica</string>
<string name="omnipod_resume_delivery">Riprendi erogazione</string>
<string name="omnipod_error_pod_suspended">Pod sospeso</string>
<string name="omnipod_error_bolus_did_not_succeed">Il bolo non è riuscito</string>
<string name="omnipod_button_refresh">Ricarica</string>
<string name="omnipod_button_resume_delivery">Riprendi erogazione</string>
<string name="omnipod_pod_suspended">Pod sospeso</string>
<string name="omnipod_less_than_a_minute_ago">Meno di un minuto fa</string>
<string name="omnipod_suspend_delivery_short">Sospendi</string>
<string name="omnipod_button_suspend_delivery">Sospendi</string>
<string name="omnipod_cmd_pair_and_prime">Associa e carica</string>
<string name="omnipod_cmd_fill_cannula_set_basal_profile">Riempi cannula e imposta profilo basale</string>
<string name="omnipod_expiration_alerts_updated">Configurazione avviso aggiornata nel pod</string>
<string name="omnipod_confirmation_expiration_alerts_updated">Configurazione avviso aggiornata nel pod</string>
<string name="omnipod_preference_category_rileylink">RileyLink</string>
<string name="omnipod_preference_category_other">Altro</string>
<string name="omnipod_preference_category_alerts">Avvisi</string>

View file

@ -18,12 +18,11 @@
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_illegal_init_action_type">Neteisingas inicijavimo tipas:%1$s</string>
<string name="omnipod_driver_error_unexpected_exception_type">Įvyko netikėta klaida. Prašome pranešti! (tipas: %1$s).</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Ryšio klaida: įvyko netikėta klaida. Prašome pranešti!</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Ryšio klaida: įvyko netikėta klaida. Prašome pranešti!</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Inicijuoti POD</string>
<string name="omnipod_button_init_pod">Inicijuoti POD</string>
<string name="omnipod_cmd_deactivate_pod">Išjungti POD</string>
<string name="omnipod_cmd_pod_history_na">POD istorija šiuo metu nėra prieinama.</string>
<string name="omnipod_history_history_not_available">POD istorija šiuo metu nėra prieinama.</string>
<string name="omnipod_init_pod_wizard_step1_title">Užpildyti POD</string>
<string name="omnipod_init_pod_wizard_step2_title">Užpildymas</string>
<string name="omnipod_init_pod_wizard_step3_title">Prijunkite POD</string>

View file

@ -10,13 +10,11 @@
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433,91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_illegal_init_action_type">Ongeldig PodInitActionType: %1$s</string>
<string name="omnipod_driver_error_unexpected_exception_type">Er is een onverwachte fout opgetreden. Rapporteer dit alsjeblieft! (type: %1$s).</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Communicatie mislukt: er is een onvoorziene fout opgetreden. Rapporteer dit alsjeblieft!</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Communicatie mislukt: er is een onvoorziene fout opgetreden. Rapporteer dit alsjeblieft!</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Initialiseer Pod</string>
<string name="omnipod_button_init_pod">Initialiseer Pod</string>
<string name="omnipod_cmd_deactivate_pod">Deactiveer Pod</string>
<string name="omnipod_cmd_pod_history_na">Pod Historie momenteel niet beschikbaar.</string>
<string name="omnipod_history_history_not_available">Pod Historie momenteel niet beschikbaar.</string>
<string name="omnipod_init_pod_wizard_step1_title">Vul de Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Uitvullen</string>
<string name="omnipod_init_pod_wizard_step3_title">Plaats de Pod</string>

View file

@ -11,12 +11,11 @@
<string name="omnipod_frequency">Omnipod (433,91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_illegal_init_action_type">Niedozwolone działanie PodInitActionType: %1$s</string>
<string name="omnipod_driver_error_unexpected_exception_type">Wystąpił nieoczekiwany błąd. Proszę zgłosić! (typ: %1$s).</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Komunikacja nie powiodła się: wystąpił nieoczekiwany błąd. Proszę zgłosić!</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Komunikacja nie powiodła się: wystąpił nieoczekiwany błąd. Proszę zgłosić!</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Uruchom Pod</string>
<string name="omnipod_button_init_pod">Uruchom Pod</string>
<string name="omnipod_cmd_deactivate_pod">Odłącz Pod</string>
<string name="omnipod_cmd_pod_history_na">Historia Pod nie jest dostępna w tej chwili.</string>
<string name="omnipod_history_history_not_available">Historia Pod nie jest dostępna w tej chwili.</string>
<string name="omnipod_init_pod_wizard_step1_title">Napełnij Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Wypełnianie</string>
<string name="omnipod_init_pod_wizard_step3_title">Przymocuj Poda</string>

View file

@ -15,29 +15,28 @@
<!-- Omnipod - Error -->
<string name="omnipod_error_operation_not_possible_no_configuration">A operação não é possível.\n\nPrecisa configurar o Omnipod primeiro, antes de pode usar esta operação.</string>
<string name="omnipod_error_illegal_init_action_type">PodInitActionType Ilegal: %1$s</string>
<string name="omnipod_driver_error_setup_action_verification_failed">A verificação do comando falhou</string>
<string name="omnipod_driver_error_unexpected_exception_type">Ocorreu um erro inesperado. Por favor reporte! (digite: %1$s).</string>
<string name="omnipod_driver_error_invalid_parameters">Falha na comunicação: foram recebidos parâmetros de entrada inválidos</string>
<string name="omnipod_driver_error_communication_failed_timeout">Falha na comunicação: tempo limite</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Falha na comunicação: ocorreu um erro inesperado. Por favor, reporte!</string>
<string name="omnipod_driver_error_crc_mismatch">Falha na comunicação: mensagem de falha de verificação de integridade</string>
<string name="omnipod_driver_error_invalid_packet_type">Falha na comunicação: recebeu um pacote inválido do Pod</string>
<string name="omnipod_driver_error_invalid_progress_state">Falha na comunicação: o Pod está em um estado errado</string>
<string name="omnipod_driver_error_invalid_response">Falha na comunicação: recebeu uma resposta inválida do Pod</string>
<string name="omnipod_driver_error_invalid_message_sequence_number">Falha na comunicação: recebeu uma mensagem com número de sequência inválido do Pod</string>
<string name="omnipod_driver_error_invalid_message_address">Falha na comunicação: recebeu uma mensagem com um endereço inválido do Pod</string>
<string name="omnipod_driver_error_message_decoding_failed">Falha na comunicação: falha ao descodificar a mensagem do Pod</string>
<string name="omnipod_driver_error_nonce_resync_failed">Falha na comunicação: nonce resync falhou</string>
<string name="omnipod_driver_error_nonce_out_of_sync">Falha na comunicação: nonce fora de sincronização</string>
<string name="omnipod_driver_error_not_enough_data">Falha na comunicação: não há dados suficientes recebidos do Pod</string>
<string name="omnipod_driver_error_pod_fault">Uma falha de Pod (%1$03d %2$s) foi detectada. Por favor, desactive o Pod e inicie um novo</string>
<string name="omnipod_driver_error_pod_returned_error_response">Falha na comunicação: o Pod devolveu uma resposta de erro</string>
<string name="omnipod_error_setup_action_verification_failed">A verificação do comando falhou</string>
<string name="omnipod_error_invalid_parameters">Falha na comunicação: foram recebidos parâmetros de entrada inválidos</string>
<string name="omnipod_error_communication_failed_timeout">Falha na comunicação: tempo limite</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Falha na comunicação: ocorreu um erro inesperado. Por favor, reporte!</string>
<string name="omnipod_error_crc_mismatch">Falha na comunicação: mensagem de falha de verificação de integridade</string>
<string name="omnipod_error_invalid_packet_type">Falha na comunicação: recebeu um pacote inválido do Pod</string>
<string name="omnipod_error_invalid_progress_state">Falha na comunicação: o Pod está em um estado errado</string>
<string name="omnipod_error_invalid_response">Falha na comunicação: recebeu uma resposta inválida do Pod</string>
<string name="omnipod_error_invalid_message_sequence_number">Falha na comunicação: recebeu uma mensagem com número de sequência inválido do Pod</string>
<string name="omnipod_error_invalid_message_address">Falha na comunicação: recebeu uma mensagem com um endereço inválido do Pod</string>
<string name="omnipod_error_message_decoding_failed">Falha na comunicação: falha ao descodificar a mensagem do Pod</string>
<string name="omnipod_error_nonce_resync_failed">Falha na comunicação: nonce resync falhou</string>
<string name="omnipod_error_nonce_out_of_sync">Falha na comunicação: nonce fora de sincronização</string>
<string name="omnipod_error_not_enough_data">Falha na comunicação: não há dados suficientes recebidos do Pod</string>
<string name="omnipod_error_pod_fault">Uma falha de Pod (%1$03d %2$s) foi detectada. Por favor, desactive o Pod e inicie um novo</string>
<string name="omnipod_error_pod_returned_error_response">Falha na comunicação: o Pod devolveu uma resposta de erro</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Iniciar Pod</string>
<string name="omnipod_button_init_pod">Iniciar Pod</string>
<string name="omnipod_cmd_deactivate_pod">Desactivar Pod</string>
<string name="omnipod_cmd_bolus_value">%1$.2f U</string>
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.2f U, HC=%2$.1f g</string>
<string name="omnipod_cmd_pod_history_na">Histórico do Pod não disponível no momento.</string>
<string name="omnipod_history_bolus_value">%1$.2f U</string>
<string name="omnipod_history_bolus_value_with_carbs">%1$.2f U, HC=%2$.1f g</string>
<string name="omnipod_history_history_not_available">Histórico do Pod não disponível no momento.</string>
<string name="omnipod_init_pod_wizard_step1_title">Encher o Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">A Purgar</string>
<string name="omnipod_init_pod_wizard_step3_title">Anexar o Pod</string>
@ -61,12 +60,12 @@
<string name="omnipod_alert_shutdown_imminent">Encerramento iminente</string>
<string name="omnipod_alert_low_reservoir">Reservatório baixo</string>
<string name="omnipod_alert_unknown_alert">Alerta desconhecido</string>
<string name="omnipod_rl_stats">Estatísticas RL</string>
<string name="omnipod_button_riley_link_stats">Estatísticas RL</string>
<string name="omnipod_errors">Erros</string>
<string name="omnipod_cmd_basal_profile_not_set_is_same">Perfil Basal é o mesmo, então não será definido novamente.</string>
<string name="omnipod_refresh">Actualizar</string>
<string name="omnipod_suspend_delivery_short">Suspender</string>
<string name="omnipod_uncertain_failure">Falha incerta</string>
<string name="omnipod_confirmation_basal_profile_not_set_is_same">Perfil Basal é o mesmo, então não será definido novamente.</string>
<string name="omnipod_button_refresh">Actualizar</string>
<string name="omnipod_button_suspend_delivery">Suspender</string>
<string name="omnipod_error_uncertain_failure">Falha incerta</string>
<string name="omnipod_preference_category_rileylink">RileyLink</string>
<string name="omnipod_preference_category_other">Outro</string>
<string name="omnipod_preference_category_alerts">Alertas</string>

View file

@ -17,7 +17,7 @@
<string name="omnipod_config_low_reservoir_alert_units">Număr unități</string>
<!-- Omnipod - Fragment -->
<string name="omnipod_moments_ago">Acum câteva momente</string>
<string name="omnipod_pod_mgmt">Managementul POD-ului</string>
<string name="omnipod_button_pod_management">Managementul POD-ului</string>
<string name="omnipod_pod_status">Statusul POD-ului</string>
<string name="omnipod_total_delivered_label">Total livrat</string>
<string name="omnipod_total_delivered">%1$.2f U</string>
@ -36,7 +36,7 @@
<string name="omnipod_pod_status_inactive">Inactiv</string>
<string name="omnipod_pod_status_pod_fault_description">Pod defect: %1$s %2$s</string>
<string name="omnipod_pod_active_alerts">Alerte active Pod</string>
<string name="omnipod_acknowledge_active_alerts_short">Confirmare alerte</string>
<string name="omnipod_button_acknowledge_active_alerts">Confirmare alerte</string>
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
@ -45,29 +45,28 @@
<string name="omnipod_error_operation_not_possible_no_profile">Operaţiunea nu este posibilă.\n\n Trebuie să aşteptaţi câteva minute până când AAPS încearcă să seteze profilul bazal pentru prima dată.</string>
<string name="omnipod_error_illegal_init_action_type">Acțiune PodInitActionType ilegala: %1$s</string>
<string name="omnipod_error_pod_not_attached">Niciun Pod activ</string>
<string name="omnipod_driver_error_setup_action_verification_failed">Verificarea comenzii a eşuat</string>
<string name="omnipod_driver_error_unexpected_exception_type">A apărut o eroare neașteptată. Vă rugăm să o raportați! (tip: %1$s).</string>
<string name="omnipod_driver_error_invalid_parameters">Comunicarea a eșuat: s-au primit parametri de intrare incorecți</string>
<string name="omnipod_driver_error_communication_failed_timeout">Comunicarea a eșuat: timpul a expirat</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Comunicarea a eşuat: a apărut o eroare neaşteptată. Vă rugăm să o raportaţi!</string>
<string name="omnipod_driver_error_crc_mismatch">Comunicarea a eşuat: verificarea integrităţii mesajului a eşuat</string>
<string name="omnipod_driver_error_invalid_packet_type">Comunicarea a eşuat: a fost primit un pachet invalid de la Pod</string>
<string name="omnipod_driver_error_invalid_progress_state">Comunicarea a eșuat: Pod-ul este într-o stare incorectă</string>
<string name="omnipod_driver_error_invalid_response">Comunicarea a eșuat: s-a primit un răspuns incorect de la Pod</string>
<string name="omnipod_driver_error_invalid_message_sequence_number">Comunicarea a eșuat: s-a primit un mesaj cu un număr de secvență invalid de la Pod</string>
<string name="omnipod_driver_error_invalid_message_address">Comunicarea a eșuat: s-a primit un mesaj cu o adresă invalidă de la Pod</string>
<string name="omnipod_driver_error_message_decoding_failed">Comunicarea a eșuat: nu s-a reușit decodarea mesajului de la Pod</string>
<string name="omnipod_driver_error_nonce_resync_failed">Comunicarea a eșuat: resincronizarea cheii de securitate nu a reușit</string>
<string name="omnipod_driver_error_nonce_out_of_sync">Comunicarea a eșuat: cheia de securitate nu poate fi sincronizată</string>
<string name="omnipod_driver_error_not_enough_data">Comunicarea a eşuat: nu s-au primit suficiente date de la Pod</string>
<string name="omnipod_driver_error_pod_fault">A fost detectată o eroare a Pod-ului (%1$03d %2$s). Vă rugăm să îl dezactivați pe acesta și să activați unul nou</string>
<string name="omnipod_driver_error_pod_returned_error_response">Comunicarea a eșuat: Pod-ul a returnat un răspuns de eroare</string>
<string name="omnipod_error_setup_action_verification_failed">Verificarea comenzii a eşuat</string>
<string name="omnipod_error_invalid_parameters">Comunicarea a eșuat: s-au primit parametri de intrare incorecți</string>
<string name="omnipod_error_communication_failed_timeout">Comunicarea a eșuat: timpul a expirat</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Comunicarea a eşuat: a apărut o eroare neaşteptată. Vă rugăm să o raportaţi!</string>
<string name="omnipod_error_crc_mismatch">Comunicarea a eşuat: verificarea integrităţii mesajului a eşuat</string>
<string name="omnipod_error_invalid_packet_type">Comunicarea a eşuat: a fost primit un pachet invalid de la Pod</string>
<string name="omnipod_error_invalid_progress_state">Comunicarea a eșuat: Pod-ul este într-o stare incorectă</string>
<string name="omnipod_error_invalid_response">Comunicarea a eșuat: s-a primit un răspuns incorect de la Pod</string>
<string name="omnipod_error_invalid_message_sequence_number">Comunicarea a eșuat: s-a primit un mesaj cu un număr de secvență invalid de la Pod</string>
<string name="omnipod_error_invalid_message_address">Comunicarea a eșuat: s-a primit un mesaj cu o adresă invalidă de la Pod</string>
<string name="omnipod_error_message_decoding_failed">Comunicarea a eșuat: nu s-a reușit decodarea mesajului de la Pod</string>
<string name="omnipod_error_nonce_resync_failed">Comunicarea a eșuat: resincronizarea cheii de securitate nu a reușit</string>
<string name="omnipod_error_nonce_out_of_sync">Comunicarea a eșuat: cheia de securitate nu poate fi sincronizată</string>
<string name="omnipod_error_not_enough_data">Comunicarea a eşuat: nu s-au primit suficiente date de la Pod</string>
<string name="omnipod_error_pod_fault">A fost detectată o eroare a Pod-ului (%1$03d %2$s). Vă rugăm să îl dezactivați pe acesta și să activați unul nou</string>
<string name="omnipod_error_pod_returned_error_response">Comunicarea a eșuat: Pod-ul a returnat un răspuns de eroare</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_pod_mgmt_title">Management Pod</string>
<string name="omnipod_cmd_init_pod">Inițializare Pod</string>
<string name="omnipod_pod_management_title">Management Pod</string>
<string name="omnipod_button_init_pod">Inițializare Pod</string>
<string name="omnipod_cmd_deactivate_pod">Dezactivare Pod</string>
<string name="omnipod_cmd_discard_pod">Baandonare Pod</string>
<string name="omnipod_cmd_pod_history">Istoric Pod</string>
<string name="omnipod_button_pod_history">Istoric Pod</string>
<string name="omnipod_cmd_set_bolus">Setează bolus</string>
<string name="omnipod_cmd_cancel_bolus">Anulează bolus</string>
<string name="omnipod_cmd_set_tbr">Setează bazala temporară</string>
@ -82,11 +81,11 @@
<string name="omnipod_cmd_suspend_delivery">Suspendați livrarea</string>
<string name="omnipod_cmd_resume_delivery">Reluați livrarea</string>
<string name="omnipod_cmd_unknown_entry">Inregistrare nerecunoscută</string>
<string name="omnipod_cmd_bolus_value">%1$.2f U</string>
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.2f U, CH=%2$.1f g</string>
<string name="omnipod_cmd_tbr_value">Rata: %1$.2f U, Durata: %2$d min</string>
<string name="omnipod_cmd_discard_pod_desc">Dacă apăsați <b>OK</b>, statusul Pod-ului va fi resetat forțat și nu veți mai putea comunica cu Pod-ul. Faceți acest lucru numai dacă nu mai se poate comunica deloc cu Pod-ul. Dacă se mai poate comunica cu Pod-ul, va rugam sa folosiți opțiunea <b>Dezactivare Pod</b>.\n\nDacă doriți să continuați, vă rugăm să vă asigurați, de asemenea, ca îndepărtați Pod-ul de pe corpul dvs.</string>
<string name="omnipod_cmd_pod_history_na">Istoricul Pod-ului nu este disponibil momentan.</string>
<string name="omnipod_history_bolus_value">%1$.2f U</string>
<string name="omnipod_history_bolus_value_with_carbs">%1$.2f U, CH=%2$.1f g</string>
<string name="omnipod_history_tbr_value">Rata: %1$.2f U, Durata: %2$d min</string>
<string name="omnipod_discard_pod_state_confirmation">Dacă apăsați <b>OK</b>, statusul Pod-ului va fi resetat forțat și nu veți mai putea comunica cu Pod-ul. Faceți acest lucru numai dacă nu mai se poate comunica deloc cu Pod-ul. Dacă se mai poate comunica cu Pod-ul, va rugam sa folosiți opțiunea <b>Dezactivare Pod</b>.\n\nDacă doriți să continuați, vă rugăm să vă asigurați, de asemenea, ca îndepărtați Pod-ul de pe corpul dvs.</string>
<string name="omnipod_history_history_not_available">Istoricul Pod-ului nu este disponibil momentan.</string>
<string name="omnipod_init_pod_wizard_step1_title">Umpleţi Pod-ul</string>
<string name="omnipod_init_pod_wizard_step1_desc">\nUmpleți noul Pod cu suficientă insulină pentru 3 zile.\n\nAr trebui sa auziți două bipuri de la Pod în timpul procesului de umplere. Acestea indică faptul că, cantitatea minimă de 85U a fost introdusă. Asigurați-vă ca ați golit complet seringa de umplere, chiar și după ce ați auzit două bipuri.\n\nDupă umplerea Pod-ului, vă rugăm să apăsați <b>Următorul</b>.\n\n<b>Notă:</b> Nu scoateți capacul transparent al acului in acest moment.\n<b>Notă:</b> Va rugam sa puneți RileyLink în poziție verticala și plasați Pod-ul la o distanta de câțiva centimetri.</string>
<string name="omnipod_init_pod_wizard_step2_title">Amorsare</string>
@ -123,35 +122,35 @@
<string name="omnipod_error_set_temp_basal_failed_old_tbr_cancelled_new_might_have_failed">Setarea bazalei temporare s-ar putea sa fi eșuat. Dacă o bazală temporară era activă anterior, a fost anulată. Reîmprospătați manual starea Pod-ului din secțiunea Omnipod.</string>
<string name="omnipod_error_set_time_failed_delivery_might_be_suspended">Setarea timpului s-ar putea sa fi eșuat. Livrarea ar putea fi suspendată! Vă rugăm să reîmprospătați manual starea Pod-ului din secțiunea Omnipod și să continuați livrarea dacă este necesar.</string>
<string name="omnipod_error_set_time_failed_delivery_suspended">Setarea timpului a eșuat. Livrarea este suspendată! Vă rugăm să reluați manual livrarea din secțiunea Omnipod.</string>
<string name="omnipod_bolus_failed_uncertain">Nu se poate verifica dacă bolusul a reuşit. Vă rugăm să verificați manual că Pod-ul poate bolusa ascultand click-urile. <b>Daca ești sigur ca bolus nu a reusit, ar trebui să stergi manual intrarea bolus din Tratamente, chiar dacă dai click pe \'Oprește bolus\' acum!</b></string>
<string name="omnipod_bolus_failed_uncertain_smb">Nu s-a putut verifica dacă bolusul SMB (%1$.2f U) a reușit. <b>Daca ești sigur ca bolusul nu a reușit, ar trebui să ștergi manual intrarea SMB din Tratamente.</b></string>
<string name="omnipod_rl_stats">Statistici RL</string>
<string name="omnipod_read_pulse_log_short">Jurnal Pulsuri</string>
<string name="omnipod_error_bolus_failed_uncertain">Nu se poate verifica dacă bolusul a reuşit. Vă rugăm să verificați manual că Pod-ul poate bolusa ascultand click-urile. <b>Daca ești sigur ca bolus nu a reusit, ar trebui să stergi manual intrarea bolus din Tratamente, chiar dacă dai click pe \'Oprește bolus\' acum!</b></string>
<string name="omnipod_error_bolus_failed_uncertain_smb">Nu s-a putut verifica dacă bolusul SMB (%1$.2f U) a reușit. <b>Daca ești sigur ca bolusul nu a reușit, ar trebui să ștergi manual intrarea SMB din Tratamente.</b></string>
<string name="omnipod_button_riley_link_stats">Statistici RL</string>
<string name="omnipod_button_read_pulse_log">Jurnal Pulsuri</string>
<string name="omnipod_pod_lot">LOT</string>
<string name="omnipod_pod_tid">TID</string>
<string name="omnipod_pod_firmware_version">Versiune firmware</string>
<string name="omnipod_errors">Erori</string>
<string name="omnipod_cmd_basal_profile_not_set_is_same">Profilul bazal este la fel cu cel existent și nu va fi reincărcat.</string>
<string name="omnipod_confirmation_basal_profile_not_set_is_same">Profilul bazal este la fel cu cel existent și nu va fi reincărcat.</string>
<string name="omnipod_custom_action_reset_rileylink">Resetează configurația RileyLink</string>
<string name="omnipod_time_or_timezone_change">Schimbare oră și/sau fus orar în Pod</string>
<string name="omnipod_confirmation_time_or_timezone_change">Schimbare oră și/sau fus orar în Pod</string>
<string name="omnipod_composite_time">%1$s și %2$s</string>
<string name="omnipod_time_ago">%1$s în urmă</string>
<string name="omnipod_waiting_for_rileylink_connection">Aşteptare conexiune RileyLink...</string>
<string name="omnipod_bolus_did_not_succeed">Bolusul nu a reușit</string>
<string name="omnipod_refresh">Actualizează</string>
<string name="omnipod_resume_delivery">Reluați livrarea</string>
<string name="omnipod_error_pod_suspended">Pod suspendat</string>
<string name="omnipod_error_bolus_did_not_succeed">Bolusul nu a reușit</string>
<string name="omnipod_button_refresh">Actualizează</string>
<string name="omnipod_button_resume_delivery">Reluați livrarea</string>
<string name="omnipod_pod_suspended">Pod suspendat</string>
<string name="omnipod_less_than_a_minute_ago">Mai puțin de un minut în urmă</string>
<string name="omnipod_suspend_delivery_short">Suspendare</string>
<string name="omnipod_button_suspend_delivery">Suspendare</string>
<string name="omnipod_cmd_pair_and_prime">Împerechere și amorsare</string>
<string name="omnipod_cmd_fill_cannula_set_basal_profile">Umpleţi canula şi setaţi profilul bazal</string>
<string name="omnipod_cmd_read_pulse_log">Obțineți jurnalul pulsurilor</string>
<string name="omnipod_uncertain_failure">Eroare necunoscută</string>
<string name="omnipod_cancelled_old_tbr_failed_to_set_new">S-a anulat vechea bazală temporară, dar nu s-a putut seta o nouă bazală temporară</string>
<string name="omnipod_error_uncertain_failure">Eroare necunoscută</string>
<string name="omnipod_error_cancelled_old_tbr_failed_to_set_new">S-a anulat vechea bazală temporară, dar nu s-a putut seta o nouă bazală temporară</string>
<string name="omnipod_cmd_set_fake_suspended_tbr">Se setează o bazală temporară falsă deoarece Pod-ul este suspendat</string>
<string name="omnipod_cmd_cancel_fake_suspended_tbr">Anulează bazala temporară falsă creată pentru că Pod-ul a fost suspendat</string>
<string name="omnipod_uncertain">incert</string>
<string name="omnipod_expiration_alerts_updated">Setarile de alertă actualizate în Pod</string>
<string name="omnipod_confirmation_expiration_alerts_updated">Setarile de alertă actualizate în Pod</string>
<string name="omnipod_preference_category_rileylink">RileyLink</string>
<string name="omnipod_preference_category_other">Altele</string>
<string name="omnipod_preference_category_alerts">Alerte</string>

View file

@ -12,7 +12,7 @@
<string name="omnipod_config_low_reservoir_alert_units">К-во единиц</string>
<!-- Omnipod - Fragment -->
<string name="omnipod_moments_ago">Только что</string>
<string name="omnipod_pod_mgmt">Управление помпой</string>
<string name="omnipod_button_pod_management">Управление помпой</string>
<string name="omnipod_pod_status">Статус помпы</string>
<string name="omnipod_total_delivered_label">Всего подано</string>
<string name="omnipod_total_delivered">%1$.2f ед</string>
@ -31,7 +31,7 @@
<string name="omnipod_pod_status_inactive">Неактивирован</string>
<string name="omnipod_pod_status_pod_fault_description">Ошибка Пода: %1$s %2$s</string>
<string name="omnipod_pod_active_alerts">Активные оповещения помпы</string>
<string name="omnipod_acknowledge_active_alerts_short">Оповещения активны</string>
<string name="omnipod_button_acknowledge_active_alerts">Оповещения активны</string>
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433.91 МГц)</string>
<!-- Omnipod - Error -->
@ -40,25 +40,24 @@
<string name="omnipod_error_operation_not_possible_no_profile">Операция невозможна.\n\n Подождите несколько минут, пока AAPS пытается задать профиль.</string>
<string name="omnipod_error_illegal_init_action_type">Недопустимый тип инициализации: %1$s</string>
<string name="omnipod_error_pod_not_attached">Активная помпа не включена</string>
<string name="omnipod_driver_error_setup_action_verification_failed">Командная верификация не состоялась</string>
<string name="omnipod_driver_error_unexpected_exception_type">Произошла непредвиденная ошибка. Пожалуйста, сообщите об ошибке! (сообщить:: %1$s).</string>
<string name="omnipod_driver_error_invalid_parameters">Ошибка связи: недопустимые входные параметры</string>
<string name="omnipod_driver_error_communication_failed_timeout">Ошибка связи: время ожидания истекло</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Ошибка связи: возникла непредвиденная ошибка. Пожалуйста, сообщите!</string>
<string name="omnipod_driver_error_crc_mismatch">Ошибка связи: проверка целостности сообщения завершилась неудачно</string>
<string name="omnipod_driver_error_invalid_packet_type">Ошибка связи: получен недопустимый пакет от Pod</string>
<string name="omnipod_driver_error_invalid_progress_state">Ошибка связи: Pod находится в неверном состоянии</string>
<string name="omnipod_driver_error_invalid_response">Ошибка связи: недопустимый ответ от помпы</string>
<string name="omnipod_driver_error_invalid_message_sequence_number">Ошибка связи: получено сообщение с недопустимым порядковым номером от Pod</string>
<string name="omnipod_driver_error_invalid_message_address">Ошибка связи: получено сообщение с некорректным адресом от Pod</string>
<string name="omnipod_driver_error_message_decoding_failed">Ошибка связи: не удалось декодировать сообщение от Pod</string>
<string name="omnipod_driver_error_nonce_resync_failed">Ошибка связи: не удалось выполнить повторную синхронизацию nonce</string>
<string name="omnipod_driver_error_nonce_out_of_sync">Ошибка соединения: вне синхронизации</string>
<string name="omnipod_driver_error_not_enough_data">Ошибка связи: недостаточно данных от Pod</string>
<string name="omnipod_error_setup_action_verification_failed">Командная верификация не состоялась</string>
<string name="omnipod_error_invalid_parameters">Ошибка связи: недопустимые входные параметры</string>
<string name="omnipod_error_communication_failed_timeout">Ошибка связи: время ожидания истекло</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Ошибка связи: возникла непредвиденная ошибка. Пожалуйста, сообщите!</string>
<string name="omnipod_error_crc_mismatch">Ошибка связи: проверка целостности сообщения завершилась неудачно</string>
<string name="omnipod_error_invalid_packet_type">Ошибка связи: получен недопустимый пакет от Pod</string>
<string name="omnipod_error_invalid_progress_state">Ошибка связи: Pod находится в неверном состоянии</string>
<string name="omnipod_error_invalid_response">Ошибка связи: недопустимый ответ от помпы</string>
<string name="omnipod_error_invalid_message_sequence_number">Ошибка связи: получено сообщение с недопустимым порядковым номером от Pod</string>
<string name="omnipod_error_invalid_message_address">Ошибка связи: получено сообщение с некорректным адресом от Pod</string>
<string name="omnipod_error_message_decoding_failed">Ошибка связи: не удалось декодировать сообщение от Pod</string>
<string name="omnipod_error_nonce_resync_failed">Ошибка связи: не удалось выполнить повторную синхронизацию nonce</string>
<string name="omnipod_error_nonce_out_of_sync">Ошибка соединения: вне синхронизации</string>
<string name="omnipod_error_not_enough_data">Ошибка связи: недостаточно данных от Pod</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Инициализировать Pod</string>
<string name="omnipod_button_init_pod">Инициализировать Pod</string>
<string name="omnipod_cmd_deactivate_pod">Деактивировать Pod</string>
<string name="omnipod_cmd_pod_history_na">В настоящее время история помпы недоступна.</string>
<string name="omnipod_history_history_not_available">В настоящее время история помпы недоступна.</string>
<string name="omnipod_init_pod_wizard_step1_title">Заполнить Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Первичное заполнение инфузионной секции пода</string>
<string name="omnipod_init_pod_wizard_step3_title">Подключить Под</string>

View file

@ -11,12 +11,11 @@
<string name="omnipod_frequency">Omnipod (433,91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_illegal_init_action_type">Neplatný atribút PodInitActionType: %1$s</string>
<string name="omnipod_driver_error_unexpected_exception_type">Došlo k neočakávanej chybe. Nahláste ju! (typ: %1$s).</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Komunikácia zlyhala: vyskytla sa neočakávaná chyba. Prosím, nahláste to!</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Komunikácia zlyhala: vyskytla sa neočakávaná chyba. Prosím, nahláste to!</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Inicializovať Pod</string>
<string name="omnipod_button_init_pod">Inicializovať Pod</string>
<string name="omnipod_cmd_deactivate_pod">Deaktivovať Pod</string>
<string name="omnipod_cmd_pod_history_na">História Podu momentálne nie je dostupná.</string>
<string name="omnipod_history_history_not_available">História Podu momentálne nie je dostupná.</string>
<string name="omnipod_init_pod_wizard_step1_title">Naplňte Pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Plnenie</string>
<string name="omnipod_init_pod_wizard_step3_title">Pripevni Pod</string>

View file

@ -11,12 +11,11 @@
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_illegal_init_action_type">Ogiltig PodInitActionType: %1$s</string>
<string name="omnipod_driver_error_unexpected_exception_type">Ett oväntat fel uppstod. Vänligen rapportera! (typ: %1$s).</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Kommunikationsfel: Ett oväntat fel inträffade. Rapportera!</string>
<string name="omnipod_error_communication_failed_unexpected_exception">Kommunikationsfel: Ett oväntat fel inträffade. Rapportera!</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_cmd_init_pod">Initiera pod</string>
<string name="omnipod_button_init_pod">Initiera pod</string>
<string name="omnipod_cmd_deactivate_pod">Inaktivera pod</string>
<string name="omnipod_cmd_pod_history_na">Pod-historik är inte tillgänglig för tillfället.</string>
<string name="omnipod_history_history_not_available">Pod-historik är inte tillgänglig för tillfället.</string>
<string name="omnipod_init_pod_wizard_step1_title">Fyll pod</string>
<string name="omnipod_init_pod_wizard_step2_title">Förfyllning</string>
<string name="omnipod_init_pod_wizard_step3_title">Fäst podden</string>

View file

@ -1,14 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Omnipod -->
<!-- Omnipod - Base -->
<string name="omnipod_name" translatable="false">Omnipod</string>
<string name="omnipod_name_short" translatable="false">Pod</string>
<string name="description_pump_omnipod">Pump integration for Omnipod, requires RileyLink (with at least 2.0 firmware) device.</string>
<!-- Omnipod Configuration -->
<!-- Omnipod - Keys -->
<string name="key_omnipod_pod_state" translatable="false">AAPS.Omnipod.pod_state</string>
<string name="key_omnipod_current_bolus" translatable="false">AAPS.Omnipod.current_bolus</string>
<string name="key_omnipod_bolus_beeps_enabled" translatable="false">AAPS.Omnipod.bolus_beeps_enabled</string>
<string name="key_omnipod_basal_beeps_enabled" translatable="false">AAPS.Omnipod.basal_beeps_enabled</string>
<string name="key_omnipod_smb_beeps_enabled" translatable="false">AAPS.Omnipod.smb_beeps_enabled</string>
@ -20,6 +15,22 @@
<string name="key_omnipod_expiration_reminder_hours_before_shutdown" translatable="false">AAPS.Omnipod.expiration_reminder_hours_before_shutdown</string>
<string name="key_omnipod_low_reservoir_alert_enabled" translatable="false">AAPS.Omnipod.low_reservoir_alert_enabled</string>
<string name="key_omnipod_low_reservoir_alert_units" translatable="false">AAPS.Omnipod.low_reservoir_alert_units</string>
<string name="key_omnipod_tbrs_set" translatable="false">AAPS.Omnipod.tbrs_set</string>
<string name="key_omnipod_std_boluses_delivered" translatable="false">AAPS.Omnipod.std_boluses_delivered</string>
<string name="key_omnipod_smb_boluses_delivered" translatable="false">AAPS.Omnipod.smb_boluses_delivered</string>
<!-- Omnipod - Non translatable -->
<string name="omnipod_name" translatable="false">Omnipod</string>
<string name="omnipod_name_short" translatable="false">Pod</string>
<string name="omnipod_frequency" translatable="false">Omnipod (433.91 MHz)</string>
<string name="omnipod_pod_lot" translatable="false">LOT</string>
<string name="omnipod_pod_tid" translatable="false">TID</string>
<string name="omnipod_pod_firmware_version_value" translatable="false">PM %1$s / PI %2$s</string>
<string name="omnipod_pod_time_with_timezone" translatable="false">%1$s (%2$s)</string>
<string name="omnipod_two_strings_concatenated_by_colon" translatable="false">%1$s: %2$s</string>
<string name="omnipod_last_bolus_value" translatable="false">%1$.2f %2$s (%3$s)</string>
<!-- Omnipod - Preferences -->
<string name="omnipod_config_bolus_beeps_enabled">Bolus beeps enabled</string>
<string name="omnipod_config_basal_beeps_enabled">Basal beeps enabled</string>
<string name="omnipod_config_smb_beeps_enabled">SMB beeps enabled</string>
@ -31,18 +42,12 @@
<string name="omnipod_config_expiration_reminder_hours_before_shutdown">Hours before shutdown</string>
<string name="omnipod_config_low_reservoir_alert_enabled">Low reservoir alert enabled</string>
<string name="omnipod_config_low_reservoir_alert_units">Number of units</string>
<string name="omnipod_preference_category_rileylink">RileyLink</string>
<string name="omnipod_preference_category_other">Other</string>
<string name="omnipod_preference_category_alerts">Alerts</string>
<string name="omnipod_preference_category_confirmation_beeps">Confirmation beeps</string>
<!-- Omnipod - Fragment -->
<string name="omnipod_moments_ago">Moments ago</string>
<string name="omnipod_pod_mgmt">Pod mgmt</string>
<string name="omnipod_pod_status">Pod status</string>
<string name="omnipod_total_delivered_label">Total delivered</string>
<string name="omnipod_total_delivered">%1$.2f U</string>
<string name="omnipod_reservoir_left">%1$.2f U left</string>
<string name="omnipod_reservoir_over50">Over 50 U</string>
<string name="omnipod_pod_address">Pod address</string>
<string name="omnipod_pod_expiry">Pod expires</string>
<string name="omnipod_warning">Warning</string>
<!-- Omnipod - Pod Status -->
<string name="omnipod_pod_status_no_active_pod">No active Pod</string>
<string name="omnipod_pod_status_waiting_for_pair_and_prime">Setup in progress (waiting for pair and prime)</string>
<string name="omnipod_pod_status_waiting_for_cannula_insertion">Setup in progress (waiting for cannula insertion)</string>
@ -52,46 +57,90 @@
<string name="omnipod_pod_status_activation_time_exceeded">Activation time exceeded</string>
<string name="omnipod_pod_status_inactive">Inactive</string>
<string name="omnipod_pod_status_pod_fault_description">Pod fault: %1$s %2$s</string>
<string name="omnipod_pod_active_alerts">Active Pod alerts</string>
<string name="omnipod_acknowledge_active_alerts_short">Ack alerts</string>
<string name="omnipod_last_bolus" translatable="false">%1$.2f %2$s (%3$s)</string>
<string name="omnipod_temp_basal" translatable="false">%1$.2fU/h @%2$s (%3$d/%4$d minutes)</string>
<!-- Omnipod - Alerts -->
<string name="omnipod_alert_finish_pairing_reminder">Finish pairing reminder</string>
<string name="omnipod_alert_finish_setup_reminder_reminder">Finish setup reminder</string>
<string name="omnipod_alert_expiration">Pod will expire soon</string>
<string name="omnipod_alert_expiration_advisory">Pod will expire soon</string>
<string name="omnipod_alert_shutdown_imminent">Shutdown is imminent</string>
<string name="omnipod_alert_low_reservoir">Low reservoir</string>
<string name="omnipod_alert_unknown_alert">Unknown alert</string>
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - History -->
<string name="omnipod_history_title">Pod history</string>
<string name="omnipod_history_item_description">Description</string>
<string name="omnipod_history_item_source">Source</string>
<string name="omnipod_history_item_date">Date</string>
<string name="omnipod_history_type">Type:</string>
<string name="omnipod_history_bolus_value">%1$.2f U</string>
<string name="omnipod_history_bolus_value_with_carbs">%1$.2f U, CH=%2$.1f g</string>
<string name="omnipod_history_tbr_value">Rate: %1$.2f U, duration: %2$d minutes</string>
<string name="omnipod_history_history_not_available">Pod History not available at the moment.</string>
<!-- Omnipod - Error -->
<string name="omnipod_warning">Warning</string>
<string name="omnipod_error_rileylink_address_invalid">RileyLink address invalid.</string>
<string name="omnipod_error_operation_not_possible_no_configuration">Operation is not possible.\n\nYou need to configure Omnipod first, before you can use this operation.</string>
<string name="omnipod_error_operation_not_possible_no_profile">Operation is not possible.\n\n You need to wait a few minutes, until AAPS tries to set basal profile for first time.</string>
<string name="omnipod_error_illegal_init_action_type">Illegal PodInitActionType: %1$s</string>
<string name="omnipod_error_pod_not_attached">No active Pod</string>
<string name="omnipod_driver_error_setup_action_verification_failed">Command verification failed</string>
<string name="omnipod_driver_error_unexpected_exception_type">An unexpected error occurred. Please report! (%1$s: %2$s).</string>
<string name="omnipod_driver_error_invalid_parameters">Communication failed: received invalid input parameters</string>
<string name="omnipod_driver_error_communication_failed_timeout">Communication failed: timeout</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Communication failed: an unexpected error occurred. Please report!</string>
<string name="omnipod_driver_error_crc_mismatch">Communication failed: message integrity verification failed</string>
<string name="omnipod_driver_error_invalid_packet_type">Communication failed: received an invalid packet from the Pod</string>
<string name="omnipod_driver_error_invalid_progress_state">Communication failed: the Pod is in a wrong state</string>
<string name="omnipod_driver_error_invalid_response">Communication failed: received an invalid response from the Pod</string>
<string name="omnipod_driver_error_invalid_message_sequence_number">Communication failed: received a message with an invalid sequence number from the Pod</string>
<string name="omnipod_driver_error_invalid_message_address">Communication failed: received a message with an invalid address from the Pod</string>
<string name="omnipod_driver_error_message_decoding_failed">Communication failed: failed to decode message from the Pod</string>
<string name="omnipod_driver_error_nonce_resync_failed">Communication failed: nonce resync failed</string>
<string name="omnipod_driver_error_nonce_out_of_sync">Communication failed: nonce out of sync</string>
<string name="omnipod_driver_error_not_enough_data">Communication failed: not enough data received from the Pod</string>
<string name="omnipod_driver_error_pod_fault">A Pod fault (%1$03d %2$s) has been detected. Please deactivate your Pod and start a new one</string>
<string name="omnipod_driver_error_pod_returned_error_response">Communication failed: the Pod returned an error response</string>
<string name="omnipod_error_setup_action_verification_failed">Command verification failed</string>
<string name="omnipod_error_unexpected_exception">An unexpected error occurred. Please report! (%1$s: %2$s).</string>
<string name="omnipod_error_crc_mismatch">Communication failed: message integrity verification failed</string>
<string name="omnipod_error_invalid_packet_type">Communication failed: received an invalid packet from the Pod</string>
<string name="omnipod_error_invalid_progress_state">Communication failed: the Pod is in a wrong state</string>
<string name="omnipod_error_invalid_response">Communication failed: received an invalid response from the Pod</string>
<string name="omnipod_error_invalid_message_sequence_number">Communication failed: received a message with an invalid sequence number from the Pod</string>
<string name="omnipod_error_invalid_message_address">Communication failed: received a message with an invalid address from the Pod</string>
<string name="omnipod_error_message_decoding_failed">Communication failed: failed to decode message from the Pod</string>
<string name="omnipod_error_nonce_resync_failed">Communication failed: nonce resync failed</string>
<string name="omnipod_error_nonce_out_of_sync">Communication failed: nonce out of sync</string>
<string name="omnipod_error_not_enough_data">Communication failed: not enough data received from the Pod</string>
<string name="omnipod_error_pod_fault">A Pod fault (%1$03d %2$s) has been detected. Please deactivate your Pod and start a new one</string>
<string name="omnipod_error_pod_returned_error_response">Communication failed: the Pod returned an error response</string>
<string name="omnipod_error_communication_failed_no_response_from_riley_link">No response from RileyLink</string>
<string name="omnipod_error_communication_failed_riley_link_interrupted">RileyLink interrupted</string>
<string name="omnipod_error_communication_failed_no_response_from_pod">No response from Pod</string>
<string name="omnipod_error_set_basal_failed_delivery_might_be_suspended">Setting basal profile failed. Delivery might be suspended! Please manually refresh the Pod status from the Omnipod tab and resume delivery if needed.</string>
<string name="omnipod_error_set_basal_might_have_failed_delivery_might_be_suspended">Setting basal profile might have failed. Delivery might be suspended! Please manually refresh the Pod status from the Omnipod tab and resume delivery if needed.</string>
<string name="omnipod_error_set_basal_failed_delivery_suspended">Setting basal profile failed. Delivery is suspended! Please manually resume delivery from the Omnipod tab.</string>
<string name="omnipod_error_set_basal_failed">Setting basal profile failed.</string>
<string name="omnipod_error_cancel_temp_basal_failed_uncertain">Cancelling temp basal might have failed. Please manually refresh the Pod status from the Omnipod tab.</string>
<string name="omnipod_error_suspend_delivery_failed_uncertain">Suspending delivery might have failed. Please manually refresh the Pod status from the Omnipod tab.</string>
<string name="omnipod_error_set_temp_basal_failed_old_tbr_might_be_cancelled">Setting temp basal failed. If a temp basal was previously running, it might have been cancelled. Please manually refresh the Pod status from the Omnipod tab.</string>
<string name="omnipod_error_set_temp_basal_failed_old_tbr_cancelled_new_might_have_failed">Setting temp might have basal failed. If a temp basal was previously running, it has been cancelled. Please manually refresh the Pod status from the Omnipod tab.</string>
<string name="omnipod_error_set_time_failed_delivery_might_be_suspended">Setting time might have failed. Delivery might be suspended! Please manually refresh the Pod status from the Omnipod tab and resume delivery if needed.</string>
<string name="omnipod_error_set_time_failed_delivery_suspended">Setting time failed. Delivery is suspended! Please manually resume delivery from the Omnipod tab.</string>
<string name="omnipod_error_failed_to_set_profile_empty_profile">Failed to set basal profile: received an empty profile. Make sure to activate your basal profile.</string>
<string name="omnipod_error_set_initial_basal_schedule_no_profile">No basal profile is active. Make sure to activate your basal profile.</string>
<string name="omnipod_error_uncertain_failure">Uncertain failure</string>
<string name="omnipod_error_cancelled_old_tbr_failed_to_set_new">Cancelled the old temporary basal, but failed to set new temporary basal</string>
<string name="omnipod_error_unknown_custom_command">Unknown custom command: %1$s</string>
<string name="omnipod_error_failed_to_read_pulse_log">Failed to read Pulse Log</string>
<string name="omnipod_error_failed_to_refresh_status">Failed to refresh status</string>
<string name="omnipod_error_failed_to_acknowledge_alerts">Failed to acknowledge alerts</string>
<string name="omnipod_error_failed_to_suspend_delivery">Failed to suspend delivery</string>
<string name="omnipod_error_failed_to_set_time">Failed to set time</string>
<string name="omnipod_error_failed_to_resume_delivery">Failed to resume delivery</string>
<string name="omnipod_error_automatic_time_or_timezone_change_failed">Failed to automatically change time and/or time zone on the Pod. You can manually synchronise the time on the Omnipod tab.</string>
<string name="omnipod_error_bolus_failed_uncertain">Unable to verify whether the bolus succeeded. Please manually verify that your Pod is bolusing by listening to clicks. <b>If you are sure that the bolus didn\'t succeed, you should manually delete the bolus entry from Treatments, even if you click \'Cancel bolus\' now!</b></string>
<string name="omnipod_error_bolus_failed_uncertain_smb">Unable to verify whether SMB bolus (%1$.2f U) succeeded. <b>If you are sure that the Bolus didn\'t succeed, you should manually delete the SMB entry from Treatments.</b></string>
<string name="omnipod_error_bolus_did_not_succeed">Bolus did not succeed.</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_pod_mgmt_title">Pod management</string>
<string name="omnipod_cmd_init_pod">Init Pod</string>
<!-- Omnipod - Confirmation -->
<string name="omnipod_confirmation">Confirmation</string>
<string name="omnipod_confirmation_basal_profile_not_set_is_same">Basal profile is the same, so it will not be set again.</string>
<string name="omnipod_confirmation_time_or_timezone_change">Time and/or time zone changed on the Pod.</string>
<string name="omnipod_confirmation_expiration_alerts_updated">Alert configuration has been updated in the Pod.</string>
<string name="omnipod_confirmation_time_on_pod_updated">The time on the Pod has been updated.</string>
<string name="omnipod_confirmation_suspended_delivery">All insulin delivery has been suspended.</string>
<string name="omnipod_confirmation_acknowledged_alerts">Active alerts have been acknowledged.</string>
<string name="omnipod_confirmation_delivery_resumed">Insulin delivery has been resumed.</string>
<!-- Omnipod - Commands -->
<string name="omnipod_cmd_deactivate_pod">Deactivate Pod</string>
<string name="omnipod_cmd_discard_pod">Discard Pod</string>
<string name="omnipod_cmd_pod_history">Pod history</string>
<string name="omnipod_cmd_set_bolus">Set bolus</string>
<string name="omnipod_cmd_cancel_bolus">Cancel bolus</string>
<string name="omnipod_cmd_set_tbr">Set temporary basal</string>
@ -106,11 +155,13 @@
<string name="omnipod_cmd_suspend_delivery">Suspend delivery</string>
<string name="omnipod_cmd_resume_delivery">Resume delivery</string>
<string name="omnipod_cmd_unknown_entry">Unknown entry</string>
<string name="omnipod_cmd_bolus_value">%1$.2f U</string>
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.2f U, CH=%2$.1f g</string>
<string name="omnipod_cmd_tbr_value">Rate: %1$.2f U, duration: %2$d min</string>
<string name="omnipod_cmd_discard_pod_desc">If you press <b>OK</b>, the Pod state will be forcibly reset and you will not be able to communicate with the Pod anymore. Do this only if you can not communicate with the Pod anymore. If you can still communicate with the Pod, please use the <b>Deactivate Pod</b> option.\n\nIf you wish to proceed, please make sure to also remove the Pod from your body.</string>
<string name="omnipod_cmd_pod_history_na">Pod History not available at the moment.</string>
<string name="omnipod_cmd_pair_and_prime">Pair and prime</string>
<string name="omnipod_cmd_fill_cannula_set_basal_profile">Fill cannula and set basal profile</string>
<string name="omnipod_cmd_read_pulse_log">Read pulse log</string>
<string name="omnipod_cmd_set_fake_suspended_tbr">Set fake temporary basal because the Pod is suspended</string>
<string name="omnipod_cmd_cancel_fake_suspended_tbr">Cancel fake temporary basal that was created because the Pod was suspended</string>
<!-- Omnipod - Pod Activation / Deactivation Wizards -->
<string name="omnipod_init_pod_wizard_step1_title">Fill the Pod</string>
<string name="omnipod_init_pod_wizard_step1_desc">\nFill the new Pod with enough insulin for 3 days.\n\nListen for two beeps from the Pod during the filling process. These indicate that the minimum amount of 85U has been inserted. Be sure to completely empty the fill syringe, even after hearing the two beeps.\n\nAfter filling the Pod, please press <b>Next</b>.\n\n<b>Note:</b> do not remove the Pod\'s needle cap at this time.\n<b>Note:</b> please place the RileyLink in an upright position and place the Pod a few inches away.</string>
<string name="omnipod_init_pod_wizard_step2_title">Priming</string>
@ -132,89 +183,53 @@
<string name="omnipod_init_pod_set_basal_profile">Set basal profile</string>
<string name="omnipod_deactivate_pod_cancel_delivery">Cancel delivery</string>
<string name="omnipod_deactivate_pod_deactivate_pod">Deactivate Pod</string>
<!-- Omnipod - Base -->
<string name="omnipod_alert_finish_pairing_reminder">Finish pairing reminder</string>
<string name="omnipod_alert_finish_setup_reminder_reminder">Finish setup reminder</string>
<string name="omnipod_alert_expiration">Pod will expire soon</string>
<string name="omnipod_alert_expiration_advisory">Pod will expire soon</string>
<string name="omnipod_alert_shutdown_imminent">Shutdown is imminent</string>
<string name="omnipod_alert_low_reservoir">Low reservoir</string>
<string name="omnipod_alert_unknown_alert">Unknown alert</string>
<string name="omnipod_error_set_basal_failed_delivery_might_be_suspended">Setting basal profile failed. Delivery might be suspended! Please manually refresh the Pod status from the Omnipod tab and resume delivery if needed.</string>
<string name="omnipod_error_set_basal_might_have_failed_delivery_might_be_suspended">Setting basal profile might have failed. Delivery might be suspended! Please manually refresh the Pod status from the Omnipod tab and resume delivery if needed.</string>
<string name="omnipod_error_set_basal_failed_delivery_suspended">Setting basal profile failed. Delivery is suspended! Please manually resume delivery from the Omnipod tab.</string>
<string name="omnipod_error_cancel_temp_basal_failed_uncertain">Cancelling temp basal might have failed. Please manually refresh the Pod status from the Omnipod tab.</string>
<string name="omnipod_error_suspend_delivery_failed_uncertain">Suspending delivery might have failed. Please manually refresh the Pod status from the Omnipod tab.</string>
<string name="omnipod_error_suspend_delivery_failed">Suspending delivery failed.</string>
<string name="omnipod_error_set_temp_basal_failed_old_tbr_might_be_cancelled">Setting temp basal failed. If a temp basal was previously running, it might have been cancelled. Please manually refresh the Pod status from the Omnipod tab.</string>
<string name="omnipod_error_set_temp_basal_failed_old_tbr_cancelled_new_might_have_failed">Setting temp might have basal failed. If a temp basal was previously running, it has been cancelled. Please manually refresh the Pod status from the Omnipod tab.</string>
<string name="omnipod_error_set_time_failed_delivery_might_be_suspended">Setting time might have failed. Delivery might be suspended! Please manually refresh the Pod status from the Omnipod tab and resume delivery if needed.</string>
<string name="omnipod_error_set_time_failed_delivery_suspended">Setting time failed. Delivery is suspended! Please manually resume delivery from the Omnipod tab.</string>
<string name="omnipod_bolus_failed_uncertain">Unable to verify whether the bolus succeeded. Please manually verify that your Pod is bolusing by listening to clicks. <b>If you are sure that the bolus didn\'t succeed, you should manually delete the bolus entry from Treatments, even if you click \'Cancel bolus\' now!</b></string>
<string name="omnipod_bolus_failed_uncertain_smb">Unable to verify whether SMB bolus (%1$.2f U) succeeded. <b>If you are sure that the Bolus didn\'t succeed, you should manually delete the SMB entry from Treatments.</b></string>
<string name="omnipod_rl_stats">RL stats</string>
<string name="omnipod_read_pulse_log_short">Pulse log</string>
<string name="omnipod_pod_lot">LOT</string>
<string name="omnipod_pod_tid">TID</string>
<string name="omnipod_pod_firmware_version">Firmware version</string>
<string name="omnipod_pod_firmware_version_value" translatable="false">PM %1$s / PI %2$s</string>
<string name="omnipod_pod_time_with_timezone" translatable="false">%1$s (%2$s)</string>
<string name="omnipod_errors">Errors</string>
<string name="omnipod_cmd_basal_profile_not_set_is_same">Basal profile is the same, so it will not be set again.</string>
<string name="omnipod_custom_action_reset_rileylink">Reset RileyLink config</string>
<string name="omnipod_time_or_timezone_change">Time and/or time zone changed on the Pod</string>
<string name="omnipod_time_or_timezone_change_failed">Failed to automatically change time and/or time zone on the Pod. You can manually synchronise the time on the Omnipod tab.</string>
<string name="omnipod_composite_time">%1$s and %2$s</string>
<string name="omnipod_time_ago">%1$s ago</string>
<string name="omnipod_waiting_for_rileylink_connection">Waiting for RileyLink connection...</string>
<string name="omnipod_bolus_did_not_succeed">Bolus did not succeed</string>
<string name="omnipod_refresh">Refresh</string>
<string name="omnipod_resume_delivery">Resume delivery</string>
<string name="omnipod_error_pod_suspended">Pod suspended</string>
<string name="omnipod_less_than_a_minute_ago">Less than a minute ago</string>
<string name="omnipod_suspend_delivery_short">Suspend</string>
<string name="omnipod_cmd_pair_and_prime">Pair and prime</string>
<string name="omnipod_cmd_fill_cannula_set_basal_profile">Fill cannula and set basal profile</string>
<string name="omnipod_cmd_read_pulse_log">Read pulse log</string>
<string name="omnipod_uncertain_failure">Uncertain failure</string>
<string name="omnipod_cancelled_old_tbr_failed_to_set_new">Cancelled the old temporary basal, but failed to set new temporary basal</string>
<string name="omnipod_cmd_set_fake_suspended_tbr">Set fake temporary basal because the Pod is suspended</string>
<string name="omnipod_cmd_cancel_fake_suspended_tbr">Cancel fake temporary basal that was created because the Pod was suspended</string>
<string name="omnipod_uncertain">uncertain</string>
<string name="omnipod_expiration_alerts_updated">Alert configuration updated in Pod</string>
<string name="omnipod_preference_category_rileylink">RileyLink</string>
<string name="omnipod_preference_category_other">Other</string>
<string name="omnipod_preference_category_alerts">Alerts</string>
<string name="omnipod_preference_category_confirmation_beeps">Confirmation beeps</string>
<string name="omnipod_wizard_button_exit">Exit</string>
<string name="omnipod_wizard_button_previous">Previous</string>
<string name="omnipod_wizard_button_next">Next</string>
<string name="omnipod_wizard_button_finish">Finish</string>
<string name="omnipod_history_item_description">Description</string>
<string name="omnipod_history_item_source">Source</string>
<string name="omnipod_history_item_date">Date</string>
<string name="omnipod_history_type">Type:</string>
<string name="omnipod_error_failed_to_set_profile_empty_profile">Failed to set basal profile: received an empty profile. Make sure to activate your basal profile.</string>
<string name="omnipod_error_set_initial_basal_schedule_no_profile">No basal profile is active. Make sure to activate your basal profile.</string>
<!-- Omnipod - Buttons -->
<string name="omnipod_button_init_pod">Init Pod</string>
<string name="omnipod_button_deactivate_pod">Deactivate Pod</string>
<string name="omnipod_button_discard_pod">Discard Pod</string>
<string name="omnipod_button_set_time">Set time</string>
<string name="omnipod_button_suspend_delivery">Suspend</string>
<string name="omnipod_button_riley_link_stats">RL stats</string>
<string name="omnipod_button_read_pulse_log">Pulse log</string>
<string name="omnipod_button_refresh">Refresh</string>
<string name="omnipod_button_resume_delivery">Resume delivery</string>
<string name="omnipod_button_pod_history">Pod history</string>
<string name="omnipod_button_pod_management">Pod mgmt</string>
<string name="omnipod_button_acknowledge_active_alerts">Ack alerts</string>
<!-- Omnipod - Other -->
<string name="omnipod_errors">Errors</string>
<string name="omnipod_pod_management_title">Pod management</string>
<string name="omnipod_pod_status">Pod status</string>
<string name="omnipod_total_delivered_label">Total delivered</string>
<string name="omnipod_total_delivered">%1$.2f U</string>
<string name="omnipod_reservoir_left">%1$.2f U left</string>
<string name="omnipod_reservoir_over50">Over 50 U</string>
<string name="omnipod_pod_address">Pod address</string>
<string name="omnipod_pod_expiry">Pod expires</string>
<string name="omnipod_pod_active_alerts">Active Pod alerts</string>
<string name="omnipod_discard_pod_state_confirmation">If you press <b>OK</b>, the Pod state will be forcibly reset and you will not be able to communicate with the Pod anymore. Do this only if you can not communicate with the Pod anymore. If you can still communicate with the Pod, please use the <b>Deactivate Pod</b> option.\n\nIf you wish to proceed, please make sure to also remove the Pod from your body.</string>
<string name="omnipod_temp_basal_value">%1$.2fU/h @%2$s (%3$d/%4$d minutes)</string>
<string name="description_pump_omnipod">Pump integration for Omnipod, requires RileyLink (with at least 2.0 firmware) device.</string>
<string name="omnipod_pod_firmware_version">Firmware version</string>
<string name="omnipod_custom_action_reset_rileylink">Reset RileyLink config</string>
<string name="omnipod_waiting_for_rileylink_connection">Waiting for RileyLink connection…</string>
<string name="omnipod_pod_suspended">Pod suspended</string>
<string name="omnipod_uncertain">uncertain</string>
<string name="omnipod_pod_time_on_pod">Time on Pod</string>
<string name="omnipod_set_time">Set time</string>
<string name="omnipod_unknown_custom_command">Unknown custom command: %1$s</string>
<string name="omnipod_failed_to_read_pulse_log">Failed to read Pulse Log</string>
<string name="omnipod_failed_to_refresh_status">Failed to refresh status</string>
<string name="omnipod_failed_to_acknowledge_alerts">Failed to acknowledge alerts</string>
<string name="omnipod_failed_to_suspend_delivery">Failed to suspend delivery</string>
<string name="omnipod_failed_to_set_time">Failed to set time</string>
<string name="omnipod_failed_to_resume_delivery">Failed to resume delivery</string>
<string name="omnipod_pulse_log">Pulse log</string>
<string name="omnipod_pulse_log_value">Pulse Log (copied to clipboard)</string>
<string name="omnipod_two_strings_concatenated_by_colon" translatable="false">%1$s: %2$s</string>
<string name="omnipod_confirmation">Confirmation</string>
<string name="omnipod_time_on_pod_updated">The time on Pod updated.</string>
<string name="omnipod_suspended_delivery">All insulin delivery suspended.</string>
<string name="omnipod_acknowledged_alerts">Acknowledged alerts.</string>
<string name="omnipod_delivery_resumed">Insulin delivery resumed.</string>
<!-- Omnipod - Times -->
<string name="omnipod_moments_ago">Moments ago</string>
<string name="omnipod_less_than_a_minute_ago">Less than a minute ago</string>
<string name="omnipod_composite_time">%1$s and %2$s</string>
<string name="omnipod_time_ago">%1$s ago</string>
<plurals name="omnipod_minutes">
<item quantity="one">%1$d minute</item>
<item quantity="other">%1$d minutes</item>
@ -227,4 +242,5 @@
<item quantity="one">%1$d day</item>
<item quantity="other">%1$d days</item>
</plurals>
</resources>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="WizardPagePodContent">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>

View file

@ -2,7 +2,6 @@ package info.nightscout.androidaps.plugins.pump.common.dagger
import dagger.Module
import dagger.android.ContributesAndroidInjector
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkBLE
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SendAndListen
@ -14,7 +13,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks
@Module
@Suppress("unused")
abstract class RileyLinkModule {
@ContributesAndroidInjector abstract fun rileyLinkCommunicationManagerProvider(): RileyLinkCommunicationManager
@ContributesAndroidInjector abstract fun serviceTaskProvider(): ServiceTask
@ContributesAndroidInjector abstract fun pumpTaskProvider(): PumpTask
@ContributesAndroidInjector abstract fun discoverGattServicesTaskProvider(): DiscoverGattServicesTask

View file

@ -30,8 +30,7 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP;
* <p>
* Created by andy on 5/10/18.
*/
public abstract class RileyLinkCommunicationManager {
public abstract class RileyLinkCommunicationManager<T extends RLMessage> {
@Inject protected AAPSLogger aapsLogger;
@Inject protected SP sp;
@Inject protected RileyLinkServiceData rileyLinkServiceData;
@ -51,23 +50,23 @@ public abstract class RileyLinkCommunicationManager {
// All pump communications go through this function.
protected RLMessage sendAndListen(RLMessage msg, int timeout_ms)
protected T sendAndListen(T msg, int timeout_ms)
throws RileyLinkCommunicationException {
return sendAndListen(msg, timeout_ms, null);
}
private RLMessage sendAndListen(RLMessage msg, int timeout_ms, Integer extendPreamble_ms)
private T sendAndListen(T msg, int timeout_ms, Integer extendPreamble_ms)
throws RileyLinkCommunicationException {
return sendAndListen(msg, timeout_ms, 0, extendPreamble_ms);
}
// For backward compatibility
private RLMessage sendAndListen(RLMessage msg, int timeout_ms, int repeatCount, Integer extendPreamble_ms)
private T sendAndListen(T msg, int timeout_ms, int repeatCount, Integer extendPreamble_ms)
throws RileyLinkCommunicationException {
return sendAndListen(msg, timeout_ms, repeatCount, 0, extendPreamble_ms);
}
protected RLMessage sendAndListen(RLMessage msg, int timeout_ms, int repeatCount, int retryCount, Integer extendPreamble_ms)
protected T sendAndListen(T msg, int timeout_ms, int repeatCount, int retryCount, Integer extendPreamble_ms)
throws RileyLinkCommunicationException {
// internal flag
@ -80,14 +79,14 @@ public abstract class RileyLinkCommunicationManager {
(byte) 0, (byte) repeatCount, (byte) 0, (byte) 0, timeout_ms, (byte) retryCount, extendPreamble_ms);
RadioResponse radioResponse = rfSpyResponse.getRadioResponse(injector);
RLMessage response = createResponseMessage(radioResponse.getPayload());
T response = createResponseMessage(radioResponse.getPayload());
if (response.isValid()) {
// Mark this as the last time we heard from the pump.
rememberLastGoodDeviceCommunicationTime();
} else {
aapsLogger.warn(LTag.PUMPBTCOMM, "isDeviceReachable. Response is invalid ! [interrupted={}, timeout={}, unknownCommand={}, invalidParam={}]", rfSpyResponse.wasInterrupted(),
rfSpyResponse.wasTimeout(), rfSpyResponse.isUnknownCommand(), rfSpyResponse.isInvalidParam());
aapsLogger.warn(LTag.PUMPBTCOMM, "isDeviceReachable. Response is invalid ! [noResponseFromRileyLink={}, interrupted={}, timeout={}, unknownCommand={}, invalidParam={}]",
rfSpyResponse.wasNoResponseFromRileyLink(), rfSpyResponse.wasInterrupted(), rfSpyResponse.wasTimeout(), rfSpyResponse.isUnknownCommand(), rfSpyResponse.isInvalidParam());
if (rfSpyResponse.wasTimeout()) {
if (rileyLinkServiceData.targetDevice.isTuneUpEnabled()) {
@ -105,6 +104,8 @@ public abstract class RileyLinkCommunicationManager {
throw new RileyLinkCommunicationException(RileyLinkBLEError.Timeout);
} else if (rfSpyResponse.wasInterrupted()) {
throw new RileyLinkCommunicationException(RileyLinkBLEError.Interrupted);
} else if (rfSpyResponse.wasNoResponseFromRileyLink()) {
throw new RileyLinkCommunicationException(RileyLinkBLEError.NoResponse);
}
}
@ -116,7 +117,7 @@ public abstract class RileyLinkCommunicationManager {
}
public abstract RLMessage createResponseMessage(byte[] payload);
public abstract T createResponseMessage(byte[] payload);
public abstract void setPumpDeviceState(PumpDeviceState pumpDeviceState);
@ -313,7 +314,7 @@ public abstract class RileyLinkCommunicationManager {
private int tune_tryFrequency(double freqMHz) {
rfspy.setBaseFrequency(freqMHz);
// RLMessage msg = makeRLMessage(RLMessageType.ReadSimpleData);
// T msg = makeRLMessage(RLMessageType.ReadSimpleData);
byte[] pumpMsgContent = createPumpMessageContent(RLMessageType.ReadSimpleData);
RadioPacket pkt = new RadioPacket(injector, pumpMsgContent);
RFSpyResponse resp = rfspy.transmitThenReceive(pkt, (byte) 0, (byte) 0, (byte) 0, (byte) 0, SCAN_TIMEOUT, (byte) 0);

View file

@ -8,13 +8,11 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.common.R;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.Reset;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.RileyLinkCommand;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SendAndListen;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SetHardwareEncoding;
@ -34,7 +32,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
import info.nightscout.androidaps.plugins.pump.common.utils.ThreadUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
@ -212,24 +209,22 @@ public class RFSpy {
if (rawResponse == null) {
aapsLogger.error(LTag.PUMPBTCOMM, "writeToData: No response from RileyLink");
notConnectedCount++;
} else if (resp.wasInterrupted()) {
aapsLogger.error(LTag.PUMPBTCOMM, "writeToData: RileyLink was interrupted");
} else if (resp.wasTimeout()) {
aapsLogger.error(LTag.PUMPBTCOMM, "writeToData: RileyLink reports timeout");
notConnectedCount++;
} else if (resp.isOK()) {
aapsLogger.warn(LTag.PUMPBTCOMM, "writeToData: RileyLink reports OK");
resetNotConnectedCount();
} else {
if (resp.wasInterrupted()) {
aapsLogger.error(LTag.PUMPBTCOMM, "writeToData: RileyLink was interrupted");
} else if (resp.wasTimeout()) {
aapsLogger.error(LTag.PUMPBTCOMM, "writeToData: RileyLink reports timeout");
notConnectedCount++;
} else if (resp.isOK()) {
aapsLogger.warn(LTag.PUMPBTCOMM, "writeToData: RileyLink reports OK");
if (resp.looksLikeRadioPacket()) {
// RadioResponse radioResp = resp.getRadioResponse();
// byte[] responsePayload = radioResp.getPayload();
aapsLogger.debug(LTag.PUMPBTCOMM, "writeToData: received radio response. Will decode at upper level");
resetNotConnectedCount();
} else {
if (resp.looksLikeRadioPacket()) {
// RadioResponse radioResp = resp.getRadioResponse();
// byte[] responsePayload = radioResp.getPayload();
aapsLogger.debug(LTag.PUMPBTCOMM, "writeToData: received radio response. Will decode at upper level");
resetNotConnectedCount();
}
// Log.i(TAG, "writeToData: raw response is " + ByteUtil.shortHexString(rawResponse));
}
// Log.i(TAG, "writeToData: raw response is " + ByteUtil.shortHexString(rawResponse));
}
return resp;
}

View file

@ -21,34 +21,27 @@ public class RFSpyResponse {
protected RadioResponse radioResponse;
private RileyLinkCommand command;
public RFSpyResponse() {
init(new byte[0]);
}
public RFSpyResponse(byte[] bytes) {
init(bytes);
}
public RFSpyResponse(RileyLinkCommand command, byte[] rawResponse) {
this.command = command;
init(rawResponse);
}
public void init(byte[] bytes) {
if (bytes == null) {
raw = new byte[0];
} else {
raw = bytes;
}
}
public RadioResponse getRadioResponse(HasAndroidInjector injector) throws RileyLinkCommunicationException {
if (looksLikeRadioPacket()) {
radioResponse = new RadioResponse(injector, command);
@ -59,76 +52,59 @@ public class RFSpyResponse {
return radioResponse;
}
public boolean wasNoResponseFromRileyLink() {
return raw.length == 0;
}
public boolean wasTimeout() {
if ((raw.length == 1) || (raw.length == 2)) {
if (raw[0] == (byte)0xaa) {
return true;
}
return raw[0] == (byte) 0xaa;
}
return false;
}
public boolean wasInterrupted() {
if ((raw.length == 1) || (raw.length == 2)) {
if (raw[0] == (byte)0xbb) {
return true;
}
return raw[0] == (byte) 0xbb;
}
return false;
}
public boolean isInvalidParam() {
if ((raw.length == 1) || (raw.length == 2)) {
if (raw[0] == (byte)0x11) {
return true;
}
return raw[0] == (byte) 0x11;
}
return false;
}
public boolean isUnknownCommand() {
if ((raw.length == 1) || (raw.length == 2)) {
if (raw[0] == (byte)0x22) {
return true;
}
return raw[0] == (byte) 0x22;
}
return false;
}
public boolean isOK() {
if ((raw.length == 1) || (raw.length == 2)) {
if (raw[0] == (byte)0x01 || raw[0] == (byte)0xDD) {
return true;
}
return raw[0] == (byte) 0x01 || raw[0] == (byte) 0xDD;
}
return false;
}
public boolean looksLikeRadioPacket() {
if (raw.length > 2) {
return true;
}
return false;
return raw.length > 2;
}
@Override
public String toString() {
if (raw.length > 2) {
return "Radio packet";
} else {
RFSpyRLResponse r = RFSpyRLResponse.fromByte(raw[0]);
return r.toString();
return r == null ? "" : r.toString();
}
}
public byte[] getRaw() {
return raw;
}

View file

@ -8,17 +8,15 @@ public enum RileyLinkBLEError {
CodingErrors("Coding Errors encountered during decode of RileyLink packet."), //
Timeout("Timeout"), //
Interrupted("Interrupted"),
NoResponse("No response from RileyLink"),
TooShortOrNullResponse("Too short or null decoded response.");
private String description;
RileyLinkBLEError(String description) {
this.description = description;
}
public String getDescription() {
return description;
}

View file

@ -65,7 +65,7 @@ public class InitializePumpManagerTask extends ServiceTask {
lastGoodFrequency = rileyLinkServiceData.lastGoodFrequency;
}
RileyLinkCommunicationManager rileyLinkCommunicationManager = ((RileyLinkPumpDevice) activePlugin.getActivePump()).getRileyLinkService().getDeviceCommunicationManager();
RileyLinkCommunicationManager<?> rileyLinkCommunicationManager = ((RileyLinkPumpDevice) activePlugin.getActivePump()).getRileyLinkService().getDeviceCommunicationManager();
if (activePlugin.getActivePump().manufacturer() == ManufacturerType.Medtronic) {