From 2bb9b846062e22ced4d34302f97dd192f4c7b494 Mon Sep 17 00:00:00 2001 From: olorinmaia Date: Tue, 7 Nov 2023 22:17:34 +0100 Subject: [PATCH 1/8] Adjust option and summary text of setting dynisf_adjust_sensitivity and also make sensitivity/resistance altering target options dependent of dynisf_adjust_sensitivity --- plugins/aps/src/main/res/values/strings.xml | 4 ++-- .../res/xml/pref_openapssmbdynamicisf.xml | 24 +++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/plugins/aps/src/main/res/values/strings.xml b/plugins/aps/src/main/res/values/strings.xml index fa718b1246..b7560597de 100644 --- a/plugins/aps/src/main/res/values/strings.xml +++ b/plugins/aps/src/main/res/values/strings.xml @@ -23,8 +23,8 @@ DynISFAdjust dynisf_adjust_sensitivity - Adjust sensitivity and basal - If activated DynISF uses the last 24h TDD/7D TDD as the basis for adjusting calculated ISF and also for increasing and decreasing basal rate, in the same way that standard Autosens does + Enable TDD based sensitivity ratio for basal and glucose target modification + Uses the last 24h TDD/7D TDD to calculate sensitivity ratio used for increasing or decreasing basal rate, and also adjust glucose target if these options are enabled, in the same way Autosens does. It is recommended to start with this option turned off DynamicISF Adjustment Factor % Adjustment factor for DynamicISF. Set more than 100% for more aggressive correction doses, and less than 100% for less aggressive corrections. High temptarget raises sensitivity diff --git a/plugins/aps/src/main/res/xml/pref_openapssmbdynamicisf.xml b/plugins/aps/src/main/res/xml/pref_openapssmbdynamicisf.xml index 6c6a192efe..3dfd281e91 100644 --- a/plugins/aps/src/main/res/xml/pref_openapssmbdynamicisf.xml +++ b/plugins/aps/src/main/res/xml/pref_openapssmbdynamicisf.xml @@ -55,6 +55,20 @@ android:summary="@string/dynisf_adjust_sensitivity_summary" android:title="@string/dynisf_adjust_sensitivity" /> + + + + - - Profil lavt mål Profil høyt mål - Nedre grense for midl. mål - Øvre grense for midl. mål - Midl. målverdi + Nedre grense for midlertidig mål + Øvre grense for midlertidig mål + Midlertidig målverdi Profil DIA verdi Profilens insulinfølsomhet Maksimal profil basalverdi @@ -480,7 +480,7 @@ 15\' trend: %1$.2fE Prosent: %1$.2fE x %2$d%% ≈ %3$.2fE Insulinbegrensning nådd!\nKan ikke levere %1$.2fE - TempT: %1$s + Midl. mål: %1$s %1$s til %2$s Ingen pumpe tilgjengelig! Hurtigknapp diff --git a/plugins/aps/src/main/res/values-nb-rNO/strings.xml b/plugins/aps/src/main/res/values-nb-rNO/strings.xml index 4e28382e08..a42b215f3b 100644 --- a/plugins/aps/src/main/res/values-nb-rNO/strings.xml +++ b/plugins/aps/src/main/res/values-nb-rNO/strings.xml @@ -1,13 +1,13 @@ - Juster sensitivitet og basal - Hvis aktivert bruker DynISF de siste 24t TDD/7D TDD som grunnlag for justering av kalkulert ISF og også for økning og reduksjon av basaldose, på samme måte som standard Autosens gjør + Juster sensitivitet ved hjelp av TDD + Benytter de siste 24t TDD/7D TDD til å beregne sensitivitet som grunnlag til å øke eller redusere basaldose og i tillegg justere blodsukkermål hvis valgene for dette er aktivert, på samme måte som Autosens gjør. Anbefalt å starte med dette valget slått av Dynamisk ISF justeringsfaktor % Justeringsfaktor for dynamisk ISF. Verdier over 100% vil gi mer aggressive korreksjonsdoser, mens verdier under 100% vil gi mildere korreksjonsdoser. - Høyt midl. mål øker sensitiviteten - = 100]]> - Lavt midl. mål reduserer sensitiviteten - + Høyt midlertidig mål øker sensitiviteten + = 5,6]]> + Lavt midlertidig mål reduserer sensitiviteten + OpenAPS SMB Dynamisk ISF Minste antall minutter mellom hver SMB @@ -64,16 +64,16 @@ Aktiver SMB alltid Aktiver SMB alltid uavhengig av boluser. Bare mulig med en bra filtrert BS kilde som f.eks. Dexcom G5/G6 Aktiver SMB etter karbohydrater - Aktiver SMB i 6t etter karbohydratinntak, selv med 0 COB. Bare mulig med en bra filtrert BS kilde som f. eks. Dexcom G5/G6 + Aktiver SMB i 6 timer etter inntak av karbohydrater, selv med 0 COB (Karbo ombord). Bare mulig med en bra filtrert BS-kilde som f. eks. Dexcom G5/G6 Aktiver SMB med COB Aktiver SMB når COB (karbohydrater ombord) er aktiv. Aktiver SMB med midlertidig målverdi Aktiver SMB når midlertidig målverdi er aktivert (spise snart, aktivitet) - Aktiver SMB ved høy midl. målverdi + Aktiver SMB ved høy midlertidig målverdi Aktiver SMB når det er en høy aktiv midlertidig målverdi (trening, over 100 mg/dl eller 5,5 mmol/l) Maks antall minutter med basal som kan bli SMB UAM SMB maks minutter - Maks antall minutter basal som kan bli SMB ved UAM + Maks antall minutter med basal som kan bli SMB ved UAM Minimumsgrense for KH-forslag Minste KH-mengde i gram som kreves for å vise varsel. Karbohydrater under denne mengden vil ikke utløse et varsel. Terskelverdi for BS hvor all insulintilførsel stoppes. Bruker kan definere verdier mellom 3.3mmol/l (60mg/dl) og 5.5mmol/l (100mg/dl). Verdier under 3.6/65 bruker standardmodell diff --git a/plugins/automation/src/main/res/values-nb-rNO/strings.xml b/plugins/automation/src/main/res/values-nb-rNO/strings.xml index 37200c7ce6..e855980278 100644 --- a/plugins/automation/src/main/res/values-nb-rNO/strings.xml +++ b/plugins/automation/src/main/res/values-nb-rNO/strings.xml @@ -38,8 +38,8 @@ BS %1$s %2$.0f %3$s BS %1$s %2$.1f %3$s Midlertidig mål finnes ikke - Midl. mål %1$s %2$.0f %3$s - Midl. mål %1$s %2$.1f %3$s + Midlertidig mål %1$s %2$.0f %3$s + Midlertidig mål %1$s %2$.1f %3$s Profilprosent %1$s %2$d IOB %1$s %2$.1f Eller @@ -66,7 +66,7 @@ SLETT LEGG TIL KOPIER - Midl. mål %1$s + Midlertidig mål %1$s Bluetoothtilkobling til enheten %1$s %2$s Tilkobling til Bluetoothenhet WiFi SSID %1$s %2$s diff --git a/plugins/constraints/src/main/res/values-nb-rNO/exam.xml b/plugins/constraints/src/main/res/values-nb-rNO/exam.xml index b11346f829..efbd22e9ed 100644 --- a/plugins/constraints/src/main/res/values-nb-rNO/exam.xml +++ b/plugins/constraints/src/main/res/values-nb-rNO/exam.xml @@ -52,7 +52,7 @@ La profilen være på 100%. Pause loop. https://wiki.aaps.app/en/latest/Usage/temptarget.html#activity-temp-target - Trening og midlertidige målverdier (temp targets) + Trening og midlertidige målverdier Hvordan kan du bruke midlertidige målverdier til å hjelpe systemet å håndtere aerobic trening? Sett et midlertidig mål for blodsukkeret som starter en passende tid før treningen begynner. Angi et midlertidig mål for Aktivitet etter at du har avsluttet treningen. diff --git a/plugins/constraints/src/main/res/values-nb-rNO/objectives.xml b/plugins/constraints/src/main/res/values-nb-rNO/objectives.xml index 9663716381..61fd7db702 100644 --- a/plugins/constraints/src/main/res/values-nb-rNO/objectives.xml +++ b/plugins/constraints/src/main/res/values-nb-rNO/objectives.xml @@ -38,7 +38,7 @@ Utført: %1$s Lær hvordan du kontrollerer AAPS Utfør forskjellige handlinger i AAPS - Du har lært hvordan du skal håndtere grunnleggende AAPS. Hovedkontrollene er på oversiktsskjermen som er tilgjengelig ved klikk eller lang-klikk, og flere kontroller er på Aksjon skjermen. Du bør vite hvordan du legger inn en skjermen til en plugin på menylinjen i toppen eller lar den vises i liste over aktiverte programtillegg øverst til venstre. + Du har lært hvordan du skal håndtere det grunnleggende ved AAPS. Hovedkontrollene er på oversikt-skjermen som er tilgjengelig ved klikk eller lang-klikk, og flere kontroller er på handlinger-skjermen. Du bør vite hvordan du legger inn skjermen til en plugin på menylinjen i toppen eller lar den vises i liste over aktiverte plugins øverst til venstre ved å trykke på hamburgermeny. Angi profil 90% for 10 min (langt-trykk på profilnavn i Oversikt) Simuler dusjing. Frakoble pumpen i 1t (langt trykk på Åpen Loop) ... og koble til igjen på samme måte diff --git a/plugins/main/src/main/res/values-lt-rLT/strings.xml b/plugins/main/src/main/res/values-lt-rLT/strings.xml index 8aeeba7969..d9c5776d82 100644 --- a/plugins/main/src/main/res/values-lt-rLT/strings.xml +++ b/plugins/main/src/main/res/values-lt-rLT/strings.xml @@ -282,7 +282,7 @@ Mygtukai visada rodomi ekrano apačioje Didelis ekranas Išvaizda - naudojimas: + naud: Siųsti šios dienos žurnalo įrašus kūrėjams dabar. Netikėta situacija. diff --git a/plugins/main/src/main/res/values-nb-rNO/strings.xml b/plugins/main/src/main/res/values-nb-rNO/strings.xml index 25c85b54f3..f12a2a69a2 100644 --- a/plugins/main/src/main/res/values-nb-rNO/strings.xml +++ b/plugins/main/src/main/res/values-nb-rNO/strings.xml @@ -34,8 +34,8 @@ +XXXXXXXXXX;+YYYYYYYYYY For å levere bolus på %1$.2fE, svar med kode %2$s For å levere måltidsbolus på %1$.2fE, svar med kode %2$s - For å sette midl. mål på %1$s, svar med kode %2$s - For å avbryte midl. mål, svar med kode %1$s + For å sette midlertidig mål på %1$s, svar med kode %2$s + For å avbryte midlertidig mål, svar med kode %1$s For å deaktivere fjernstyring via SMS-meldinger, svar med kode %1$s.\n\nHusk at du vil kunne reaktivere den igjen kun fra AAPS hovedtelefon. Fjernstyring via SMS-meldinger er stanset. For å reaktivere, bruk AAPS på hovedtelefonen. For å sende kalibrering %1$.2f, svar med kode %2$s @@ -46,8 +46,8 @@ Bolus %1$.2f E ble levert Måltidsbolus på %1$.2f E er levert Mål %1$s i %2$d minutter - Midl. mål på %1$s i %2$d minutter ble lagret - Midl. mål ble fjernet + Midlertidig mål på %1$s i %2$d minutter ble lagret + Midlertidig mål ble fjernet Tillat fjernstyring via SMS-meldinger Loop har blitt deaktivert Loop har blitt aktivert @@ -241,7 +241,7 @@ Lav verdi Høy verdi Korte navn i menyfaner - Vis merknadsfelt i dialogvindu for boluskalkulator + Vis merknadsfelt i dialogvindu for behandlinger, sensorbytte, profilbytte og BS-kontroll Boluskalkulator utfører beregninger, men bare denne del av beregnet insulin leveres. Nyttig ved bruk av SMB-algoritmen. Gi full bolus (100 %) dersom blodsukker er eldre enn Aktiver bolusveileder @@ -268,11 +268,11 @@ BAS AVVIK AKT - -BGI + BGI ABS DEVSLOPE BEH - HR + PULS SENS Graf-skala Graf diff --git a/plugins/source/src/main/res/values-es-rES/strings.xml b/plugins/source/src/main/res/values-es-rES/strings.xml index 1fabe8028d..53c1202552 100644 --- a/plugins/source/src/main/res/values-es-rES/strings.xml +++ b/plugins/source/src/main/res/values-es-rES/strings.xml @@ -1,7 +1,7 @@ - NSClient Glucosa + NSClient BG NS BG Recibir los datos de glucosa de Nightscout xDrip+ BG diff --git a/plugins/sync/src/main/res/values-lt-rLT/strings.xml b/plugins/sync/src/main/res/values-lt-rLT/strings.xml index 8e98e7243c..fd27843caf 100644 --- a/plugins/sync/src/main/res/values-lt-rLT/strings.xml +++ b/plugins/sync/src/main/res/values-lt-rLT/strings.xml @@ -17,6 +17,7 @@ Sinchronizuoja duomenis su Nightscout naudojant V3 API Užblokuota dėl įkrovimo parinkčių Užblokuota dėl ryšio parinkčių + Nėra ryšio Nepalaikoma Nightscout versija OAPS Siunt @@ -118,6 +119,9 @@ Data Broadcaster + Garmin + Susiejimas su Garmin (Fenix, Edge, …) + Garmin nustatymai Stebėti ir kontroliuoti AndroidAPS naudojant WearOS laikrodį. (nėra prijungto laikrodžio) diff --git a/plugins/sync/src/main/res/values-nb-rNO/strings.xml b/plugins/sync/src/main/res/values-nb-rNO/strings.xml index f1108632c1..0e99568379 100644 --- a/plugins/sync/src/main/res/values-nb-rNO/strings.xml +++ b/plugins/sync/src/main/res/values-nb-rNO/strings.xml @@ -27,7 +27,7 @@ NSClientV3 NSV3 NSClient - NSCI + NSV1 URL: Omstart NSClient @@ -92,7 +92,7 @@ Last opp CGM data Last opp behandlinger (insulin, karbohydrater) Last opp midl. basaler - Last opp profilbytter, midl. mål + Last opp profilbytter, midlertidig mål Last opp BS tester Fjern alt Tilbakestill start @@ -106,7 +106,7 @@ XD Send data til xDrip+ Vis detaljert IOB - Splitt IOB i bolus- og basal-IOB på klokken + Splitt IOB i bolus- og basal-IOB på urskiven Vis BGI Legg til BGI i statuslinje xDrip+ avansert statuslinje @@ -132,35 +132,35 @@ Boluskalkulator:\nBolus: %1$.2fE\nKarbo: %2$dg Den valgte hurtigknappen er ikke lenger tilgjengelig, oppdater klokkeflis Hurtigknapp: %1$s\nBolus: %2$.2fE\nKarbo: %3$dg - Ukjent forhåndsinnstilling midl. mål: %1$s - Avbryt gjeldende midl. mål? + Ukjent forhåndsinnstilling midlertidig mål: %1$s + Avbryt gjeldende midlertidig mål? Forskjellige enheter brukt på klokke og telefon! - Null-midl.mål - skal gjeldende midl. mål avbrytes? + Null-midl.mål - skal gjeldende midlertidig mål avbrytes? Min-BS utenfor område! Maks-BS utenfor område! - Midl. mål:\nMin: %1$s\nMaks: %2$s\nVarighet: %3$s - Midl. mål:\nMål: %1$s\nVarighet: %2$s - Midl. mål:\nÅrsak: %1$s\nMål: %2$s\nVarighet: %3$s + Midlertidig mål:\nMin: %1$s\nMaks: %2$s\nVarighet: %3$s + Midlertidig mål:\nMål: %1$s\nVarighet: %2$s + Midlertidig mål:\nÅrsak: %1$s\nMål: %2$s\nVarighet: %3$s feilet - sjekk telefonen Klokkeinnstillinger Kontroller fra klokke - Sett midl. mål og angi behandlinger fra klokken. + Sett midlertidig mål og angi behandlinger fra klokken. Beregninger inkludert i resultatet fra kalkulator: Generelle innstillinger Varsle ved SMB Vis SMB på klokken som en standard bolus. - Innstillinger for tilpasset klokkebakgrunn - Godkjenning for tilpasset klokkebakgrunn - Godkjenne at tilpasset klokkebakgrunn endrer AAPS- og klokkeinnstillinger i henhold til klokkebakgrunnens design - Tilpasset klokkebakgrunn: %1$s - Last inn klokkebakgrunn + Innstillinger for tilpasset urskive + Godkjenning for tilpasset urskive + Godkjenn at innlastet tilpasset urskive endrer og låser noen visningsinnstillinger i henhold til urskivens design + Tilpasset urskive: %1$s + Last inn urskive Info urskive Eksporter mal - Tilpasset klokkebakgrunn eksportert + Tilpasset urskive-mal eksportert Send alle data på nytt Åpne Innstillinger på klokken Liste over forhåndsvalg låst av urskive - Liste over innstillinger som kreves av klokkebakgrunnen + Liste over innstillinger som kreves av urskiven Liste over felt som er inkludert i urskive prøver å lese data fra pumpen. TDD: Fortsatt gamle data! Kan ikke lese fra pumpe. @@ -171,7 +171,7 @@ Profil:\n\nTidsforskyving: %1$d\nProsent: %2$d%% Mål gjelder bare i APS-modus! Ingen historikkdata! - Midl. mål + Midlertidig mål inntil STANDARD OMRÅDE målverdi diff --git a/pump/medtrum/src/main/res/values-lt-rLT/strings.xml b/pump/medtrum/src/main/res/values-lt-rLT/strings.xml index da7983f437..af430e0ac7 100644 --- a/pump/medtrum/src/main/res/values-lt-rLT/strings.xml +++ b/pump/medtrum/src/main/res/values-lt-rLT/strings.xml @@ -6,6 +6,7 @@ Medtrum Nano ir Medtrum 300U integracija Medtrum pompos nustatymai Pompos klaida: %1$s !! + Pompos įspėjimas: %1$s Pompa sustabdyta Pompa sustabdyta dėl viršyto valandos insulino limito Pompa sustabdyta dėl viršyto paros insulino limito @@ -52,6 +53,7 @@ Tuščia baterija Nėra kalibracijos Laiko juosta pompoje neatnaujinta, nutildykite ir atnaujinkite rankiniu būdu. + Boluso klaida Kartoti Kitas diff --git a/ui/src/main/res/values-nb-rNO/strings.xml b/ui/src/main/res/values-nb-rNO/strings.xml index 35ae9e2eb5..5a26087af8 100644 --- a/ui/src/main/res/values-nb-rNO/strings.xml +++ b/ui/src/main/res/values-nb-rNO/strings.xml @@ -92,7 +92,7 @@ Måltid Prime Profilendringer - Midl. Mål + Midlertidig mål Karbo og bolus Vis ugyldige / slettede registreringer Skjul ugyldige / slettede registreringer diff --git a/wear/src/main/res/values-nb-rNO/strings.xml b/wear/src/main/res/values-nb-rNO/strings.xml index 091489607e..d8894dec03 100644 --- a/wear/src/main/res/values-nb-rNO/strings.xml +++ b/wear/src/main/res/values-nb-rNO/strings.xml @@ -92,7 +92,7 @@ Meny XL Varighet - Midl. mål forespurt + Midlertidig mål forespurt Hurtigknapp forespurt Behandling forespurt Bolus forespurt From 04bd666a3f02dc66876e4ac2e732bea4b6505181 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 8 Nov 2023 10:42:52 +0100 Subject: [PATCH 4/8] gradle 8.1.3 for buildSrc --- buildSrc/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index c7ac53bd42..7cd2f0a647 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -1,6 +1,6 @@ object KtsBuildVersions { - const val gradle = "8.1.2" + const val gradle = "8.1.3" const val kotlin = "1.9.0" } From 50b7263acd0f4d68460001fa62a6a768396efaff Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 8 Nov 2023 11:11:19 +0100 Subject: [PATCH 5/8] DynISF: add notification on SMB fallback --- .../aaps/implementations/UiInteractionImpl.kt | 2 +- .../interfaces/notifications/Notification.kt | 1 + .../aaps/core/interfaces/ui/UiInteraction.kt | 3 +-- .../plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt | 2 +- .../OpenAPSSMBDynamicISFPlugin.kt | 17 ++++++++++++++--- .../constraints/ConstraintsCheckerImplTest.kt | 3 ++- .../sync/nsclient/services/NSClientService.kt | 6 +++--- .../nsclientV3/services/NSClientV3Service.kt | 14 ++++++-------- 8 files changed, 29 insertions(+), 19 deletions(-) diff --git a/app/src/main/kotlin/app/aaps/implementations/UiInteractionImpl.kt b/app/src/main/kotlin/app/aaps/implementations/UiInteractionImpl.kt index 5672ea7650..0cdba33ce2 100644 --- a/app/src/main/kotlin/app/aaps/implementations/UiInteractionImpl.kt +++ b/app/src/main/kotlin/app/aaps/implementations/UiInteractionImpl.kt @@ -190,7 +190,7 @@ class UiInteractionImpl @Inject constructor( rxBus.send(EventNewNotification(Notification(id, System.currentTimeMillis(), text, level, validTo))) } - override fun addNotificationWithAction(injector: HasAndroidInjector, nsAlarm: NSAlarm) { + override fun addNotificationWithAction(nsAlarm: NSAlarm) { rxBus.send(EventNewNotification(NotificationWithAction(injector, nsAlarm))) } diff --git a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/notifications/Notification.kt b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/notifications/Notification.kt index 336b16afe5..eac3ee624a 100644 --- a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/notifications/Notification.kt +++ b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/notifications/Notification.kt @@ -140,6 +140,7 @@ open class Notification { const val BLUETOOTH_NOT_SUPPORTED = 86 const val PUMP_WARNING = 87 const val PUMP_SYNC_ERROR = 88 + const val SMB_FALLBACK = 89 const val USER_MESSAGE = 1000 diff --git a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/ui/UiInteraction.kt b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/ui/UiInteraction.kt index e56d83adce..82c924e0c3 100644 --- a/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/ui/UiInteraction.kt +++ b/core/interfaces/src/main/kotlin/app/aaps/core/interfaces/ui/UiInteraction.kt @@ -5,7 +5,6 @@ import androidx.annotation.RawRes import androidx.annotation.StringRes import androidx.fragment.app.FragmentManager import app.aaps.core.interfaces.nsclient.NSAlarm -import dagger.android.HasAndroidInjector /** * Interface to use activities located in different modules @@ -73,7 +72,7 @@ interface UiInteraction { fun addNotificationValidFor(id: Int, text: String, level: Int, validMinutes: Int) fun addNotificationWithSound(id: Int, text: String, level: Int, @RawRes soundId: Int?) fun addNotificationValidTo(id: Int, date: Long, text: String, level: Int, validTo: Long) - fun addNotificationWithAction(injector: HasAndroidInjector, nsAlarm: NSAlarm) + fun addNotificationWithAction(nsAlarm: NSAlarm) fun addNotificationWithAction(id: Int, text: String, level: Int, buttonText: Int, action: Runnable, @RawRes soundId: Int? = null, date: Long = System.currentTimeMillis()) fun showToastAndNotification(ctx: Context?, string: String?, @RawRes soundID: Int) diff --git a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt index d54a5b0f6c..84e8d6ca4e 100644 --- a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt +++ b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt @@ -58,7 +58,7 @@ open class OpenAPSSMBPlugin @Inject constructor( private val hardLimits: HardLimits, private val profiler: Profiler, private val sp: SP, - private val dateUtil: DateUtil, + protected val dateUtil: DateUtil, private val repository: AppRepository, private val glucoseStatusProvider: GlucoseStatusProvider, private val bgQualityCheck: BgQualityCheck, diff --git a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt index c8f3dc1d64..fcf0a249ef 100644 --- a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt +++ b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt @@ -9,6 +9,7 @@ import app.aaps.core.interfaces.constraints.ConstraintsChecker import app.aaps.core.interfaces.iob.GlucoseStatusProvider import app.aaps.core.interfaces.iob.IobCobCalculator import app.aaps.core.interfaces.logging.AAPSLogger +import app.aaps.core.interfaces.notifications.Notification import app.aaps.core.interfaces.plugin.ActivePlugin import app.aaps.core.interfaces.profile.ProfileFunction import app.aaps.core.interfaces.profiling.Profiler @@ -16,8 +17,10 @@ import app.aaps.core.interfaces.resources.ResourceHelper import app.aaps.core.interfaces.rx.bus.RxBus import app.aaps.core.interfaces.sharedPreferences.SP import app.aaps.core.interfaces.stats.TddCalculator +import app.aaps.core.interfaces.ui.UiInteraction import app.aaps.core.interfaces.utils.DateUtil import app.aaps.core.interfaces.utils.HardLimits +import app.aaps.core.interfaces.utils.T import app.aaps.database.impl.AppRepository import app.aaps.plugins.aps.R import app.aaps.plugins.aps.openAPSSMB.DetermineBasalAdapterSMBJS @@ -46,7 +49,8 @@ class OpenAPSSMBDynamicISFPlugin @Inject constructor( repository: AppRepository, glucoseStatusProvider: GlucoseStatusProvider, bgQualityCheck: BgQualityCheck, - tddCalculator: TddCalculator + tddCalculator: TddCalculator, + private val uiInteraction: UiInteraction ) : OpenAPSSMBPlugin( injector, aapsLogger, @@ -78,9 +82,16 @@ class OpenAPSSMBDynamicISFPlugin @Inject constructor( // If there is no TDD data fallback to SMB as ISF calculation may be really off override fun provideDetermineBasalAdapter(): DetermineBasalAdapter = - if (tdd1D == null || tdd7D == null || tddLast4H == null || tddLast8to4H == null || tddLast24H == null || !dynIsfEnabled.value()) + if (tdd1D == null || tdd7D == null || tddLast4H == null || tddLast8to4H == null || tddLast24H == null || !dynIsfEnabled.value()) { + uiInteraction.addNotificationValidTo( + Notification.SMB_FALLBACK, dateUtil.now(), + rh.gs(R.string.fallback_smb_no_tdd), Notification.INFO, dateUtil.now() + T.mins(1).msecs() + ) DetermineBasalAdapterSMBJS(ScriptReader(context), injector) - else DetermineBasalAdapterSMBDynamicISFJS(ScriptReader(context), injector) + } else { + uiInteraction.dismissNotification(Notification.SMB_FALLBACK) + DetermineBasalAdapterSMBDynamicISFJS(ScriptReader(context), injector) + } override fun isAutosensModeEnabled(value: Constraint): Constraint { value.set(false, rh.gs(R.string.autosens_disabled_in_dyn_isf), this) diff --git a/plugins/constraints/src/test/kotlin/app/aaps/plugins/constraints/ConstraintsCheckerImplTest.kt b/plugins/constraints/src/test/kotlin/app/aaps/plugins/constraints/ConstraintsCheckerImplTest.kt index 932a6d89c0..58bd58cb4c 100644 --- a/plugins/constraints/src/test/kotlin/app/aaps/plugins/constraints/ConstraintsCheckerImplTest.kt +++ b/plugins/constraints/src/test/kotlin/app/aaps/plugins/constraints/ConstraintsCheckerImplTest.kt @@ -188,7 +188,8 @@ class ConstraintsCheckerImplTest : TestBaseWithProfile() { repository, glucoseStatusProvider, bgQualityCheck, - tddCalculator + tddCalculator, + uiInteraction ) openAPSAMAPlugin = OpenAPSAMAPlugin( diff --git a/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/nsclient/services/NSClientService.kt b/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/nsclient/services/NSClientService.kt index c6ddabc390..bac58bc0ed 100644 --- a/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/nsclient/services/NSClientService.kt +++ b/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/nsclient/services/NSClientService.kt @@ -642,7 +642,7 @@ class NSClientService : DaggerService() { val defaultVal = config.NSCLIENT if (sp.getBoolean(app.aaps.core.utils.R.string.key_ns_announcements, defaultVal)) { val nsAlarm = NSAlarmObject(announcement) - uiInteraction.addNotificationWithAction(injector, nsAlarm) + uiInteraction.addNotificationWithAction(nsAlarm) rxBus.send(EventNSClientNewLog("◄ ANNOUNCEMENT", safeGetString(announcement, "message", "received"))) aapsLogger.debug(LTag.NSCLIENT, announcement.toString()) } @@ -654,7 +654,7 @@ class NSClientService : DaggerService() { val snoozedTo = sp.getLong(rh.gs(app.aaps.core.utils.R.string.key_snoozed_to) + alarm.optString("level"), 0L) if (snoozedTo == 0L || System.currentTimeMillis() > snoozedTo) { val nsAlarm = NSAlarmObject(alarm) - uiInteraction.addNotificationWithAction(injector, nsAlarm) + uiInteraction.addNotificationWithAction(nsAlarm) } rxBus.send(EventNSClientNewLog("◄ ALARM", safeGetString(alarm, "message", "received"))) aapsLogger.debug(LTag.NSCLIENT, alarm.toString()) @@ -667,7 +667,7 @@ class NSClientService : DaggerService() { val snoozedTo = sp.getLong(rh.gs(app.aaps.core.utils.R.string.key_snoozed_to) + alarm.optString("level"), 0L) if (snoozedTo == 0L || System.currentTimeMillis() > snoozedTo) { val nsAlarm = NSAlarmObject(alarm) - uiInteraction.addNotificationWithAction(injector, nsAlarm) + uiInteraction.addNotificationWithAction(nsAlarm) } rxBus.send(EventNSClientNewLog("◄ URGENTALARM", safeGetString(alarm, "message", "received"))) aapsLogger.debug(LTag.NSCLIENT, alarm.toString()) diff --git a/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/nsclientV3/services/NSClientV3Service.kt b/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/nsclientV3/services/NSClientV3Service.kt index e2e766cecf..27a8bb7366 100644 --- a/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/nsclientV3/services/NSClientV3Service.kt +++ b/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/nsclientV3/services/NSClientV3Service.kt @@ -4,8 +4,6 @@ import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.os.Binder -import android.os.Handler -import android.os.HandlerThread import android.os.IBinder import android.os.PowerManager import app.aaps.core.interfaces.configuration.Config @@ -63,7 +61,6 @@ class NSClientV3Service : DaggerService() { private var wakeLock: PowerManager.WakeLock? = null private val binder: IBinder = LocalBinder() - private val handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper) @SuppressLint("WakelockTimeout") override fun onCreate() { @@ -94,7 +91,7 @@ class NSClientV3Service : DaggerService() { private var alarmSocket: Socket? = null internal var wsConnected = false - internal fun shutdownWebsockets() { + private fun shutdownWebsockets() { storageSocket?.on(Socket.EVENT_CONNECT, onConnectStorage) storageSocket?.on(Socket.EVENT_DISCONNECT, onDisconnectStorage) storageSocket?.on("create", onDataCreateUpdate) @@ -113,7 +110,8 @@ class NSClientV3Service : DaggerService() { alarmSocket = null } - internal fun initializeWebSockets(reason: String) { + @Suppress("SameParameterValue") + private fun initializeWebSockets(reason: String) { if (sp.getString(app.aaps.core.utils.R.string.key_nsclientinternal_url, "").isEmpty()) return val urlStorage = sp.getString(app.aaps.core.utils.R.string.key_nsclientinternal_url, "").lowercase().replace(Regex("/$"), "") + "/storage" val urlAlarm = sp.getString(app.aaps.core.utils.R.string.key_nsclientinternal_url, "").lowercase().replace(Regex("/$"), "") + "/alarm" @@ -277,7 +275,7 @@ class NSClientV3Service : DaggerService() { rxBus.send(EventNSClientNewLog("◄ ANNOUNCEMENT", data.optString("message"))) aapsLogger.debug(LTag.NSCLIENT, data.toString()) if (sp.getBoolean(app.aaps.core.utils.R.string.key_ns_announcements, config.NSCLIENT)) - uiInteraction.addNotificationWithAction(injector, NSAlarmObject(data)) + uiInteraction.addNotificationWithAction(NSAlarmObject(data)) } private val onAlarm = Emitter.Listener { args -> @@ -300,7 +298,7 @@ class NSClientV3Service : DaggerService() { if (sp.getBoolean(app.aaps.core.utils.R.string.key_ns_alarms, config.NSCLIENT)) { val snoozedTo = sp.getLong(rh.gs(app.aaps.core.utils.R.string.key_snoozed_to) + data.optString("level"), 0L) if (snoozedTo == 0L || System.currentTimeMillis() > snoozedTo) - uiInteraction.addNotificationWithAction(injector, NSAlarmObject(data)) + uiInteraction.addNotificationWithAction(NSAlarmObject(data)) } } @@ -311,7 +309,7 @@ class NSClientV3Service : DaggerService() { if (sp.getBoolean(app.aaps.core.utils.R.string.key_ns_alarms, config.NSCLIENT)) { val snoozedTo = sp.getLong(rh.gs(app.aaps.core.utils.R.string.key_snoozed_to) + data.optString("level"), 0L) if (snoozedTo == 0L || System.currentTimeMillis() > snoozedTo) - uiInteraction.addNotificationWithAction(injector, NSAlarmObject(data)) + uiInteraction.addNotificationWithAction(NSAlarmObject(data)) } } From 8070cac85046add22442adf50711f52fd3ad35c7 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 8 Nov 2023 11:11:59 +0100 Subject: [PATCH 6/8] 3.2.0.1-dev-a --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index b5ce446d61..c1fd0a0603 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -2,7 +2,7 @@ import org.gradle.api.JavaVersion object Versions { - const val appVersion = "3.2.0.1-dev" + const val appVersion = "3.2.0.1-dev-a" const val versionCode = 1500 const val ndkVersion = "21.1.6352462" From b5e00f9c1de850035d6fdd5dedc88d5445c7a4ef Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 8 Nov 2023 13:21:02 +0100 Subject: [PATCH 7/8] Do not allow select DynISF without objective started --- .../aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt | 7 ++++++- .../plugins/constraints/di/PluginsConstraintsModule.kt | 3 +++ .../plugins/constraints/objectives/ObjectivesPlugin.kt | 4 +--- .../aaps/plugins/constraints/ConstraintsCheckerImplTest.kt | 4 +++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt index fcf0a249ef..60b120c0c0 100644 --- a/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt +++ b/plugins/aps/src/main/kotlin/app/aaps/plugins/aps/openAPSSMBDynamicISF/OpenAPSSMBDynamicISFPlugin.kt @@ -6,6 +6,7 @@ import app.aaps.core.interfaces.aps.DetermineBasalAdapter import app.aaps.core.interfaces.bgQualityCheck.BgQualityCheck import app.aaps.core.interfaces.constraints.Constraint import app.aaps.core.interfaces.constraints.ConstraintsChecker +import app.aaps.core.interfaces.constraints.Objectives import app.aaps.core.interfaces.iob.GlucoseStatusProvider import app.aaps.core.interfaces.iob.IobCobCalculator import app.aaps.core.interfaces.logging.AAPSLogger @@ -50,7 +51,8 @@ class OpenAPSSMBDynamicISFPlugin @Inject constructor( glucoseStatusProvider: GlucoseStatusProvider, bgQualityCheck: BgQualityCheck, tddCalculator: TddCalculator, - private val uiInteraction: UiInteraction + private val uiInteraction: UiInteraction, + private val objectives: Objectives ) : OpenAPSSMBPlugin( injector, aapsLogger, @@ -80,6 +82,9 @@ class OpenAPSSMBDynamicISFPlugin @Inject constructor( .setDefault(false) } + override fun specialEnableCondition(): Boolean = + objectives.isStarted(Objectives.DYN_ISF_OBJECTIVE) + // If there is no TDD data fallback to SMB as ISF calculation may be really off override fun provideDetermineBasalAdapter(): DetermineBasalAdapter = if (tdd1D == null || tdd7D == null || tddLast4H == null || tddLast8to4H == null || tddLast24H == null || !dynIsfEnabled.value()) { diff --git a/plugins/constraints/src/main/kotlin/app/aaps/plugins/constraints/di/PluginsConstraintsModule.kt b/plugins/constraints/src/main/kotlin/app/aaps/plugins/constraints/di/PluginsConstraintsModule.kt index 2893e33526..3b9078ac7f 100644 --- a/plugins/constraints/src/main/kotlin/app/aaps/plugins/constraints/di/PluginsConstraintsModule.kt +++ b/plugins/constraints/src/main/kotlin/app/aaps/plugins/constraints/di/PluginsConstraintsModule.kt @@ -2,11 +2,13 @@ package app.aaps.plugins.constraints.di import app.aaps.core.interfaces.bgQualityCheck.BgQualityCheck import app.aaps.core.interfaces.constraints.ConstraintsChecker +import app.aaps.core.interfaces.constraints.Objectives import app.aaps.core.interfaces.versionChecker.VersionCheckerUtils import dagger.Binds import dagger.Module import app.aaps.plugins.constraints.ConstraintsCheckerImpl import app.aaps.plugins.constraints.bgQualityCheck.BgQualityCheckPlugin +import app.aaps.plugins.constraints.objectives.ObjectivesPlugin import app.aaps.plugins.constraints.versionChecker.VersionCheckerUtilsImpl @Module( @@ -25,5 +27,6 @@ abstract class PluginsConstraintsModule { @Binds fun bindVersionCheckerUtils(versionCheckerUtils: VersionCheckerUtilsImpl): VersionCheckerUtils @Binds fun bindBgQualityCheck(bgQualityCheck: BgQualityCheckPlugin): BgQualityCheck @Binds fun bindsConstraintChecker(constraintsCheckerImpl: ConstraintsCheckerImpl): ConstraintsChecker + @Binds fun bindsObjectives(objectivesPlugin: ObjectivesPlugin): Objectives } } \ No newline at end of file diff --git a/plugins/constraints/src/main/kotlin/app/aaps/plugins/constraints/objectives/ObjectivesPlugin.kt b/plugins/constraints/src/main/kotlin/app/aaps/plugins/constraints/objectives/ObjectivesPlugin.kt index de159b20f2..2430e4bcdf 100644 --- a/plugins/constraints/src/main/kotlin/app/aaps/plugins/constraints/objectives/ObjectivesPlugin.kt +++ b/plugins/constraints/src/main/kotlin/app/aaps/plugins/constraints/objectives/ObjectivesPlugin.kt @@ -58,11 +58,9 @@ class ObjectivesPlugin @Inject constructor( var objectives: MutableList = ArrayList() - public override fun onStart() { - super.onStart() + init { setupObjectives() } - override fun specialEnableCondition(): Boolean = activePlugin.activePump.pumpDescription.isTempBasalCapable diff --git a/plugins/constraints/src/test/kotlin/app/aaps/plugins/constraints/ConstraintsCheckerImplTest.kt b/plugins/constraints/src/test/kotlin/app/aaps/plugins/constraints/ConstraintsCheckerImplTest.kt index 58bd58cb4c..7cd8932f79 100644 --- a/plugins/constraints/src/test/kotlin/app/aaps/plugins/constraints/ConstraintsCheckerImplTest.kt +++ b/plugins/constraints/src/test/kotlin/app/aaps/plugins/constraints/ConstraintsCheckerImplTest.kt @@ -138,6 +138,7 @@ class ConstraintsCheckerImplTest : TestBaseWithProfile() { insightDbHelper = InsightDbHelper(insightDatabaseDao) danaPump = DanaPump(aapsLogger, sp, dateUtil, instantiator, decimalFormatter) objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, rh, activePlugin, sp, config) + objectivesPlugin.onStart() comboPlugin = ComboPlugin(injector, aapsLogger, rxBus, rh, profileFunction, sp, commandQueue, pumpSync, dateUtil, ruffyScripter, uiInteraction) danaRPlugin = DanaRPlugin( injector, aapsLogger, aapsSchedulers, rxBus, context, rh, constraintChecker, activePlugin, sp, commandQueue, danaPump, dateUtil, fabricPrivacy, pumpSync, @@ -189,7 +190,8 @@ class ConstraintsCheckerImplTest : TestBaseWithProfile() { glucoseStatusProvider, bgQualityCheck, tddCalculator, - uiInteraction + uiInteraction, + objectivesPlugin ) openAPSAMAPlugin = OpenAPSAMAPlugin( From 617d722edda0b09e54795648082449c66df37aa3 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 8 Nov 2023 14:08:58 +0100 Subject: [PATCH 8/8] show BG value in treatments --- .../fragments/TreatmentsCareportalFragment.kt | 4 ++++ ui/src/main/res/layout/treatments_careportal_item.xml | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ui/src/main/kotlin/app/aaps/ui/activities/fragments/TreatmentsCareportalFragment.kt b/ui/src/main/kotlin/app/aaps/ui/activities/fragments/TreatmentsCareportalFragment.kt index 2552e260d0..b2594caa3e 100644 --- a/ui/src/main/kotlin/app/aaps/ui/activities/fragments/TreatmentsCareportalFragment.kt +++ b/ui/src/main/kotlin/app/aaps/ui/activities/fragments/TreatmentsCareportalFragment.kt @@ -18,6 +18,7 @@ import app.aaps.core.interfaces.extensions.toVisibility import app.aaps.core.interfaces.logging.AAPSLogger import app.aaps.core.interfaces.logging.LTag import app.aaps.core.interfaces.logging.UserEntryLogger +import app.aaps.core.interfaces.profile.ProfileUtil import app.aaps.core.interfaces.resources.ResourceHelper import app.aaps.core.interfaces.rx.AapsSchedulers import app.aaps.core.interfaces.rx.bus.RxBus @@ -60,6 +61,7 @@ class TreatmentsCareportalFragment : DaggerFragment(), MenuProvider { @Inject lateinit var aapsSchedulers: AapsSchedulers @Inject lateinit var repository: AppRepository @Inject lateinit var uel: UserEntryLogger + @Inject lateinit var profileUtil: ProfileUtil private var _binding: TreatmentsCareportalFragmentBinding? = null @@ -157,6 +159,8 @@ class TreatmentsCareportalFragment : DaggerFragment(), MenuProvider { holder.binding.time.text = dateUtil.timeString(therapyEvent.timestamp) holder.binding.duration.text = if (therapyEvent.duration == 0L) "" else dateUtil.niceTimeScalar(therapyEvent.duration, rh) holder.binding.note.text = therapyEvent.note + if (therapyEvent.type == TherapyEvent.Type.FINGER_STICK_BG_VALUE) + therapyEvent.glucose?.let { holder.binding.bg.text = profileUtil.stringInCurrentUnitsDetect(it) } holder.binding.type.text = translator.translate(therapyEvent.type) holder.binding.cbRemove.visibility = (therapyEvent.isValid && actionHelper.isRemoving).toVisibility() holder.binding.cbRemove.setOnCheckedChangeListener { _, value -> diff --git a/ui/src/main/res/layout/treatments_careportal_item.xml b/ui/src/main/res/layout/treatments_careportal_item.xml index 2ca272195c..dc557d02e3 100644 --- a/ui/src/main/res/layout/treatments_careportal_item.xml +++ b/ui/src/main/res/layout/treatments_careportal_item.xml @@ -109,13 +109,22 @@ + + + tools:text="" />