From d06c5fdcc8ea42683f0dcb587eeaf369f7c0b9ad Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Wed, 7 Aug 2019 11:48:37 +0100 Subject: [PATCH 1/3] - fixed 4 (or more) crashalytics problems --- .../common/hw/rileylink/ble/RileyLinkBLE.java | 39 +++++++++++++------ .../pump/medtronic/MedtronicPumpPlugin.java | 9 +++++ .../medtronic/comm/ui/MedtronicUITask.java | 1 + 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java index b639c61aec..aab5e35142 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java @@ -370,13 +370,21 @@ public class RileyLinkBLE { rileyLinkDevice = bluetoothAdapter.getRemoteDevice(RileyLinkAddress); // if this succeeds, we get a connection state change callback? - if (rileyLinkDevice!=null) + if (rileyLinkDevice!=null) { connectGatt(); + } else { + LOG.error("RileyLink device not found with address: " + RileyLinkAddress); + } } // This function must be run on UI thread. public void connectGatt() { + if (this.rileyLinkDevice==null) { + LOG.error("RileyLink device is null, can't do connectGatt."); + return; + } + bluetoothConnectionGatt = rileyLinkDevice.connectGatt(context, true, bluetoothGattCallback); // , BluetoothDevice.TRANSPORT_LE if (bluetoothConnectionGatt == null) { @@ -384,7 +392,7 @@ public class RileyLinkBLE { } else { if (gattDebugEnabled) { if (isLogEnabled()) - LOG.debug("Gatt Connected?"); + LOG.debug("Gatt Connected."); } } } @@ -527,17 +535,24 @@ public class RileyLinkBLE { if (mCurrentOperation != null) { rval.resultCode = BLECommOperationResult.RESULT_BUSY; } else { - BluetoothGattCharacteristic chara = bluetoothConnectionGatt.getService(serviceUUID).getCharacteristic( - charaUUID); - mCurrentOperation = new CharacteristicReadOperation(bluetoothConnectionGatt, chara); - mCurrentOperation.execute(this); - if (mCurrentOperation.timedOut) { - rval.resultCode = BLECommOperationResult.RESULT_TIMEOUT; - } else if (mCurrentOperation.interrupted) { - rval.resultCode = BLECommOperationResult.RESULT_INTERRUPTED; + if (bluetoothConnectionGatt.getService(serviceUUID) == null) { + // Catch if the service is not supported by the BLE device + rval.resultCode = BLECommOperationResult.RESULT_NONE; + LOG.error("BT Device not supported"); + // TODO: 11/07/2016 UI update for user } else { - rval.resultCode = BLECommOperationResult.RESULT_SUCCESS; - rval.value = mCurrentOperation.getValue(); + BluetoothGattCharacteristic chara = bluetoothConnectionGatt.getService(serviceUUID).getCharacteristic( + charaUUID); + mCurrentOperation = new CharacteristicReadOperation(bluetoothConnectionGatt, chara); + mCurrentOperation.execute(this); + if (mCurrentOperation.timedOut) { + rval.resultCode = BLECommOperationResult.RESULT_TIMEOUT; + } else if (mCurrentOperation.interrupted) { + rval.resultCode = BLECommOperationResult.RESULT_INTERRUPTED; + } else { + rval.resultCode = BLECommOperationResult.RESULT_SUCCESS; + rval.value = mCurrentOperation.getValue(); + } } } mCurrentOperation = null; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java index d197431190..595e546a93 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java @@ -742,6 +742,15 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter ClockDTO clock = MedtronicUtil.getPumpTime(); + if (clock==null) { // retry + medtronicUIComm.executeCommand(MedtronicCommandType.GetRealTimeClock); + + clock = MedtronicUtil.getPumpTime(); + } + + if (clock==null) + return; + int timeDiff = Math.abs(clock.timeDifference); if (timeDiff > 20) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java index 3d39a82749..38bbb11ae2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java @@ -68,6 +68,7 @@ public class MedtronicUITask { case GetRealTimeClock: { returnData = communicationManager.getPumpTime(); + MedtronicUtil.setPumpTime(null); } break; From 163c043492d4d7f8c07779a3d104d454192b013d Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Wed, 7 Aug 2019 11:59:47 +0100 Subject: [PATCH 2/3] - preliminary fix for #1940 (if calculated voltage is under 0, we set it to 1%) --- .../plugins/pump/medtronic/data/dto/BatteryStatusDTO.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BatteryStatusDTO.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BatteryStatusDTO.java index d12260bb75..c8bd2347d0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BatteryStatusDTO.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BatteryStatusDTO.java @@ -27,6 +27,9 @@ public class BatteryStatusDTO { int percentInt = (int) (percent * 100.0d); + if (percentInt<0) + percentInt = 1; + if (percentInt > 100) percentInt = 100; From 1b09a467cf29447116337e729fa844df0d7db3d0 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 7 Aug 2019 13:26:24 +0200 Subject: [PATCH 3/3] New Crowdin translations (#1941) * New translations strings.xml (Italian) * New translations strings.xml (Italian) --- app/src/main/res/values-it-rIT/strings.xml | 38 +++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index ba6e35fcd4..8d7ebf8c2b 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -91,7 +91,7 @@ Bolo IOB Avvia ora MICROINFUSORE VIRTUALE - Velocità basale minima + Vel. basale originale Basale temporanea Bolo Esteso Batteria @@ -123,7 +123,7 @@ BasaleTemp Trattamenti Micro Virtuale - Portale + Careportal Microinfusore Quale microinfusore vuoi utilizzare con AndroidAPS? Trattamenti @@ -180,7 +180,7 @@ Versione NSClient non supportata Versione non supportata di Nightscout NSClient non istallato. Record perduto! - BG disponibile in NS + Glicemia disponibile in NS Stato Micro disponibile in NS Manuale LOOP DISABILITATO DAI VINCOLI @@ -321,15 +321,15 @@ In attesa del micro Sto per erogare %1$.2fU Configurazione della visualizzazione e del monitoraggio, analisi basali e rapporti - Verificare che BG sia disponibile su Nightscout e che i dati sull\'insulina del micro siano in fase di caricamento + Verificare che la Glicemia sia disponibile su Nightscout e che i dati sull\'insulina del micro siano in fase di caricamento Partenza con Loop Aperto Esegui l\'applicazione in modalità Loop Aperto per alcuni giorni e accetta manualmente le basali temporanee. Imposta e utilizza i target temporanei, anche quelli predefiniti (ad esempio, per l\'attività fisica o il trattamento dell\'ipoglicemia con carboidrati) Comprendi il tuo Loop Aperto, incluse le relative raccomandazioni sulle basali temporanee Sulla base di tale esperienza, decidi quale deve essere il valore max della basale e impostalo sul microinfusore e nelle preferenze Iniziare a chiudere il Loop con Low Glucose Suspend Esegui l\'applicazione in Loop Chiuso con max IOB = 0 per pochi giorni senza troppi eventi LGS - Regola il Loop Chiuso, aumentando max IOB al di sopra di 0 e abbassando gradualmente i target BG - Esegui l\'applicazione per alcuni giorni e almeno una notte senza allarmi BG, prima di abbassare il target delle Glicemia + Regola il Loop Chiuso, aumentando max IOB al di sopra di 0 e abbassando gradualmente i target glicemici + Esegui l\'applicazione per alcuni giorni e almeno una notte senza allarmi glicemia, prima di abbassare il target glicemico Regola le basali e i rapporti se necessario, quindi attiva auto-sens 1 settimana di looping diurno con dichiarazione regolare dei carboidrati, eseguito con successo Abilita funzioni aggiuntive per l\'uso diurno, ad esempio AMA (advanced meal assist - assistenza avanzata del pasto) @@ -429,7 +429,7 @@ Elimina trattamenti nel futuro Mangiare a breve Ipo - Attività Fisica + Attività Rimuovi campo: Statistiche DanaR TDD totale @@ -443,7 +443,7 @@ Peso Probabilmente inaccurato se si usano i boli per il caricamento/riempimento al posto dell\'apposita funzione! Dati Vecchi, premere \"RICARICA\" - Totale Base basale + Totale basale originale TBB * 2 Inizializzazione... ACT @@ -715,10 +715,10 @@ Il comando verrà eseguito ora Driver del micro corretto Micro irraggiungibile - Letture BG mancanti + Letture Glicemia mancanti Utilizza le notifiche di sistema per avvisi e notifiche Allarmi locali - Allarme se non vengono ricevuti dati BG + Allarme se non si ricevono dati Glicemia Allarme se il micro non è raggiungibile Soglia micro irraggiungibile [min] Allarme Urgente @@ -729,18 +729,18 @@ DexcomG5 App (modificata) DexcomG6 App (modificata) Eversense App (modificata) - Carica dati BG su NS + Carica dati Glicemia su NS Impostazioni caricamento BG Visualizza delta dettagliato Visualizza delta con una cifra decimale in più Max minuti basale con cui limitare SMB Firmware del micro non supportato - Invia dati BG a xDrip+ + Invia dati Glicemia a xDrip+ In xDrip+ seleziona origine dati 640g/Eversense NSClient BG Valore basale sostituito dal minimo valore supportato: %1$s Valore basale sostituito dal massimo valore supportato: %1$s - Calcolo BG + Calcolo Glicemia Calcolo IOB bolo Calcolo IOB basale Calcolo Trend @@ -756,7 +756,7 @@ NSClient ha il permesso di scrittura Modalità Chiusa attivata IOB massima impostata correttamente - BG disponibile da sorgente selezionata + Glicemia disponibile da sorgente selezionata Valori basali non allineati alle ore: %1$s Profilo non valido: %1$s Programmazione micro per erogazione @@ -841,9 +841,9 @@ Connetti automaticamente quando vengono aperte le schermate AndroidAPS, prima che venga richiesto qualsiasi comando del micro, per ridurre il ritardo della connessione Non consigliato a causa del consumo della batteria Abilita SMB sempre - Abilita SMB sempre, indipendentemente dai boli. Possibile solo con sorgente BG con buon filtraggio dati, come G5 + Abilita SMB sempre, indipendentemente dai boli. Possibile solo con sorgente glicemie con buon filtraggio dati, come G5 Abilita SMB dopo i carboidrati - Abilita SMB per 6h dopo la dichiarazione di carboidrati, anche con 0 COB. Possibile solo con sorgente BG con buon filtraggio dati, come G5 + Abilita SMB per 6h dopo la dichiarazione di carboidrati, anche con 0 COB. Possibile solo con sorgente glicemie con buon filtraggio dati, come G5 Abilita SMB con COB Abilita SMB quando COB è attivo. Abilita SMB con temp-target @@ -1037,8 +1037,8 @@ Tempo trascorso %1$d. Obiettivo Poctech - Ricevere i valori BG da app Poctech - Ricevere i valori BG da Tomato app (dispositivo MiaoMiao) + Ricevi valori Glicemia da app Poctech + Ricevi valori Glicemia da app Tomato (dispositivo MiaoMiao) High Temp-Target aumenta la sensibilità = 100]]> Low Temp-Target diminuisce la sensibilità @@ -1247,7 +1247,7 @@ versione datata versione molto datata Nuova versione disponibile da %1$d giorni! Ritorno a LGS trascorsi 60 giorni, disattivazione del loop dopo 90 giorni - Azione insulinica su scala grafica [U/min] + Azione insulina su scala grafica [U/min] 2h %1$.2fU Dexcom App (modificata)