diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 0000000000..db66ffec38 --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,10 @@ +Reporting bugs +-------------- +- Note the precise time the problem occurred and describe the circumstances and steps that caused + the problem +- Note the Build version (found in the About dialog in the app, when pressing the three dots in the + upper-right corner). +- Obtain the app's log files, which can be found on the phone in + _/storage/emulated/0/Android/data/info.nightscout.androidaps/_ + See https://github.com/MilosKozak/AndroidAPS/wiki/Accessing-logfiles +- Open an issue at https://github.com/MilosKozak/AndroidAPS/issues/new \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 33cd40fe3d..736759f8dd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ android { targetSdkVersion 23 multiDexEnabled true versionCode 1500 - version "1.57-dev" + version "1.59-dev" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", generateGitBuild() diff --git a/app/src/main/java/info/nightscout/androidaps/data/Iob.java b/app/src/main/java/info/nightscout/androidaps/data/Iob.java index ee70699604..762352782b 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/Iob.java +++ b/app/src/main/java/info/nightscout/androidaps/data/Iob.java @@ -12,4 +12,26 @@ public class Iob { activityContrib += iob.activityContrib; return this; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Iob iob = (Iob) o; + + if (Double.compare(iob.iobContrib, iobContrib) != 0) return false; + return Double.compare(iob.activityContrib, activityContrib) == 0; + } + + @Override + public int hashCode() { + int result; + long temp; + temp = Double.doubleToLongBits(iobContrib); + result = (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(activityContrib); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + return result; + } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Insulin/InsulinOrefBasePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Insulin/InsulinOrefBasePlugin.java index cbe5f2ff64..b91eefdc9c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Insulin/InsulinOrefBasePlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Insulin/InsulinOrefBasePlugin.java @@ -1,5 +1,7 @@ package info.nightscout.androidaps.plugins.Insulin; +import com.squareup.otto.Bus; + import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.Iob; @@ -44,38 +46,53 @@ public abstract class InsulinOrefBasePlugin implements PluginBase, InsulinInterf return true; } + public Bus getBus() { + return MainApp.bus(); + } + @Override public double getDia() { double dia = getUserDefinedDia(); if(dia >= MIN_DIA){ return dia; } else { - if((System.currentTimeMillis() - lastWarned) > 60*1000) { - lastWarned = System.currentTimeMillis(); - Notification notification = new Notification(Notification.SHORT_DIA, String.format(MainApp.sResources.getString(R.string.dia_too_short), dia, MIN_DIA), Notification.URGENT); - MainApp.bus().post(new EventNewNotification(notification)); - } + sendShortDiaNotification(dia); return MIN_DIA; } } + void sendShortDiaNotification(double dia) { + if((System.currentTimeMillis() - lastWarned) > 60*1000) { + lastWarned = System.currentTimeMillis(); + Notification notification = new Notification(Notification.SHORT_DIA, String.format(this.getNotificationPattern(), dia, MIN_DIA), Notification.URGENT); + this.getBus().post(new EventNewNotification(notification)); + } + } + + public String getNotificationPattern() { + return MainApp.sResources.getString(R.string.dia_too_short); + } + public double getUserDefinedDia() { return MainApp.getConfigBuilder().getProfile() != null ? MainApp.getConfigBuilder().getProfile().getDia() : MIN_DIA; } + public Iob iobCalcForTreatment(Treatment treatment, long time) { + return this.iobCalcForTreatment(treatment, time, 0d); + } + @Override public Iob iobCalcForTreatment(Treatment treatment, long time, double dia) { Iob result = new Iob(); int peak = getPeak(); - if (treatment.insulin != 0d) { long bolusTime = treatment.date; double t = (time - bolusTime) / 1000d / 60d; - double td = getDia()*60; //getDIA() always > 5 + double td = getDia()*60; //getDIA() always >= MIN_DIA double tp = peak; // force the IOB to 0 if over DIA hours have passed diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/BluetoothDevicePreference.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/BluetoothDevicePreference.java index 63e14f0921..e39fdcfdaa 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/BluetoothDevicePreference.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/BluetoothDevicePreference.java @@ -6,6 +6,7 @@ import android.preference.ListPreference; import android.util.AttributeSet; import java.util.Set; +import java.util.Vector; public class BluetoothDevicePreference extends ListPreference { @@ -13,25 +14,22 @@ public class BluetoothDevicePreference extends ListPreference { super(context, attrs); BluetoothAdapter bta = BluetoothAdapter.getDefaultAdapter(); - Integer size = 0; - if (bta != null) { - size += bta.getBondedDevices().size(); - } - CharSequence[] entries = new CharSequence[size]; - int i = 0; + Vector entries = new Vector(); if (bta != null) { Set pairedDevices = bta.getBondedDevices(); for (BluetoothDevice dev : pairedDevices) { - entries[i] = dev.getName(); - i++; + String name = dev.getName(); + if(name != null) { + entries.add(name); + } } } - setEntries(entries); - setEntryValues(entries); + setEntries(entries.toArray(new CharSequence[0])); + setEntryValues(entries.toArray(new CharSequence[0])); } public BluetoothDevicePreference(Context context) { this(context, null); } -} \ No newline at end of file +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java index d7bda4781b..4adec23560 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java @@ -523,27 +523,31 @@ public class WatchUpdaterService extends WearableListenerService implements private void sendStatus() { if (googleApiClient.isConnected()) { - - TreatmentsInterface treatmentsInterface = MainApp.getConfigBuilder(); - treatmentsInterface.updateTotalIOBTreatments(); - IobTotal bolusIob = treatmentsInterface.getLastCalculationTreatments().round(); - treatmentsInterface.updateTotalIOBTempBasals(); - IobTotal basalIob = treatmentsInterface.getLastCalculationTempBasals().round(); - - String iobSum = DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob); - String iobDetail = "(" + DecimalFormatter.to2Decimal(bolusIob.iob) + "|" + DecimalFormatter.to2Decimal(basalIob.basaliob) + ")"; - String cobString = generateCOBString(); - String currentBasal = generateBasalString(treatmentsInterface); - - //bgi - String bgiString = ""; Profile profile = MainApp.getConfigBuilder().getProfile(); + String status = MainApp.instance().getString(R.string.noprofile); + String iobSum, iobDetail, cobString, currentBasal, bgiString; + iobSum = iobDetail = cobString = currentBasal = bgiString = ""; if(profile!=null) { + TreatmentsInterface treatmentsInterface = MainApp.getConfigBuilder(); + treatmentsInterface.updateTotalIOBTreatments(); + IobTotal bolusIob = treatmentsInterface.getLastCalculationTreatments().round(); + treatmentsInterface.updateTotalIOBTempBasals(); + IobTotal basalIob = treatmentsInterface.getLastCalculationTempBasals().round(); + + iobSum = DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob); + iobDetail = "(" + DecimalFormatter.to2Decimal(bolusIob.iob) + "|" + DecimalFormatter.to2Decimal(basalIob.basaliob) + ")"; + cobString = generateCOBString(); + currentBasal = generateBasalString(treatmentsInterface); + + //bgi + + double bgi = -(bolusIob.activity + basalIob.activity) * 5 * profile.getIsf(); bgiString = "" + ((bgi >= 0) ? "+" : "") + DecimalFormatter.to1Decimal(bgi); + + status = generateStatusString(profile, currentBasal,iobSum, iobDetail, bgiString); } - String status = generateStatusString(profile, currentBasal,iobSum, iobDetail, bgiString); //batteries int phoneBattery = getBatteryLevel(getApplicationContext()); diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 7c51907fea..0f5f334a4f 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -296,7 +296,7 @@ Corr Lazo Inactivo Bolo Comida - Valor %s fuera de limites + Valor %s fuera de limites Botón Texto: Carbohidratos: Validar: @@ -313,8 +313,8 @@ Fallo cancelación basal temporal Fallo inicio basal temporal Basal temporal %.2fU/h para %d min iniciada correctamente - Permitir ordenes SMS remotas - Para parar basal temporal responder con codigo %s + Permitir comandos SMS remotos + Para parar basal temporal responder con codigo %s AndroidAPS iniciado Español NS solo subida (sinc. inactiva) @@ -363,7 +363,7 @@ Media Larga Delta Marca BAJO Batería Baja - %dmin antes + %dmin antes Usar característica AMA autosens Datos Autosens Factor porcentual para multiplicar el perfil base @@ -379,15 +379,430 @@ Media corta delta Bolo: Último BG: - %dmin antes + %dmin antes Bolo %.2fU enviado correctamente Rango Objetivo: Unidades: Sólo se permiten caracteres numéricos - Sólo se permiten dígitos en el rango %1$s - %2$s + Sólo se permiten dígitos en el rango %1$s - %2$s Este campo no puede estar vacío Número de teléfono inválido Esperando bomba Italian AndroidAPS + hollandes + Griego + Ruso + Sueco + Max U/h para el perfil base + "Max IOB basal OpenAPs puede emitir " + Para enviar calibracion %.2f responder con codigo %s + Entregaré %.2fU + Duración de acitividad de insulina + Errores + habilitar funciones adicionales para uso durante el día como SMB + %.2f limitado a %.\"f + no permitido el mando remoto + Para cancelar loop por %d minutos responde con codigo %s + Rellenar/Llenar + Llenar/Rellenar cantidad de insulina estándar + Tiempo en horas en el que el perfil será movido + mg/dl + mmol/l + DIA: + Editar Base-Basal: + Edidat Base-ISF: + Editar Base-IC: + CircadianPercentageProfile + Reloj + Abrir ajustes en reloj + Batería de la bomba descargada + DanaR Korean + BG: + MDI + MM640g + Avisos permanentes + DATOS CADUCADOS + OpenAPS AMA + Script debug + Renovar datos desde NS + DanaR Stats + Dosis diaria cumulativa + "Dosis diaria ampliada exponencialmente " + Base + Bolo + Dosis diaria + Fecha + Cuota + # Días + Peso + Probablemente impreciso usando bolo para llenar/rellenar! + Datos caducados pro favor pincha RELOAD + Basal total + Basal diaria *2 + CPP + Reloj + Tab titulo corto + Ajustes Delta + Usa siempre delta media corto en vez de delta simple + Recomendado si los datos de origen no filtrados como xDrip son inestables. + Ajustes avancados + Modelo: %02X Protocolo: %02X Codigo: %02X + Perfiles + max_daily_safety_multiplier + "Valor por defecte: 3 Esto es valor de seguridad establecido pos OpenAPS. Limita tu base al máximo de x3 de tu base máxima. No necesitas cambiar esto, pero debes tener en cuenta, que esto se esta discutiento sobre „3 x max diario; 4x actual“ pro razones de seguridad. " + current_basal_safety_multiplier + "Ajuste pro defecto: 4 Esto es la otra mitad de los ajustes de seguridad de OpenAPS y la otra mitad de \"3x max diario, 4x actual\". Esto significa, que tu base no puede ser mas alta que el numero que multiplica tu base. Esto es para evitar que las personas se encuentren en situaciones peligrosas por aumentar mucho la base sin entender el algoritmo del sistema. El ajuste por defecto es x4. La mayoría de las personas nunca tendra que cambiar estos ajustes, si no debe modificar otros ajustes en la terapia. " + autosens_max + "Ajuste por defecto: 1.2\nEsto es un multilicador para autosens (y pronto autotune) para poner un 20% limite máximo a la cota de autosens ratio, la que determina cuantos ajustes autosens puede hacer a la base, a cuanto puede ajustar ISF y a cuanto puede bajar el objective de glucosa. " + autosens_min + Ajuste pro defecto: 0.7\nEl otro lade de limitaciones de seguridad de autosens, limitando a cuanto puede bajar la base y a cuanto puede subir ISF y BG objectivos. + autosens_adjust_targets + Ajuste pro defcto: true\nEsto se usa para permitir autosens a ajustar objectivos BG en addicion a ISF y bases. + bolussnooze_dia_divisor + Ajuste pro defecto: 2 \nDormir bolo es iniciado después de proveder un bolo para comida, así el loop no interactuará con low temps cuando acabas de comer. El ajuste pro defecto es 2; quiere decir con el DIA de 3 h el bolo será dormido por fases por 1.5 h (3DIA/2). + 5_min_carb_impact + "Ajustes pro defecto: 3.0\nEsto es un ajuste pro defecto para la absorcion de carbohidratos pro 5 minutos. Por defecto se espera 3mg/dl/5min. Esto afecta la velocidad de reduccion de COB y cuanta absorcion se usa para calcular el BG futuro previsto, si la glucosa diminua mas de lo previsto o aumenta mas de lo previsto. " + "Atención!\nNormalment no tienes que editar los valores a continuacion. Por favor PINCHA AQUI y LEE el texto y PROCURA ENTENDER antes de cambiar alguno de los valores. " + http://openaps.readthedocs.io/en/latest/docs/walkthrough/phase-3/beyond-low-glucose-suspend.html + numero de telefonp incorrecto + Copiar al Clipboard + Copiado al clipboard + mostrar log + Calibracion + Calibracion + Mandar calibracion %.lf a xDrip? + xDrip+ no instalado + Calibracion mandada a xDrip + Calibracion remota no admitida + Mandar calibracion tiene que ser activada en xDrip. + xDrip no recibe calibraciones + no mostrar otra vez + Bomba parada. Pincha para aktualizar + bomba parada + recibir estado de bomba + iniciando base temporal + parando base temporal + iniciando bolo prolongado + parando bolo prolongado + actualizando cuota base + Desconectando + Efectuando + Ajustes bomba virtual + Subiendo estado a NS + Contrasena invalida + Contrasena para ajustes + desbloquear ajustes + llegando al limite de insulina diario + NSClient + NSCI + URL: + Autoscroll + Reiniciar + NSClient + Nightscout URL + Indica Nightscout URL + NS API secret + NS API secret + Indica NS API secret (min 12 chars) + Nombre aparato + Indica nombre aparato + Se usara para enteredBy field + entregar ahora + borrar cola + mostrar cola + Cola: + Estado: + Pausado + Borrar log + NSCLIENT no tiene derecho para editar. API secret incorrecto? + Ajustes reloj + mostrar detalles IOB + Separar IOB en bolo y base en el reloj + sin efecto - por favor controlar en móvil + no disponible + Edad paciente + Menor de edad + Adolescente + Adulto + Por favor elige edad del paciente para emplear limites de seguridad + Glimp + Aparato parece no soportar optimisacion de bateria whitelisting! + Por favor permita Permission + %s necesita optimisacion de bateria whitelisting para funcionar bien + Loop desactivado + desactivado (%d m) + Superbolus (%d m) + Loop menu + Desactivar loop por 1h + Desactivar loop por 2h + Desactivar loop por 3h + Desactivar loop por 10 h + Desconectar bomba por 30 min + Desconectar bomba por 1 h + Desconectar bomba por 2 h + Desconectar bomba por 3 h + Desconectar bomba por 10 h + Reiniciar + duracion incorrecta + Loop desactivado + Loop reiniciado + Tendencia 15 min + COB + Superbolo + Indica app start en NS + Aplicacion existente para aplicar ajustes. + DanaRv2 + Insulina + Insulina acción rápida + Novorapid, Novolog, Humalog + Fiasp + INS + Insulina acción rápida prolongada + activar superbolo en wizard + Activar función superbolo en wizard. No lo actives hasta que hayas aprendido lo que realmente hace. PUEDE CAUSAR SOBREDOSIS DE INSULINA usandolo sin precaucion! + IOB + COB + PRE + BAS + Firmware + Estado de bluetooth + Sobre + "Falta permitir SMS " + DEV + xDrip Status (reloj) + xDrip Statusline (reloj) + xds + Mostrar BGI + agregar BGI a status line + No upload to NS + Todos los datos mandados a NS son borrados. AAPS esta conectado to NS pero no hay cambios en NS + Nivel base + Nivel bolo + Bolo prolongado + "Objectivo temporal " + cancelar bolo prolongado + Edad sensor + Edad cánula + Edad insulina + horas + Tipo base + Falta ISF en perfil. Usando ajuste por defecto. + Falta IC en perfil. Usando ajuste por defecto. + Falta base en perfil. Usando ajuste por defecto. + "Falta objectivo en perfil. Usando ajuste por defecto. " + Perfil invalido !!! + CambioPerfil + Edad bateria bomba + Cambio bateria bomba + Opciones alama + Urgente alto + Alto + Bajo + Urgente bajo + Actualmente puesto a %f + Stale data + Urgent stale data + Stale data threshold [min] + Urgent stale data threshold [min] + Interval para autosens [h] + Horas en el pasado para detectar sensividad (tiempo de absorcion de carbohidratos no incluidos) + SEN + "Ignora evenos de cambio de perfil " + "Totos los cambios de perfil son ignorados y se usa siempre el perfil actual " + Bomba + OpenAPS + Aparato + Uploader + Deteccion sensividad + SENS + Sensitivity Oref0 + Sensitivity AAPS + Ajustes absorcion + Tiempo max absorcion comida [h] + Tiempo esperado en el que todos los carbohidratos son absorbados + mostrar bolo prolongado en % + SAGE + IAGE + CAGE + PBAGE + OAPS + UPLD + BAS + EXT + Pantalle proteccion + Cierre + Al activar autosens recuerda editar todos carbohidratos comidos. Si no, sensividad será calculada incorrectamente !!! + Sensitivity WeightedAverage + OK + Cancelar + necesita ser activado para mandar valores a la bomba! + Faltan perfiles! + Valores no guardados! + Resumen avisos + Mandar resumen de avisos como avisos de confirmacion por reloj. + Accu-Chek Combo + COMBO + Activar mensajes a otras aplicaciones (como xDrip). + Activar mensajes locales. + ACTIVITY Y FEEDBACK + CARBS Y BOLUS + CGM Y OPENAPS + PUMP + Valor base [U/h] + Duracion [min] + IOB Curve Peak Time + Peak Time [min] + Free-Peak Oref + Rapid-Acting Oref + Ultra-Rapid Oref + DIA de %s demasiado corto - usando %s! + ACTIVAR PERFIL + Fecha + INVALIDO + Esperando para conectar con bomba + Coneccion OK + Coneccion fuera de tiempo + CONECTANDO + aparato no enconrado + Deposito vacio + Alerta de control de BG + Insulina restante en deposito + DanaRS + Dana + Bomba sleccionada + Conectar bomba nueva + Velocidad bolo + Poner paso base a 0.01 U/h + Numero de serie + Porcientos + Cambio de tiepmo + Ojbectivo temporal por defecto + duracion comiendopronto + objectivo comiendopronto + duracion actividad + objectivo actividad + Prime + recibiendo estado de bolo prolongado + recibiendo estado bolo + recibiendo estado bolo temporal + recibiendo ah´justes bomba + recibiendo hora bomba + usar otra vez + Control desde reloj + editar y emitir abjectivos temp. y tratamientos por reloj + Fuera tiempo coneccion + comida + g + ]]> + kJ + En + Pr + Grasa + ]]> + Esperande terminar bolo. Faltan %d seg. + Processando + "Iniciando emisioin bolo " + Orden se esta efectuando en este momento + control de la bomba corigido + bomba no alcanzable + "Falta lectura BG " + Usa avisos del sistema para alarmas y avisos + Alarma local + Alarma si no llegan datos BG + Alarma si bomba no es alcanzable + Alarma urgente + INFO + Bluetooth + BT Watchdog + Apaga el bluetooth del móvil por un segundo si no hay coneccion con la bomba. Esto ayuda con algunos moviles con problemas de establecer coneccion bluetooth estable. + DexcomG5 App (patched) + Envias datos BG a NS + G5 upload ajustes + APK adaptada para bajar + "mostrar detalles delta " + mostrar delta con una plaza decimal mas + firmware de la bomba no apoyada + mandar BG a xDrip + En xDrip elige 640g/Eversense date source + NSClient BG + Valor base remplazado por valor mínimo + Calculacion BG + Calculacion bolo IOB + Calculacion base IOB + Calculacion tendencia + Calculacion superbolo + Si + No + Solo positivo + Solo negativo + Calculacion COB + Calculacion objectivo temporal + Loop activado + APS seleccionado + NSClient tiene permission de escribir + Modo cerrado activado + Máximo IOB puesto correctamente + BG adquirible del origen seleccionado + Valores base no asignados a las horas: %s + Perfil invalido: %s + Programando bomba para emitir bolo + Actualizar + TDDS + Estado + Actividad + Ninguna coneccnion por %d min + %d%% (%d min restan) + %.1f U (%s, %s) + Iniciando + Desconectado + Apagado por error + Apagado por usario + Funcionando + Cancelando TBR + Poniendo TBR (%d%% / %d min) + Emitiendo bolo (%.1f U) + Actualizando + Nunca + "Acción no disponible en la bomba " + Uso inseguro: bolo prolongado o multiwave activo. Modo Loop ha sido puesto a baja emision para solo 6 horas. Solo bolo normal se puede emitir en modo loop. + "Uso inseguro: la bomba usa base diferente a la primera. El loop ha sido apagado. Elige primero perfil en la bomba y acualiza. " + Un bolo de mismo valor ha sido dado durante el pasado minuto. Para evitar bolos dobles y asegurarse contra bugs esto no es permitido. + Ahora + Leiendo historia bomba + Alarmas + " Activando perfil base " + "Nivel del deposito bajo " + Bateria casi agotada + La bomba muesta el error E%d: %s + Para leer historial de los errores, pincha unos segundo el boton \"ALARMAS\" ATENCION: esto puede causar un bug. La bomba no vuelve a conectarse - necesitas pulsar un boton en la misma bomba para reiniciarse. Deberias evitar esto. + Para leer el hisorial TDD de la bomba pulsa el boton TDDS unso segundos. ATENCION: esto puede causar un bug. La bomba no vuelve a conectarse - necesitas pulsar un boton en la misma bomba para reiniciarse. Deberias evitar esto. + Mínimo: %3.1f U + Media: %3.1f U + Máximo: %3.1f U + Bajo + Vacio + Normal + Se necesita actualizar reloj de la bomba + Historial + Alerta + "Esto lee todo el historial y estado de la bomba, tus datos, la base. Bolos, basales temporales y tratamientos seran copiados y agregados si no existen ya. Esto puede causar duplicaciones, por que la hora de la bomba no es precisa. Es uso de esto con el loop normal solo deb ser usado en cirumstancisas especiales. Si de todas meneras quieres usar esto pulsa este boton unos segundos otra vez. ADVERTENCIA: esto puede causar un bug. La bomba no vuelve a conectarse - necesitas pulsar un boton en la misma bomba para reiniciarse. Deberias evitar esto. " + "Estas seguro, de que quieres leer todos los datos de la bomba y acceptar las consequencias de esta acción? " + TBR cancelada, advertencia acceptada + Emision del bolo fallado. Ningún bolo se ha emitido. Para asegurarse, por favor controle la bomba para evitar bolo doble. Para evitar bugs no se reinician bolos automaticamente. + "Solo %.2f U del bolo mandado de %.2f U ha sido emitido por causa de un error. Por favorn controla la bomba para confirmar y toma acciones apropiadas. " + "Fallo de emitir bolo y de controlar historical de la bomba.Por favor controla manualmente y crea un record en Careportal si el bolo ha sido emitido. " + Reestablecido coneccion fallada. + "No hay suficiente insulina en el deposito para emitir bolo. " + "Error al emitir bolo prolongado. " + bomba no alcanzable treshold [min] + TT + Versión no acceptada de Nightscout + Activar loop + Desactivar loop + Base: + Base temporal no emitida + Base temporal + Delta: + IOB: diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000000..31cdf9b3b5 --- /dev/null +++ b/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,707 @@ + + + AndroidAPS + Traitements de sécurité + Bolus max. autorisé [U] + Glucides max. autorisés [g] + Préférences + Actualiser les données depuis NS + Sauvegarde + Alarme test + "Réinitialiser les Bases de Données " + Voulez-vous vraiment réinitialiser les bases de données ? + Quitter + Utiliser les bolus étendus à > 200% + Dispositif Bluetooth DanaR + utiliser toujours les valeurs absolues du basal + Rebootez votre smartphone ou redémarrez AndroidAPS depuis les paramètres système sinon AndroidAPS ne sera pas connecté ( important de suivre et vérifier que les algorithmes fonctionnent correctement)! + Objectif: + Activer + Gate : + Vérifier + Unités + Durée d’Action + Profil actif + "I:G (Ratio Insuline/Glucides) " + "Facteur SI " + Basal + Cible + Insuline: + PAS DE PROFIL PRÉDÉFINI + Glucides: + IR: + IR: + Activité: + IR Totale: + Activité IR Totale: + Dur: + Ratio: + Ins: + IR: + IR Totale: + Insuline: + Glucides: + G + CT + Glucides + Corr + U + Bolus IR + TOTAL + "Exécuter maintenant " + POMPE VIRTUELLE + "Taux du Débit de Base " + Basal Temporaire + Bolus étendu + Niveau Batterie + Niveau Réservoir + Confirmer + Erreur SQL + Dérnière exécution + Paramètres de saisie + État de la glycémie + Débit temporaire actuel + Données IR + Profil + Données repas + Résultat + Pas de données glycémiques dispo + Pas de profil dispo + Pas de pompe dispo + Requête + "Taux " + Durée + Raison + Glucose + Delta + Delta: + Moyenne + Config Builder + Objectifs + OpenAPS MA + Aperçu + Profil NS + Profile simple + Basal Tempo + Traitements + Pompe virtuelle + Careportal + Pompe + Traitements + Basaux tempo + Profil + APS + Général + Jours + Durée minimale + Restrictions + Loop + Loop + APS + Après traitement des restrictions + "Défini par pompe " + Dérnière mise en marche + Confirmer + Annuler + Pas d\'APS séléctionné ou résultat fourni + Sécurité + Plugin désactivé + Violation des restrictions + Erreur administration bolus + Erreur administration temporaire + Valeur Basal [%] + % (100% = current) + Acceptez nouveau basal temp + Bolus + Calculateur de Bolus + Restriction appliquée! + Confirmation + Entrez nouveau traitement + Bolus + Bolus: + Basal + Basal: + Glucides + Changez vos entrées! + Définir un nouveau bolus étendu + Source de glycémie + xDrip + NSClient + Mode APS + Boucle fermée + Boucle ouverte + "Loop Désactivé " + Désactiver Loop + Activer Loop + "Nouvelle recommendation dispo " + Version Nightscout incompatible + NSClient non installé. Enregistrement perdu! + G disponible sur NS + état pompe non dispo sur NS + Activation manuelle + "LOOP DÉSACTIVÉ PAR RÉSTRICTIONS " + Czech + English + Basal IR + "Réstriction du Bolus appliquée " + Réstriction des Glucides appliquée + Contrôle de Glycémie + Notification + Remarque + Question + Changement Zone D\'insertion + Insertion Capteur CGM + Début Capteur CGM + Changement du Réservoir + Changement de Profile + "Bolus Goûter " + Bolus Repas + Bolus de correction + "Bolus Combiné " + "Lancer Débit Temporaire " + Fin du Débit Temporaire + Correction Glucides + OpenAPS Offline + "Type d'événement " + Autre + Lecteur + Capteur + Glucides + Insuline + Durée glucides + "Diviser " + Durée + "Pour cent " + Absolu + Remarques + "Heure de l'événement " + Profil + Entré par + Source de Glycémie + Pas de profil téléchargé encore depuis NS + Basal Tempo + Bolus étendu + Version Nightscout: + TRANSMETTRE + Manquants + Activé + Visible + Up + Préférences exportées + Exporter les paramètres au + Importer les paramètres depuis + Paramètres importés + Fichier introuvable + Exporter les paramètres + Importer les paramètres + Dutch + German + Spanish + Greek + Italian + Russian + Swedish + "U/hr Max avec laquelle le débit temp pourra être programmé " + Cette valeur est appelée basal maximum dans le contexte OpenAPS + Le Basal IR maximum que l\'OpenAPS pourra délivrer [U] + Cette valeur est appelée Max IOB dans le contexte OpenAPS + Bulgarian + DanaR + REJETER + Langue + Connection en cours + Connectée + Déconnectée + Paramètres pompe DanaR + Nightscout + Contrat de Licence pour Utilisateur Final + MUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + JE COMPRENDS ET J\'ACCEPTE LES CONDITIONS DU CONTRAT + Sauvegarder + L\'adaptateur bluetooth est introuvable + L\'appareil sélectionné est introuvable + Erreur connection pompe + IR affichée sur pompe + Unités Journalières + Dernier Bolus + h passées + Données saisies invalides + Valeur n\'est pas reglée correctement + Actualiser le profil + Consulter le profil + Activée + Commentaire + Pour cent + Absolu + Annuler basal tempo + Communicateur SMS + Attente de résultat + Numéros de tél autorisés + +XXXXXXXXXX;+YYYYYYYYYY + Administrer bolus %.2fU retour avec un code %s + Envoyer calibrage %.2fU retour avec un code %s + Bolus interrompu + Bolus %.2fU administré avec succès + " %.2fU va être administré" + %.2fU de bolus administré avec succès + Entrain d\'administrer %.2fU + Autoriser les commandes à distance par SMS + Bolus à distance non autorisé + Doigt + Capteur + Manuel + Cible Temporaire + Annulation Cible Temporaire + Paramètres du profil DanaR + "Durée d'Action [h] " + Durée d\'Action d\'Insuline + La mise à jour du profil basal a échouée + Historique + Actualiser + Téléchargement en cours + Bolus e + Bolus DS + Bolus DE + Erreur + Remplir + Heure basal + Glucose + Glucides + Alarme + Total %d des enregistrements téléchargés + Bolus S + Alarmes + Heures Basal + Bolus + Glucides + Insuline quotidienne + Erreurs + Glucose + Remplir + Arrêter + Mot de passe pompe + "Mot de passe pompe incorrect " + Pompe occupée + Délivré + Arrêté + Occlusion + Stop + Boutton Stop Activé + Attente connection pompe + Attente connection pompe. Cliquez sur Actualiser + %.2fU va être administré + Paramétrez la visualisation et la surveillance des données, analysez les débits de base et les ratios + Vérifiez que la G est disponible sur Nightscout, et les données d’insuline sur pompe ont été téléchargées + Commencez par le système boucle ouverte + Utilisez le système Open Loop pour quelques jours, et activez manuellement plusieurs débits de base tempo + Comprendre votre système boucle ouverte, y compris ses recommandations de débit de base tempo + "Partant de ce constat, décidez quel est le débit de base maximum à choisir, et entrez le dans la pompe et les préférences " + Commencez par utiliser la boucle fermée avec le système Low Glucose Suspend + Pas de changement demandé + Version Nightscout incompatible + Utiliser le système de boucle fermée avec max IOB = 0 pour quelques jours sans avoir beaucoup d’événements LGS + Ajustez votre système boucle fermée, augmentez la fonction « max IOB » au dela de 0 et diminuez progressivement vos cibles glycémiques + Utiliser pendant quelques jours, et au moins une nuit sans les alarmes d’hypoglycémie, avant la baisse de G + Ajustez les débits de base et les ratios si besoin, ensuite activez « auto-sens » + Une semaine réussie avec des journées en boucle fermée, avec un entrée normale de glucides + Activez d’autres fonctionalités pour l’utilisation journalière, tel que advanced meal assist + Vous avez atteint la limite maximale + Aucun profil séléctionné + Loop a été désactivé + Loop a été désactivé + "Loop est désactivé " + Loop est activé + %.2f limité à %.2f + La valeur %s est hors limites strictes + Le réglage du basal à distance n\'est pas autorisé + La commande à distance n\'est pas autorisée + Lancer le basal %.2fU/h retour avec un code %s + Suspendre Loop pour %d minutes retour avec un code %s + Démarrage réussi pour %.2fU/h de basal tempo pour %d min + Démarage échoué pour basal tempo + Arrêter basal tempo retour avec un code %s + Basal tempo annulé + Annuler basal tempo échoué + "Commande inconnue ou réponse fausse " + Assistant Bolus Rapide + Paramètres assistant bolus rapide + Titre sur la touche: + Glucides: + Valide: + Ajouter + Éditer + Retirer + Repas + Corr + Coréenne + Actions + AndroidAPS est lancé + Uniquement téléchargement NS (sync désactivée) + Uniquement téléchargement NS. Ceci n’est pas efficace pour les SGV à moins qu’une source locale comme xDrip soit sélectionnée. Ceci n’est pas efficace sur les profils lorsque les profils NS sont utilisés + Pompe non initialisée! + Pompe non initialisée, profil non prédéfini + Amorcer/Remplir + Veillez à ce que la quantité corresponde à la spécification de votre KT! + Autres + Remplir/Amorcer des quantités standard d’insuline + Touche 1 + Touche 2 + Touche 3 + Le facteur pourcentage avec lequel le profil de base sera multiplié + Temps en heures avec lequel le profil sera modifié en round-robin + Unités + mg/dl + mmol/l + Durée d\'Action + Fourchette cible: + "Éditer Débit de Base: " + "Éditer Facteur SI de Base: " + "Éditer I:G de Base: " + Profil de Base: + Profil en Pourcentage Circadien + Écart de visualisation + Les repères hauts et bas sur les graphiques pour l’apercu et la montre + Repère BAS + Repère HAUT + Wear + Retransmettre toutes les données + Afficher les Paramètres sur la Montre + Erreur Pompe + Niveau Batterie Bas + Arrêt de la Pompe + Baterie Pompe déchargée + DanaR Coréenne + Taux du Débit de Base: + Réglage du profil de base a échoué + Mise à jour du profil de base dans la pompe + Désactiver le mode Facile UI dans la pompe + Activer les bolus étendus dans la pompe + "Modifier le mode U/d au U/h dans la pompe " + Le débit de base est en dessous du minimum. Profil non prédéfini! + G: + Dernière G + IQM + MM640g + Notification En Cours + ANCIENNES DONNÉES + %dmin passées + %dmin passées + Profile Local + OpenAPS AMA + Courte moyenne delta + Longue moyenne delta + Panoplie de %d d\'élements. Valeur réelle + Données autosens + Script de débogage + Utiliser la fonction AMA autosens + Actualiser les événements depuis NS + Manger Bientôt + Activité + Retirer l\'enregistrement: + Dana Stats + DTQ Cumulative + DTQ avec Pondération Exponentielle + Basal + Bolus + DTQ + Date + Ratio + # Jours + Pondération + Peut-être inexact(e) si les bolus sont utilisés pour l’amorçage et le remplissage! + Pour les anciennes données appuyez sur Actualiser svp + Débit de Base Total + DBT*2 + En cours d\'initialisation + ACT + CONF + LOOP + SP + OAPS + TT + LP + DANA + CPP + TB + HOME + POMPEV + PROFILE NS + TRAITER + CP + OBJ + WEAR + SMS + Raccourcir les titres des onglets + Paramètres Delta + Toujours utilisez une moyenne (delta) courte au lieu d’une moyenne normale + Utile quand les données provenant de sources non filtrées lorsque xDrip devient bruyant + Paramètres Avancés + Modèle: %02X Protocole: %02X Code: %02X + Profil + Valeur par défaut : true + Seuls les chiffres numériques qui se trouvent dans la fourchette %1$s - %2$s sont autorisés + Le champs ne doit pas être vide + Num de tél est invalide + "Num tél du SMS invalide " + Copier dans le Presse-Papiers + Copier dans le Presse-Papiers + Afficher le journal + Étalonnage + Étalonnage + Transmettre l\'étalonnage %.1f à xDrip? + xDrip+ n\'est pas installé + Étalonnage envoyé à xDrip + L\'étalonnage à distance n\'est pas autorisé + "Étalonnage envoyé. La récepetion doit être activée dans xDrip. " + xDrip ne reçoit pas les étalonnages + Ne plus montrer ce message + Pompe suspendue.Cliquez pour actualiser le profile + Pompe suspendue + Obtenir l\'état de pompe + Définir basal tempo + Arrêter basal tempo + Définir bolus étendu + Arrêter bolus étendu + Mettre à jour les taux de debit de base + Déconnexion en cours + Exécution en cours + "Paramètres pompe virtuelle " + Téléchargement d\'état sur NS + Mauvais mot de passe + Mot de passe pour paramètres + Déverrouiller + L\'insuline journalière s\'approche de la limite + NSClient + NCSI + URL: + Défilement automatique + Redémarrer + NSClient + URL Nightscout + Entrez L’URL Nightscout + NS API secret + NS API secret + Entrez NS API secret (12 carac. min) + Nom de l\'appareil + Entrez le nom de l\'appareil + Cela sera utilisé pour le champ \"Entré par\" + Transmettre maintenant + Vider la file d\'attente + Afficher la file d\'attente + File d\'attente: + État + Interrompu + Effacer histo + NSCLIENT ne possède pas la permission d\'écriture. Mauvais API secret? + Paramètres Wear + Afficher l\'IR détaillée + Décomposer l’IR dans l\'IR du bolus et basal sur la montre + Sans succès - vérifiez votre téléphone + Non disponible + l\'Age du patient + " Enfant" + Adolescent + Adulte + Veuillez sélectionner l’âge du patient pour paramétrer les limites de sécurité svp + Glimp + Le dispositif n’apparaît pas pour renforcer la liste blanche de l’optimisation de batterie! + Autorisez l\'accès svp + % a besoin de la liste blanche de l’optimisation batterie pour une bonne performance + Loop suspendu + Suspendu (%d m) + Superbolus (%d m) + Menu loop + Suspendre Loop pour 1h + Suspendre Loop pour 2h + Suspendre Loop pour 3h + Suspendre Loop pour 10h + Déconnecter la pompe 30min + Déconnecter la pompe 1h + Déconnecter la pompe 2h + Déconnecter la pompe 3h + Déconnecter la pompe 10h + Reprendre + Durée incorrecte + Loop suspendu + Loop relancé + Tendance 15 min + GR + Superbolus + Entrer le démarrage de l\'app dans NS + Sortir de l’application pour modifier les réglages + DanaRv2 + Insuline + Insuline à action rapide + Novorapid, Humalog, Apidra + Fiasp + INS + Insuline Rapide à Action Prolongée + Activer les Superbolus dans l’assistant + Activer la fonctionalité superbolus dans l’assistant. Ne pas l’activez jusqu’au moment où vous appreniez comment il fonctionne réellement. IL PEUT PROVOQUER UNE OVERDOSE D’INSULINE SI UTILISÉ AVEUGLÉMENT! + " IR" + GR + "PRÉ " + BAS + Firmware + Dernière Connexion + état du Bluetooth + à propos de + Autorisation SMS manquante + DEV + État Xdrip (hr) + Barre d\'état pour xDrip (Montre) + xds + Afficher l’IG + Ajouter l’IG sur la barre d\'état + Pas de téléchargement sur NS + Toutes les données envoyées à NS sont abandonées. AAPS est connecté à NS mais aucun changement dans NS n’est fait + Incrément Basal + Incrément Bolus + Bolus étendu + Cible Tempo + Annuler Bolus étendu + Durée capteur + Durée canule + Durée d\'insuline + Heures + Type du Basal + "Facteur SI manquant dans le profile. Utilisez les valeurs par défaut. " + I:G manquant dans le profile. Utilisez les valeurs par défaut. + Basal manquant dans le profile. Utilisez les valeurs par défaut + Cible manquante dans le profile. Utilisez les valeurs par défaut + Profile incorrect!!! + Changement de Profil + Durée batterie pompe + Changement Batterie Pompe + Options d\'alarme + "Haute urgent " + Haute + Basse + Basse urgent + Actuellement programmé à %f + "Données obsolètes " + Données obsolètes urgent + "Seuil des données obsolètes [min] " + Seuil d\'urgence pour les données obsolètes [min] + "l’intervalle pour autosens [h] " + Le nombre d’heures écoulées pour la détection de sensibilité (le temps d’absorption des glucides est exclu) + SEN + Ignorer les événements de changement de profil + Tout les événements de changement de profils sont ignorés et le profil actif reste le seul profil en activité continue + Pompe + OpenAPS + Dispositif + Uploader + Détection de sensibilité + SENS + Sensibilité Oref0 + "Sensibilité AAPS " + Paramètres d’absorption + Durée maximale d’absorption pour un repas + Le temps estimé en heures pour une absorbption totale des glucides d’un repas + Afficher le bolus étendu en % + SAGE + IAGE + CAGE + PBAGE + OAPS + UPLD + BAS + EXT + écran verrouillé + verrouiller + En activant la fonction Autosens, n’oubliez pas de rentrer tout les glucides consommés. Sinon les déviations de glucides seront incorrectement identifiées alors que la sensibilité change !! + Sensibilité avec moyenne pondérée + OK + Annuler + Besoin d’être activé(e) pour que les valeurs soient envoyées à la pompe! + Pas tous les profils sont téléchargés! + Valeurs non enregistrées! + Notifications d\'aperçu + Transférez les notifications d’aperçu comme des messages de confirmation sur la montre. + Activer les transmissions de données sur d\'autres app. (ex. Xdrip) + Activer les transmissions locales. + "ACTIVITÉ " + Question + Succès + Se connecter pour %d s + POMPE + "Valeur Basal [U/h] " + Durée [min] + Durée du Pic de la Courbe IR + Réglage Durée Insuline Post Prandiale Oref + "Durée du Pic [min] " + "Insuline à Action Rapide Oref " + Insuline à Action Ultra Rapide Oref + Durée d’Action pour %s trop courte - utiliser %s à la place! + ACTIVER LE PROFIL + " Date" + INVALID + Attente pour le jumelage avec la pompe + Jumelage réussi + Jumelage interrompu + JUMELAGE + Jusqu\'à présent aucun appareil n\'a été trouvé + Réservoir vide + Alerte de mesure de glycémie + Niveau d\'insuline restant + DanaRS + Dana + Pompe selectionée + Jumeler nouvelle pompe + Vitesse bolus + Régler incrément basal à 0.01 U/h + numéro de série + Pourcentage + Time shift + Cibles Temporaires par défaut + Durée pour le prochain repas + Cible pour le prochain repas + Durée d\'activité + Cible pour l\'activité + Amorcer + Obtenir l\'état du bolus étendu + Obtenir l\'état du bolus + Obtenir l\'état du basal tempo + Obtenir les paramètres pompe + Obtenir l\'heure sur la pompe + réutiliser + Commandes depuis la montre + Définir les Cibles Temp et entrer les Traitements depuis la montre + Connexion interrompue + Aliments + Attendre la fin du bolus. %d sec. restants + Traitement d\'événement + Administration du bolus lancée + Commande exécutée à l\'instant + Pilote pompe corrigé + "Pompe hors de portée " + Léctures de glycémie qui manquent + Utiliser le système de notifications pour les alertes et les notifications + Alertes locales + Alerte si aucune donnée glycémique n’est reçue + Alerte si la pompe est hors portée + Seuil de \"hors portée\" à la pompe + Bluetooth + BT Watchdog + Ceci va arrêter le Bluetooth du tel pour une seconde si la pompe n’est pas connectée. Cela pourrait aider dans certains tél où la connexion Bluetooth reste bancale. + App Dexcom G5 (adaptée) + Télécharger Les données glycémiques sur NS + Paramètres de téléchargement du G5 + APK personalisée pour le téléchargement + Afficher le delta détaillé + Afficher delta avec une décimale supplémentaire + "Firmware pompe incompatible " + Transmettre les données G sur xDrip+ + Dand xDrip+ veuillez séléctionner 640g/Eversense comme source de données + "G NSClient " + "Valeur du basal remplacée par la valeur minimale supportée " + Calcul de G + Calcul IR du Bolus + Calcul IR du Basal + Calcul de tendance + Calcul SuperBolus + Oui + Non + Caclcul GR + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 660f6ee00e..1fad149686 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -15,6 +15,7 @@ @string/bg_lang @string/cs_lang @string/de_lang + @string/fr_lang @string/nl_lang @string/es_lang @string/el_lang @@ -29,6 +30,7 @@ bg cs de + fr nl es el @@ -100,4 +102,5 @@ @string/yes + French \ No newline at end of file diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/Insulin/InsulinOrefBasePluginTest.java b/app/src/test/java/info/nightscout/androidaps/plugins/Insulin/InsulinOrefBasePluginTest.java new file mode 100644 index 0000000000..83e9442364 --- /dev/null +++ b/app/src/test/java/info/nightscout/androidaps/plugins/Insulin/InsulinOrefBasePluginTest.java @@ -0,0 +1,153 @@ +package info.nightscout.androidaps.plugins.Insulin; + +import org.junit.Before; +import org.junit.Test; + +import info.nightscout.androidaps.data.Iob; +import info.nightscout.androidaps.db.Treatment; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by triplem on 07.01.18. + */ + +public class InsulinOrefBasePluginTest extends InsulinOrefBasePlugin { + + private int peak; + private double dia; + + private boolean shortDiaNotificationSend; + + @Before + public void setUp() throws Exception { + this.peak = 0; + this.dia = InsulinOrefBasePlugin.MIN_DIA; + this.shortDiaNotificationSend = false; + } + + @Test + public void testGetDia() throws Exception { + assertEquals(InsulinOrefBasePlugin.MIN_DIA, this.getDia(), 0); + + this.dia = InsulinOrefBasePlugin.MIN_DIA + 1; + assertEquals(InsulinOrefBasePlugin.MIN_DIA + 1, this.getDia(), 0); + + this.dia = InsulinOrefBasePlugin.MIN_DIA - 1; + assertEquals(InsulinOrefBasePlugin.MIN_DIA, this.getDia(), 0); + assertTrue(this.shortDiaNotificationSend); + } + + @Test + public void testIobCalcForTreatment() { + Treatment treatment = new Treatment(); + Iob expected = new Iob(); + + assertEquals(expected, this.iobCalcForTreatment(treatment, 0, 0d)); + + this.peak = 30; + this.dia = 4; + long time = System.currentTimeMillis(); + + // check directly after bolus + treatment.date = time; + treatment.insulin = 10d; + assertEquals(10d, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1); + + // check after 1 hour + treatment.date = time - 1 * 60 * 60 * 1000; // 1 hour + treatment.insulin = 10d; + assertEquals(3.92, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1); + + // check after 2 hour + treatment.date = time - 2 * 60 * 60 * 1000; // 1 hour + treatment.insulin = 10d; + assertEquals(0.77, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1); + + // check after 3 hour + treatment.date = time - 3 * 60 * 60 * 1000; // 1 hour + treatment.insulin = 10d; + assertEquals(0.10, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1); + + // check after dia + treatment.date = time - 4 * 60 * 60 * 1000; + treatment.insulin = 10d; + assertEquals(0d, this.iobCalcForTreatment(treatment, time).iobContrib, 0.1); + } + + + /** + * this method is implemented to allow tests of the iobCalcForTreatment calculation + * @return + */ + @Override + int getPeak() { + return this.peak; + } + + /** + * Userdefined Dia is implemented to allow tests of the getDia method + * + * @return + */ + public double getUserDefinedDia() { + return this.dia; + } + + void sendShortDiaNotification(double dia) { + this.shortDiaNotificationSend = true; + } + + + // the following methods are implemented, but not needed... + @Override + String commentStandardText() { + return null; + } + + @Override + public String getFragmentClass() { + return null; + } + + @Override + public int getId() { + return 0; + } + + @Override + public String getName() { + return null; + } + + @Override + public String getFriendlyName() { + return null; + } + + @Override + public boolean isEnabled(int type) { + return false; + } + + @Override + public boolean isVisibleInTabs(int type) { + return false; + } + + @Override + public void setFragmentEnabled(int type, boolean fragmentEnabled) { + + } + + @Override + public void setFragmentVisible(int type, boolean fragmentVisible) { + + } + + @Override + public int getPreferencesId() { + return 0; + } +} diff --git a/wear/src/main/java/info/nightscout/androidaps/watchfaces/BaseWatchFace.java b/wear/src/main/java/info/nightscout/androidaps/watchfaces/BaseWatchFace.java index ea5b41176b..fab81aafb9 100644 --- a/wear/src/main/java/info/nightscout/androidaps/watchfaces/BaseWatchFace.java +++ b/wear/src/main/java/info/nightscout/androidaps/watchfaces/BaseWatchFace.java @@ -70,7 +70,6 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen public boolean layoutSet = false; public boolean bIsRound = false; public int pointSize = 2; - public int missed_readings_alert_id = 818; public BgGraphBuilder bgGraphBuilder; public LineChartView chart; public ArrayList bgDataList = new ArrayList<>(); @@ -181,7 +180,6 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen } } ); - ListenerService.requestData(this); wakeLock.acquire(50); } @@ -638,8 +636,6 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen chart.setLineChartData(bgGraphBuilder.lineData()); chart.setViewportCalculationEnabled(true); chart.setMaximumViewport(chart.getMaximumViewport()); - } else { - ListenerService.requestData(this); } }