diff --git a/app/build.gradle b/app/build.gradle
index 83063a8d88..a7840600f3 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -188,15 +188,16 @@ dependencies {
implementation project(':app-wear-shared:shared')
implementation project(':app-wear-shared:shared-impl')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':interfaces')
implementation project(':ui')
implementation project(':plugins:aps')
implementation project(':plugins:automation')
+ implementation project(':plugins:configuration')
implementation project(':plugins:main')
implementation project(':plugins:openhumans')
- implementation project(':plugins:configuration')
+ implementation project(':plugins:sensitivity')
implementation project(':implementation')
implementation project(':database:entities')
implementation project(':database:impl')
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt b/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt
index d08c346668..b76eda7756 100644
--- a/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt
@@ -31,9 +31,9 @@ import info.nightscout.androidaps.plugins.pump.combo.ComboPlugin
import info.nightscout.androidaps.plugins.pump.eopatch.EopatchPumpPlugin
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin
import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin
+import info.nightscout.sensitivity.SensitivityAAPSPlugin
+import info.nightscout.sensitivity.SensitivityOref1Plugin
+import info.nightscout.sensitivity.SensitivityWeightedAveragePlugin
import info.nightscout.androidaps.utils.protection.PasswordCheck
import info.nightscout.androidaps.utils.protection.ProtectionCheck.ProtectionType.BIOMETRIC
import info.nightscout.androidaps.utils.protection.ProtectionCheck.ProtectionType.CUSTOM_PASSWORD
diff --git a/app/src/main/java/info/nightscout/androidaps/di/PluginsListModule.kt b/app/src/main/java/info/nightscout/androidaps/di/PluginsListModule.kt
index c04ee1c049..9c26f6c94f 100644
--- a/app/src/main/java/info/nightscout/androidaps/di/PluginsListModule.kt
+++ b/app/src/main/java/info/nightscout/androidaps/di/PluginsListModule.kt
@@ -24,9 +24,9 @@ import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin
import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin
import info.nightscout.androidaps.plugins.pump.omnipod.dash.OmnipodDashPumpPlugin
import info.nightscout.androidaps.plugins.pump.omnipod.eros.OmnipodErosPumpPlugin
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin
+import info.nightscout.sensitivity.SensitivityAAPSPlugin
+import info.nightscout.sensitivity.SensitivityOref1Plugin
+import info.nightscout.sensitivity.SensitivityWeightedAveragePlugin
import info.nightscout.automation.AutomationPlugin
import info.nightscout.interfaces.plugin.PluginBase
import info.nightscout.plugins.aps.openAPSAMA.OpenAPSAMAPlugin
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOref1Worker.kt b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOref1Worker.kt
index a5b1fe6280..9c98a7ce4c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOref1Worker.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOref1Worker.kt
@@ -11,8 +11,8 @@ import info.nightscout.androidaps.extensions.target
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensDataObject
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin
+import info.nightscout.sensitivity.SensitivityAAPSPlugin
+import info.nightscout.sensitivity.SensitivityWeightedAveragePlugin
import info.nightscout.androidaps.receivers.DataWorkerStorage
import info.nightscout.androidaps.utils.DecimalFormatter
import info.nightscout.androidaps.workflow.CalculationWorkflow
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOrefWorker.kt b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOrefWorker.kt
index 381ed41b5e..bce4e75a43 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOrefWorker.kt
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobOrefWorker.kt
@@ -10,8 +10,8 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensDataObject
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin
+import info.nightscout.sensitivity.SensitivityAAPSPlugin
+import info.nightscout.sensitivity.SensitivityWeightedAveragePlugin
import info.nightscout.androidaps.receivers.DataWorkerStorage
import info.nightscout.androidaps.utils.DecimalFormatter
import info.nightscout.androidaps.workflow.CalculationWorkflow
diff --git a/app/src/main/java/info/nightscout/androidaps/workflow/CalculationWorkflow.kt b/app/src/main/java/info/nightscout/androidaps/workflow/CalculationWorkflow.kt
index bfca001cc6..547f16272e 100644
--- a/app/src/main/java/info/nightscout/androidaps/workflow/CalculationWorkflow.kt
+++ b/app/src/main/java/info/nightscout/androidaps/workflow/CalculationWorkflow.kt
@@ -15,7 +15,7 @@ import info.nightscout.androidaps.plugins.general.overview.OverviewData
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobOref1Worker
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobOrefWorker
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
+import info.nightscout.sensitivity.SensitivityOref1Plugin
import info.nightscout.androidaps.receivers.DataWorkerStorage
import info.nightscout.core.fabric.FabricPrivacy
import info.nightscout.interfaces.iob.IobCobCalculator
diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml
index 968e7ce1ad..d21e9a33a2 100644
--- a/app/src/main/res/values-af-rZA/strings.xml
+++ b/app/src/main/res/values-af-rZA/strings.xml
@@ -81,15 +81,15 @@
Sensitiwiteit opsporing
Watter sensitiwiteit algoritme moet gebruik word?
SENS
- Sensitiwiteit Oref1
- Sensitiwiteit AAPS
+ Sensitiwiteit Oref1
+ Sensitiwiteit AAPS
Absorpsie instellings
Maaltyd max\ks absorpsie tyd [h]
Tyd in ure waarna verwag word dat alle koolhidrate uit maaltyd geabsorbeer sal wees
Hou skerm aktief
Verhoed dat Android skerm afskakel. Dit sal baie meer energie vereis wanneer nie in krag prop is nie.
Deur Autosense aan te skakel onthou om alle koolhidrate in te voer Andersins sal koolhidrate dwalinge verkeerdelik geïdentifiseer word as sensitiwiteit veranderinge!!
- Sensitiwiteit GeweegdeGemiddelde
+ Sensitiwiteit GeweegdeGemiddelde
Nie alle profiele gelaai!
Waardes nie gestoor!
ONGELDIG
diff --git a/app/src/main/res/values-bg-rBG/strings.xml b/app/src/main/res/values-bg-rBG/strings.xml
index 0e6bfe9afc..736bb72153 100644
--- a/app/src/main/res/values-bg-rBG/strings.xml
+++ b/app/src/main/res/values-bg-rBG/strings.xml
@@ -116,15 +116,15 @@
Определяне на чувствителност
Кой алгоритъм за определяне на чувствителността да се използва?
ЧУВСТВ
- Чрез Oref1
- чрез AAPS
+ Чрез Oref1
+ чрез AAPS
Настройки за абсорбция
Максимално време за усвояване на храненето [ч]
Брой часове, за които се очаква храненето да бъде напълно усвоено в организма
Винаги включен екран
Предотвратяване на андроид да изключва екрана. Това ще доведе до консумацията на много енергия, когато устройството не е включено в контакта.
Когато включите Autosense feature трябва да въвеждате ВСИЧКИ въглехидрати. В противен случай те ще се изчисляват грешно като повишена чувствителност!!
- чрез Среднопретеглената стойност
+ чрез Среднопретеглената стойност
Не всички профили са заредени!
Стойностите не са запазени!
НЕВАЛИДНО
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index c0cac39b5b..6d3874ddde 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -122,15 +122,15 @@
Detekce citlivosti
Jaký druh algoritmu pro detekci citlivosti chcete použít?
SENZ
- Sensitivita Oref1
- Sensitivita AAPS
+ Sensitivita Oref1
+ Sensitivita AAPS
Nastavení absorpce sacharidů
Max. doba absorpce sacharidů [h]
Čas v hodinách, ve kterém předpokládáme, že všechny sacharidy budou strávené
Nechat obrazovku zapnutou
Zabránit Androidu ve zhasínání obrazovky. Bez připojení do nabíječky vybije velice rychle baterii!
Při zapnuté detekci sensitivity nezapomeňte vkládat všechny sacharidy. Jinak budou odchylky mylně vyhodnocovány jako změna sensitivity !!
- Sensitivita vážený průměr
+ Sensitivita vážený průměr
Všechny profily nenačteny!
Hodnoty nejsou uloženy!
NEPLATNÝ
diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml
index 523cee87b6..594eb659ac 100644
--- a/app/src/main/res/values-da-rDK/strings.xml
+++ b/app/src/main/res/values-da-rDK/strings.xml
@@ -116,15 +116,15 @@
Detektering af følsomhed
Hvilken følsomhedsalgoritme skal anvendes?
SENS
- Følsomhed Oref1
- Følsomhed AAPS
+ Følsomhed Oref1
+ Følsomhed AAPS
Indstillinger for absorbering
Måltid max absorptionstid [h]
Tid i timer, hvor det forventes at alle kulhydrater fra måltidet vil blive absorberet
Hold skærmen tændt
Forhindrer Android i at slukke for skærmen. Det vil forbruge meget energi, når den ikke er tilsluttet stikkontakt.
Ved at slå funktionen Autosense til husk at indtaste alle spiste kulhydrater. Ellers vil kulhydrat afvigelser blive identificeret forkert som følsomheds ændring !!
- Følsomhed Vægtet Gennemsnit
+ Følsomhed Vægtet Gennemsnit
Ikke alle profiler er indlæst!
Værdier ikke gemt!
UGYLDIG
diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml
index 747386d773..b0268f2077 100644
--- a/app/src/main/res/values-de-rDE/strings.xml
+++ b/app/src/main/res/values-de-rDE/strings.xml
@@ -116,15 +116,15 @@
Sensitivitätserkennung
Welcher Sensitivitäts-Algorithmus soll verwendet werden?
SENS
- Sensitivität Oref1
- Sensitivität AAPS
+ Sensitivität Oref1
+ Sensitivität AAPS
Resorptions-Einstellungen
Maximale Essens-Resorptionszeit [h]
Zeit in Stunden, in der zu erwarten ist, dass alle Kohlenhydrate resorbiert sein werden.
Bildschirm aktiv lassen
Hindere Android daran, den Bildschirm abzuschalten. Dies erhöht den Energieverbrauch, wenn das Gerät nicht an einem Ladegerät angeschlossen ist.
Stelle bei aktivierter Autosens-Funktion sicher, dass du alle eingenommenen Kohlenhydrate eingibst. Ansonsten können die Kohlenhydrat-Abweichungen zu falschen Sensitivitätswerten führen!
- Durchschnittliche Sensitivität
+ Durchschnittliche Sensitivität
Es sind nicht alle Profile geladen!
Werte nicht gespeichert!
Ungültig
diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml
index bb7a814581..3bbcea3c26 100644
--- a/app/src/main/res/values-el-rGR/strings.xml
+++ b/app/src/main/res/values-el-rGR/strings.xml
@@ -80,15 +80,15 @@
Ανίχνευση ευαισθησίας
Ποιος αλγόριθμος ευαισθησίας να χρησιμοποιηθεί;
SENS
- Ευαισθησία Oref1
- Ευαισθησία AAPS
+ Ευαισθησία Oref1
+ Ευαισθησία AAPS
Ρύθμιση απορρόφησης
Μέγιστος χρόνος απορρόφησης γεύματος [h]
Χρόνος σε ώρες που περιμένουμε να απορροφηθούν όλοι οι υδατάνθρακες ενός γεύματος
Κρατήστε την οθόνη ενεργή
Αποτρέψετε το Android να απενεργοποιήσει την οθόνη. Χωρίς σύνδεση με το φορτιστή, αποφορτίζει πολύ γρήγορα την μπαταρία.
Ενεργοποιώντας το autosense θυμηθείτε να εισάγετε όλους τους υδατάνθρακες. Διαφορετικά, οι αποκλίσεις των υδατανθράκων θα εντοπιστούν λανθασμένα ως αλλαγή ευαισθησίας!!
- Ευαισθησία WeightedAverage
+ Ευαισθησία WeightedAverage
Δεν έχουν φορτωθεί όλα τα προφίλ!
Οι τιμές δεν αποθηκεύτηκαν!
ΜΗ ΕΓΚΥΡΟ
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index 60530689d7..8a1972f43e 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -122,15 +122,15 @@
Detección sensibilidad
¿Qué algoritmo de sensibilidad debería usar?
SENS
- Sensibilidad Oref1
- Sensibilidad AAPS
+ Sensibilidad Oref1
+ Sensibilidad AAPS
Ajustes de absorción
Tiempo máximo de absorción de la comida [h]
Tiempo en horas en el que se espera que todos los carbohidratos hayan sido absorbidos
Mantener la pantalla activa
Evita que Android apague la pantalla. Consume mucha batería cuando el teléfono no está conectado al cargador
Al activar Autosens, recuerda introducir todos carbohidratos que has comido, sino, las desviaciones de carbohidratos serán identificados incorrectamente, como un cambio de sensibilidad
- Sensibilidad promedio ponderada
+ Sensibilidad promedio ponderada
Faltan perfiles por cargar!
Valores no guardados!
INVÁLIDO
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index f22f5ef6bb..0132fd3fed 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -123,15 +123,15 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Estimation de Sensibilité
Quel algorithme de Sensibilité doit être utilisé ?
SENS
- Sensibilité Oref1
- Sensibilité AAPS
+ Sensibilité Oref1
+ Sensibilité AAPS
Paramètres d’absorption
Durée max d’absorption d\'un repas [h]
Le temps estimé en heures pour une absorbption totale des glucides d’un repas
Garder l\'écran allumé
Empêcher Android d\'éteindre l\'écran. Ceci consommera beaucoup de batterie lorsque vous n’êtes pas connecté à une prise de courant.
En activant la fonction Autosens, n’oubliez pas de rentrer tous les glucides consommés. Sinon les déviations de glucides seront incorrectement identifiées pour les changements de sensibilité !!
- Sensibilité avec moyenne pondérée
+ Sensibilité avec moyenne pondérée
Les profils ne sont pas tous téléchargés !
Valeurs non enregistrées !
INVALIDE
diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml
index f2e896f798..928d5e0934 100644
--- a/app/src/main/res/values-it-rIT/strings.xml
+++ b/app/src/main/res/values-it-rIT/strings.xml
@@ -121,15 +121,15 @@
Rilevamento sensibilità
Quale algoritmo di sensibilità dovrebbe essere usato?
SENS
- Sensibilità Oref1
- Sensibilità AAPS
+ Sensibilità Oref1
+ Sensibilità AAPS
Impostazioni assorbimento
Max tempo assorbimento pasto [h]
Tempo in ore in cui è previsto che tutti i carboidrati del pasto vengano assorbiti
Mantieni lo schermo acceso
Evita che Android spenga lo schermo. Consumerà molta energia quando non è collegato alla presa di corrente.
Attivando la funzione Autosense, ricorda di inserire tutti i carboidrati assunti. Altrimenti le deviazioni di glicemia dovute ai carboidrati saranno identificate erroneamente come variazione di sensibilità !!
- Sensibilità WeightedAverage
+ Sensibilità WeightedAverage
Non tutti i profili caricati!
Valori non memorizzati!
NON VALIDO
diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml
index 04c52e723f..1689a2f59c 100644
--- a/app/src/main/res/values-iw-rIL/strings.xml
+++ b/app/src/main/res/values-iw-rIL/strings.xml
@@ -116,15 +116,15 @@
זיהוי רגישות
באיזה אלגוריתם זיהוי רגישות להשתמש?
רגישות
- רגישות Oref1
- רגישות AAPS
+ רגישות Oref1
+ רגישות AAPS
הגדרות ספיגה
זמן ספיגה מקסימלי של הארוחה [h]
מספר השעות בהן צפוי שכל הפחמימות מארוחה ייספגו
השאר את המסך דולק
מניעת כיבוי המסך. הדבר צורך הרבה כח סוללה.
בהפעלת פונקציית ה-Autosens יש לזכור שחייבים להזין למערכת את כל הפחמימות שנאכלו. אחרת פחמימות לא יזוהו נכון כשינוי ברגישות!
- רגישות משוקללת ממוצעת
+ רגישות משוקללת ממוצעת
לא כל הפרופילים נטענו!
הערכים לא נשמרו
לא חוקי
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index 130bfb260f..66111d7ec2 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -115,15 +115,15 @@
민감도 감지
어떤 민감도 알고리즘을 사용하겠습니까?
민감도
- 민감도 Oref1
- 민감도 AAPS
+ 민감도 Oref1
+ 민감도 AAPS
흡수 설정
식사 최대 흡수 시간 [h]
식사로 섭취한 탄수화물이 모두 흡수될기까지 예상되는 시간
화면을 켜진 상태로 유지
안드로이드의 화면이 꺼지는 것을 방지합니다. 전원이 공급되어 있지 않으면 전력소모가 큽니다.
Autosense 기능을 켜면 모든 섭취된 탄수화물양을 입력하십시오. 그렇지 않으면 탄수화물 편차(deviations)가 민감도 변화로 잘못 인식될것입니다!!
- 민감도 가중평균
+ 민감도 가중평균
모든 프로파일이 로드되지 않았습니다.
값이 저장되지 않았습니다!
유효하지 않음
diff --git a/app/src/main/res/values-lt-rLT/strings.xml b/app/src/main/res/values-lt-rLT/strings.xml
index b5fc609d7b..7db850eadb 100644
--- a/app/src/main/res/values-lt-rLT/strings.xml
+++ b/app/src/main/res/values-lt-rLT/strings.xml
@@ -116,15 +116,15 @@
Jautrumo nustatymas
Kurį jautrumo nustatymo algoritmą naudoti?
JAUTR
- Jautrumo nustatymo algoritmas Oref1
- Jautrumo nustatymo algoritmas AAPS
+ Jautrumo nustatymo algoritmas Oref1
+ Jautrumo nustatymo algoritmas AAPS
Angliavandenių įsisavinimo parametrai
Maksimalus angliavandenių įsisavinimo laikas [h]
Laikas, per kurį visi maisto angliavandeniai, tikėtina, bus įsisavinti
Laikyti ekraną įjungtą
Neleidžia Android sistemai išjungti ekrano. Naudojama daug energijos, jei telefonas neprijungtas prie maitinimo šaltinio.
Įjungę Autosens funkciją nepamirškite įvedinėti visus valgomus angliavandenius. To nedarant, angliavandenių sukeliami gliukozės svyravimai bus klaidingai identifikuojami kaip jautrumo pasikeitimai!
- Jautrumas pagal svertinį vidurkį
+ Jautrumas pagal svertinį vidurkį
Ne visi profiliai įkelti!
Reikšmės neišsaugotos!
KLAIDA
diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml
index b06f02b5fb..c78a2c2251 100644
--- a/app/src/main/res/values-nl-rNL/strings.xml
+++ b/app/src/main/res/values-nl-rNL/strings.xml
@@ -122,15 +122,15 @@
Gevoeligheid detectie
Welk gevoeligheid algoritme moet worden gebruikt?
SENS
- Gevoeligheid Oref1
- Gevoeligheid AAPS
+ Gevoeligheid Oref1
+ Gevoeligheid AAPS
Opname instellingen
Max absorptietijd maaltijd [uur]
Verwachte tijd in uren totdat alle koolhydraten opgenomen zijn
Laat scherm aan
Voorkomen dat Android het scherm uitschakelt. Dit kost veel accuvoeding als je de telefoon niet aan de oplader hebt.
Bij het gebruik van Autosense, vergeet niet alle opgenomen koolhydraten in te geven. Anders zullen BG wijzigingen door maaltijden foutief geïnterpreteerd worden !!
- Gemiddelde gevoeligheid
+ Gemiddelde gevoeligheid
Niet alle profielen zijn geladen!
Waarden niet opgeslagen!
Ongeldig
diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml
index 927ada125c..06f27a94fc 100644
--- a/app/src/main/res/values-no-rNO/strings.xml
+++ b/app/src/main/res/values-no-rNO/strings.xml
@@ -122,15 +122,15 @@
Sensitivitetsdeteksjon
Hvilken sensitivitetsalgoritme skal benyttes?
SENS
- Sensitivitet Oref1
- Sensitivitet AAPS
+ Sensitivitet Oref1
+ Sensitivitet AAPS
Absorpsjonsinnstillinger
Maks absorpsjonstid for måltid [h]
Tid i timer hvor det forventes at alle karbohydrater fra måltid vil være absorbert
Hold skjermen påslått
Forhindre Android fra å slå av skjermen. Mobilen vil bruke mye batteri hvis den ikke plugges til strømledning.
Hvis du slår på Autosense-funksjonen må du huske å angi alle spiste karbohydrater. Ellers vil KH-avvik gi feil i sensitivitetsberegningen !!
- Sensitivitet vektet middelverdi
+ Sensitivitet vektet middelverdi
Ikke alle profiler ble lastet!
Verdier ikke lagret!
UGYLDIG
diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml
index 9219686d51..f22eb98b95 100644
--- a/app/src/main/res/values-pl-rPL/strings.xml
+++ b/app/src/main/res/values-pl-rPL/strings.xml
@@ -116,15 +116,15 @@
Detekcja wrażliwości (sensitivity)
Który algorytm wrażliwości powinien być używany?
SENS
- Wrażliwość Oref1
- Wrażliwość AAPS
+ Wrażliwość Oref1
+ Wrażliwość AAPS
Ustawienia wchłaniania
Maks. czas wchłaniania posiłku [h]
Oczekiwany czas w godzinach, w którym wszystkie węglowodany zostają wchłonięte
Utrzymuj ekran włączony
Nie pozwól, aby system Android wyłączał ekran. Zwiększy to zużycie energii, gdy zasilanie sieciowe jest wyłączone.
Przy włączonej funkcji Autosens pamiętaj, żeby wprowadzać wszystkie węglowodany. W innym wypadku odchylenia węglowodanów będą błędnie identyfikowane jako zmiany wrażliwości !!
- Wrażliwość ŚredniaWażona
+ Wrażliwość ŚredniaWażona
Nie wszystkie profile zostały załadowane!
Wartości nie są przechowywane!
NIEPRAWIDŁOWY
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 2301d4d464..c4a8501da1 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -107,15 +107,15 @@
Detecção sensibilidade
Que algoritmo de sensibilidade deve ser usado?
SENS
- Sensibilidade Oref1
- Sensibilidade AAPS
+ Sensibilidade Oref1
+ Sensibilidade AAPS
Configurações de absorção
Tempo máx. absorção refeição [h]
Tempo em horas, espectável para que todos os hidratos de carbono da refeição sejam absorvidos
Manter a tela ligada
Impedir Android de desligar o ecrã. Isto irá consumir muita bateria quando não ligado ao carregador.
Ao ativar a função Autosense lembre-se de introduzir todos os carboidratos (carbs) que comeu. Caso contra contrário os desvios de carbs serão erroneamente identificados como uma variação da sensibilidade!!
- Média ponderada da Sensibilidade
+ Média ponderada da Sensibilidade
Nem todos perfis foram carregados!
Valores não guardados!
INVÁLIDO
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 83214d9b37..6215ca4f83 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -116,15 +116,15 @@
Detecção sensibilidade
Que algoritmo de sensibilidade deve ser usado?
SENS
- Sensibilidade Oref1
- Sensibilidade AAPS
+ Sensibilidade Oref1
+ Sensibilidade AAPS
Definições de absorção
Tempo máx. absorção refeição [h]
Tempo em horas, espectável para que todos os hidratos de carbono da refeição sejam absorvidos
Manter ecrã ligado
Impedir Android de desligar o ecrã. Isto irá consumir muita bateria quando não ligado ao carregador.
Ao activar a função Autosense lembre-se de introduzir todos os hidratos de carbono (HC) que comeu. Caso contrário os desvios de hidratos serão erroneamente identificados como uma variação da sensibilidade !!
- Média ponderada da Sensibilidade
+ Média ponderada da Sensibilidade
Nem todos perfis foram carregados!
Valores não guardados!
INVÁLIDO
diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml
index c7e8544121..4669744992 100644
--- a/app/src/main/res/values-ro-rRO/strings.xml
+++ b/app/src/main/res/values-ro-rRO/strings.xml
@@ -116,15 +116,15 @@
Detectare sensibilitate
Ce algoritm de detecție a sensibilității doriți să folosiți?
SENS
- Sensibilitate Oref1
- Sensibilitate AAPS
+ Sensibilitate Oref1
+ Sensibilitate AAPS
Setări absorbție
Timp maxim absorbție masă [o]
Timp în ore la care se presupune că toți carbohidrații sunt absorbiți
Menține ecranul aprins
Nu permite telefonului să stingă ecranul. Când este activă, această opțiune consumă foarte multă baterie atunci când telefonul nu este la încărcat.
Trebuie introduși toți carbo la pornirea Autosens. În caz contrar, acțiunea carbo va fi percepută ca schimbare a sensibilității!
- Sensibilitate estimată prin mediere
+ Sensibilitate estimată prin mediere
Nu s-au încărcat toate profilurile!
Nu s-au salvat valorile!
INVALID
diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml
index f89dd65a34..a08c7d9205 100644
--- a/app/src/main/res/values-ru-rRU/strings.xml
+++ b/app/src/main/res/values-ru-rRU/strings.xml
@@ -122,15 +122,15 @@
определение чувствительности
Какой алгоритм чувствительности следует использовать?
ЧУВСТВ
- Чувствительность Oref1
- Чувствительность AAPS
+ Чувствительность Oref1
+ Чувствительность AAPS
Настройки усваиваемости
Максимальное время усваимости пищи [h] (час)
Ожидаемое время усваивания всех углеводов пищи в часах
Не отключать экран
Не давать системе Android отключать экран. Это увеличит потребление энергии при отключенной сети питания.
Активируя Autosense не забывайте вводить все съеденные углеводы. Иначе отклонения в углеводах будут неверно определены как изменение чувствительности !!
- Средневзвешенная чувствительность
+ Средневзвешенная чувствительность
не все профили загружены!
Данные не сохранены!
НЕВЕРНО
diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml
index 8cac41d7a1..754f5bf6b3 100644
--- a/app/src/main/res/values-sk-rSK/strings.xml
+++ b/app/src/main/res/values-sk-rSK/strings.xml
@@ -122,15 +122,15 @@
Detekcia citlivosti
Aký druh algoritmu pre detekciu citlivosti má byť použitý?
SENZ
- Senzitivita Oref1
- Senzitivita AAPS
+ Senzitivita Oref1
+ Senzitivita AAPS
Nastavenie vstrebávania sacharidov
Max. doba vstrebávania sacharidov [h]
Čas v hodinách, počas ktorého predpokladáme, že všetky sacharidy budú vstrebané
Nechať obrazovku zapnutú
Zabrániť Androidu, aby zhasínal obrazovku. Bez pripojenia nabíjačky vybije veľmi rýchlo batériu!
Pri zapnutej automatickej detekcii citlivosti, nezabudnite vkladať všetky prijaté sacharidy. V opačnom prípade, budú odchýlky mylne vyhodnocované, ako zmena citlivosti !!
- Citlivosť vážený priemer
+ Citlivosť vážený priemer
Nenačítané všetky profily!
Hodnoty nie sú uložené!
NEPLATNÝ
diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml
index e9061c643c..6615128cdf 100644
--- a/app/src/main/res/values-sv-rSE/strings.xml
+++ b/app/src/main/res/values-sv-rSE/strings.xml
@@ -116,15 +116,15 @@
Känslighetsavkänning
Vilken algoritm vill du använda för känslighetsavkänning?
SENS
- Oref1
- AAPS
+ Oref1
+ AAPS
Absorptionsinställningar
Max absorptionstid för en måltid [tim]
Tid i timmar när alla kolhydrater förväntas vara absorberade
Håll skärmen igång
Förhindrar att skärmen stängs av. Förbrukar mer batteri.
Genom att slå på Autosens funktionen, kom ihåg att skriva in alla KH. Annars kommer programmet göra fel i beräkningar av känslighet (ISF)!!
- WeightedAverage
+ WeightedAverage
Alla profiler laddades inte!
Alla värden sparades inte!
OGILTIG
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml
index 759e2a902c..2674d788d9 100644
--- a/app/src/main/res/values-tr-rTR/strings.xml
+++ b/app/src/main/res/values-tr-rTR/strings.xml
@@ -120,15 +120,15 @@
Duyarlılık algılaması
Hangi duyarlılık algoritması kullanılmalıdır?
SENS
- Oref1 duyarlılık
- AAPS duyarlılık
+ Oref1 duyarlılık
+ AAPS duyarlılık
Emilim ayarları
Besinin maksimum emilim süresi [h]
Yemekteki tüm karbonhidratların emilmesinin beklendiği saat cinsinden süre
Ekranı açık tut
Android\'in ekranı kapatmasını önleyin. Prize takılı değilken çok fazla enerji tüketir.
Otoduyarlılık özelliğini açarsanız tüm yenen karbonhidratları girmeyi unutmayın. Aksi halde, karbonhidrat sapmaları duyarlılık değiştikçe yanlış tanımlanacaktır!!
- Ağırlıklı ortalama duyarlılık
+ Ağırlıklı ortalama duyarlılık
Tüm profiller yüklenmedi!
Değerler kaydedilmedi!
GEÇERSİZ
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index d9307a89aa..e247b6c3c5 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -116,15 +116,15 @@
灵敏度检测
应使用哪一种灵敏度算法?
灵敏度
- 灵敏度 Oref1
- 灵敏度 AAPS
+ 灵敏度 Oref1
+ 灵敏度 AAPS
食物吸收设置
膳食最大吸收时间 [h]
预计膳食中所有的碳水化合物被吸收的时间,以小时为单位
保持屏幕常亮
阻止 Android 系统关闭手机屏幕。这将非常耗电
如果要打开 Autosense功能, 记住输入所有吃的碳水化合物。否则碳水化合物的偏差将被识别为错误的灵敏度变化!!
- 灵敏度 WeightedAverage
+ 灵敏度 WeightedAverage
配置文件加载不完整
值没有被存储
无效
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ebfaca5093..7d985c040a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -41,10 +41,6 @@
Used for configuring the active plugins
Displays the current state of your loop and buttons for most common actions
Shows an ongoing notification with a short overview of what your loop is doing
- Sensitivity is calculated the same way like Oref0, but you can specify timeframe to the past. Minimal carb absorption is calculated from max carb absorption time from preferences.
- Sensitivity is calculated from 8h or 24h data in the past (using either which is more sensitive). Carbs (if not absorbed) are cut after time specified in preferences. Plugin also calculates UAM.
- Sensitivity is calculated as a weighted average from deviations. Newer deviations have higher weight. Minimal carb absorption is calculated from max carb absorption time from preferences. This algorithm is the fastest in following sensitivity changes.
- Saves all treatments that were made
Monitor and control AAPS using your WearOS watch.
Delta
Config Builder
@@ -120,19 +116,14 @@
Urgent stale data threshold [min]
Interval for autosens [h]
Amount of hours in the past for sensitivity detection (carbs absorption time is excluded)
- openapsama_autosens_period
OpenAPS
Uploader
- SENS
- Sensitivity Oref1
- Sensitivity AAPS
Absorption settings
Meal max absorption time [h]
Time in hours where is expected all carbs from meal will be absorbed
Keep screen on
Prevent Android to turn screen off. It will consume lot of energy when not plugged to power outlet.
By turning on Autosense feature remember to enter all eated carbs. Otherwise carbs deviations will be identified wrong as sensitivity change !!
- Sensitivity WeightedAverage
Not all profiles loaded!
Values not stored!
INVALID
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPluginTest.kt
index d3186551a3..fe83cb0932 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPluginTest.kt
@@ -8,6 +8,7 @@ import info.nightscout.interfaces.aps.AutosensResult
import info.nightscout.interfaces.aps.Sensitivity
import info.nightscout.interfaces.plugin.PluginDescription
import info.nightscout.rx.logging.AAPSLogger
+import info.nightscout.sensitivity.AbstractSensitivityPlugin
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
import org.json.JSONObject
diff --git a/core/core-main/build.gradle b/core/core-main/build.gradle
index 9cb96a63ac..098f8f72fb 100644
--- a/core/core-main/build.gradle
+++ b/core/core-main/build.gradle
@@ -21,6 +21,7 @@ dependencies {
implementation project(':database:impl')
implementation project(':interfaces')
implementation project(':core:ui')
+ implementation project(':core:utils')
api "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/data/ProfileSealed.kt b/core/core-main/src/main/java/info/nightscout/androidaps/data/ProfileSealed.kt
index 1701cb47db..6b9343f4f8 100644
--- a/core/core-main/src/main/java/info/nightscout/androidaps/data/ProfileSealed.kt
+++ b/core/core-main/src/main/java/info/nightscout/androidaps/data/ProfileSealed.kt
@@ -8,8 +8,8 @@ import info.nightscout.androidaps.extensions.shiftTargetBlock
import info.nightscout.androidaps.extensions.targetBlockValueBySeconds
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.core.main.R
-import info.nightscout.core.profile.secondsFromMidnight
import info.nightscout.core.profile.toMgdl
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.database.entities.EffectiveProfileSwitch
import info.nightscout.database.entities.ProfileSwitch
import info.nightscout.database.entities.data.Block
@@ -228,17 +228,17 @@ sealed class ProfileSealed(
override val percentage: Int
get() = pct
- override fun getBasal(): Double = basalBlocks.blockValueBySeconds(Profile.secondsFromMidnight(), percentage / 100.0, timeshift)
- override fun getBasal(timestamp: Long): Double = basalBlocks.blockValueBySeconds(Profile.secondsFromMidnight(timestamp), percentage / 100.0, timeshift)
- override fun getIc(): Double = icBlocks.blockValueBySeconds(Profile.secondsFromMidnight(), 100.0 / percentage, timeshift)
- override fun getIc(timestamp: Long): Double = icBlocks.blockValueBySeconds(Profile.secondsFromMidnight(timestamp), 100.0 / percentage, timeshift)
- override fun getIsfMgdl(): Double = Profile.toMgdl(isfBlocks.blockValueBySeconds(Profile.secondsFromMidnight(), 100.0 / percentage, timeshift), units)
- override fun getIsfMgdl(timestamp: Long): Double = Profile.toMgdl(isfBlocks.blockValueBySeconds(Profile.secondsFromMidnight(timestamp), 100.0 / percentage, timeshift), units)
- override fun getTargetMgdl(): Double = Profile.toMgdl(targetBlocks.targetBlockValueBySeconds(Profile.secondsFromMidnight(), timeshift), units)
- override fun getTargetLowMgdl(): Double = Profile.toMgdl(targetBlocks.lowTargetBlockValueBySeconds(Profile.secondsFromMidnight(), timeshift), units)
- override fun getTargetLowMgdl(timestamp: Long): Double = Profile.toMgdl(targetBlocks.lowTargetBlockValueBySeconds(Profile.secondsFromMidnight(timestamp), timeshift), units)
- override fun getTargetHighMgdl(): Double = Profile.toMgdl(targetBlocks.highTargetBlockValueBySeconds(Profile.secondsFromMidnight(), timeshift), units)
- override fun getTargetHighMgdl(timestamp: Long): Double = Profile.toMgdl(targetBlocks.highTargetBlockValueBySeconds(Profile.secondsFromMidnight(timestamp), timeshift), units)
+ override fun getBasal(): Double = basalBlocks.blockValueBySeconds(MidnightUtils.secondsFromMidnight(), percentage / 100.0, timeshift)
+ override fun getBasal(timestamp: Long): Double = basalBlocks.blockValueBySeconds(MidnightUtils.secondsFromMidnight(timestamp), percentage / 100.0, timeshift)
+ override fun getIc(): Double = icBlocks.blockValueBySeconds(MidnightUtils.secondsFromMidnight(), 100.0 / percentage, timeshift)
+ override fun getIc(timestamp: Long): Double = icBlocks.blockValueBySeconds(MidnightUtils.secondsFromMidnight(timestamp), 100.0 / percentage, timeshift)
+ override fun getIsfMgdl(): Double = Profile.toMgdl(isfBlocks.blockValueBySeconds(MidnightUtils.secondsFromMidnight(), 100.0 / percentage, timeshift), units)
+ override fun getIsfMgdl(timestamp: Long): Double = Profile.toMgdl(isfBlocks.blockValueBySeconds(MidnightUtils.secondsFromMidnight(timestamp), 100.0 / percentage, timeshift), units)
+ override fun getTargetMgdl(): Double = Profile.toMgdl(targetBlocks.targetBlockValueBySeconds(MidnightUtils.secondsFromMidnight(), timeshift), units)
+ override fun getTargetLowMgdl(): Double = Profile.toMgdl(targetBlocks.lowTargetBlockValueBySeconds(MidnightUtils.secondsFromMidnight(), timeshift), units)
+ override fun getTargetLowMgdl(timestamp: Long): Double = Profile.toMgdl(targetBlocks.lowTargetBlockValueBySeconds(MidnightUtils.secondsFromMidnight(timestamp), timeshift), units)
+ override fun getTargetHighMgdl(): Double = Profile.toMgdl(targetBlocks.highTargetBlockValueBySeconds(MidnightUtils.secondsFromMidnight(), timeshift), units)
+ override fun getTargetHighMgdl(timestamp: Long): Double = Profile.toMgdl(targetBlocks.highTargetBlockValueBySeconds(MidnightUtils.secondsFromMidnight(timestamp), timeshift), units)
override fun getBasalTimeFromMidnight(timeAsSeconds: Int): Double = basalBlocks.blockValueBySeconds(timeAsSeconds, percentage / 100.0, timeshift)
override fun getIcTimeFromMidnight(timeAsSeconds: Int): Double = icBlocks.blockValueBySeconds(timeAsSeconds, 100.0 / percentage, timeshift)
fun getIsfTimeFromMidnight(timeAsSeconds: Int): Double = isfBlocks.blockValueBySeconds(timeAsSeconds, 100.0 / percentage, timeshift)
diff --git a/core/core-main/src/main/java/info/nightscout/androidaps/extensions/ProfileSwitchExtension.kt b/core/core-main/src/main/java/info/nightscout/androidaps/extensions/ProfileSwitchExtension.kt
index 15f8dc1969..42d48816ae 100644
--- a/core/core-main/src/main/java/info/nightscout/androidaps/extensions/ProfileSwitchExtension.kt
+++ b/core/core-main/src/main/java/info/nightscout/androidaps/extensions/ProfileSwitchExtension.kt
@@ -12,18 +12,6 @@ import info.nightscout.shared.utils.T
import org.json.JSONObject
import java.util.TimeZone
-fun List.isPSEvent5minBack(time: Long): Boolean {
- for (event in this) {
- if (event.timestamp <= time && event.timestamp > time - T.mins(5).msecs()) {
- if (event.duration == 0L) {
- //aapsLogger.debug(LTag.DATABASE, "Found ProfileSwitch event for time: " + dateUtil.dateAndTimeString(time) + " " + event.toString())
- return true
- }
- }
- }
- return false
-}
-
fun ProfileSwitch.getCustomizedName(): String {
var name: String = profileName
if (Constants.LOCAL_PROFILE == name) {
diff --git a/core/core-main/src/main/java/info/nightscout/core/profile/ProfileExtension.kt b/core/core-main/src/main/java/info/nightscout/core/profile/ProfileExtension.kt
index 05cb4fccd6..1f25cee192 100644
--- a/core/core-main/src/main/java/info/nightscout/core/profile/ProfileExtension.kt
+++ b/core/core-main/src/main/java/info/nightscout/core/profile/ProfileExtension.kt
@@ -5,24 +5,7 @@ import info.nightscout.interfaces.Constants
import info.nightscout.interfaces.GlucoseUnit
import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.profile.ProfileFunction
-import org.joda.time.DateTime
-/*
- * Midnight time conversion
- */
-fun Profile.Companion.secondsFromMidnight(): Int {
- val passed = DateTime().millisOfDay.toLong()
- return (passed / 1000).toInt()
-}
-
-fun Profile.Companion.secondsFromMidnight(date: Long): Int {
- val passed = DateTime(date).millisOfDay.toLong()
- return (passed / 1000).toInt()
-}
-
-fun Profile.Companion.milliSecFromMidnight(date: Long): Long {
- return DateTime(date).millisOfDay.toLong()
-}
/*
* Units conversion
*/
diff --git a/core/core-main/src/main/java/info/nightscout/core/wizard/QuickWizardEntry.kt b/core/core-main/src/main/java/info/nightscout/core/wizard/QuickWizardEntry.kt
index 00ba5e75c3..25f4d1c8fc 100644
--- a/core/core-main/src/main/java/info/nightscout/core/wizard/QuickWizardEntry.kt
+++ b/core/core-main/src/main/java/info/nightscout/core/wizard/QuickWizardEntry.kt
@@ -6,7 +6,7 @@ import info.nightscout.androidaps.extensions.valueToUnits
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
import info.nightscout.core.iob.round
import info.nightscout.core.main.R
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.database.entities.GlucoseValue
import info.nightscout.database.impl.AppRepository
import info.nightscout.database.impl.ValueWrapper
@@ -39,7 +39,7 @@ class QuickWizardEntry @Inject constructor(private val injector: HasAndroidInjec
// for mock
@OpenForTesting
class Time {
- fun secondsFromMidnight(): Int = Profile.secondsFromMidnight()
+ fun secondsFromMidnight(): Int = MidnightUtils.secondsFromMidnight()
}
var time = Time()
diff --git a/core/core-main/src/main/res/values/strings.xml b/core/core-main/src/main/res/values/strings.xml
index 56eaaa3ee5..608871521a 100644
--- a/core/core-main/src/main/res/values/strings.xml
+++ b/core/core-main/src/main/res/values/strings.xml
@@ -1,108 +1,5 @@
-
- units
- loop_openmode_min_change
- absorption_maxtime
- openapsama_min_5m_carbimpact
- absorption_cutoff
- danar_useextended
- eatingsoon_duration
- eatingsoon_target
- activity_duration
- activity_target
- hypo_duration
- hypo_target
- low_mark
- high_mark
- ns_create_announcements_from_errors
- bt_watchdog
- bt_watchdog_last
- pump_unreachable_threshold
- missed_bg_readings_threshold
- gradually_increase_notification_volume
- virtualpump_type
- QuickWizard
- wearcontrol
- units_mgdl
- show_notes_entry_dialogs
- autosens_max
- autosens_min
- treatmentssafety_maxcarbs
- bgsource_upload_settings
- localalert_settings
- wear_settings
- configbuilder_general_settings
- maintenance_settings
- smscommunicator_settings
- openapssmb_settings
- treatmentssafety_settings
- loop_settings
- virtualpump_settings
- pump_settings
- tidepool_settings
- absorption_settings
- overview_settings
- openapsma_settings
- medtronic_settings
- danars_settings
- nsclientinternal_settings
- insight_local_settings
- data_choices_settings
- dexcom_settings
- active_pump_change_timestamp
- active_pump_type
- active_pump_serial_number
- age
- child
- teenage
- adult
- resistantadult
- pregnant
- app_expiration
- use_dark_mode
- insulin_oref_peak
- autotune_auto
- categorize_uam_as_basal
- autotune_tune_insulin_curve
- autotune_default_tune_days
- autotune_circadian_ic_isf
- autotune_additional_log
- key_autotune_plugin
- key_autotune_last_run
- dexcomg5_xdripupload
- nsclient_localbroadcasts
- use_bolus_reminder
- carbs_button_increment_1
- carbs_button_increment_2
- carbs_button_increment_3
- enable_pump_unreachable_alert
- enable_missed_bg_readings
- enable_carbs_required_alert_local
- smscommunicator_report_pump_unreachable
- rangetodisplay
- local_profile_last_change
- ns_receive_profile_store
- nsclientinternal_url
- nsclientinternal_api_secret
- ns_receive_insulin
- ns_receive_carbs
- ns_receive_therapy_events
- ns_receive_profile_switch
- ns_receive_offline_event
- ns_receive_temp_target
- ObjectivesProfileSwitchUsed
- ObjectivesTempTargetUsed
- ObjectivesDisconnectUsed
- ObjectivesReconnectUsed
- aps_mode
- boluswizard_percentage
- key_usersuperbolus
- treatmentssafety_maxbolus
- patient_name
- email_for_crash_report
-
-
Refresh
Error
diff --git a/core/fabric/src/main/res/values-af-rZA/strings.xml b/core/fabric/src/main/res/values-af-rZA/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-af-rZA/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-bg-rBG/strings.xml b/core/fabric/src/main/res/values-bg-rBG/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-bg-rBG/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-ca-rES/strings.xml b/core/fabric/src/main/res/values-ca-rES/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-ca-rES/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-cs-rCZ/strings.xml b/core/fabric/src/main/res/values-cs-rCZ/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-cs-rCZ/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-da-rDK/strings.xml b/core/fabric/src/main/res/values-da-rDK/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-da-rDK/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-de-rDE/strings.xml b/core/fabric/src/main/res/values-de-rDE/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-de-rDE/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-el-rGR/strings.xml b/core/fabric/src/main/res/values-el-rGR/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-el-rGR/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-es-rES/strings.xml b/core/fabric/src/main/res/values-es-rES/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-es-rES/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-fr-rFR/strings.xml b/core/fabric/src/main/res/values-fr-rFR/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-fr-rFR/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-ga-rIE/strings.xml b/core/fabric/src/main/res/values-ga-rIE/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-ga-rIE/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-hr-rHR/strings.xml b/core/fabric/src/main/res/values-hr-rHR/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-hr-rHR/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-hu-rHU/strings.xml b/core/fabric/src/main/res/values-hu-rHU/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-hu-rHU/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-it-rIT/strings.xml b/core/fabric/src/main/res/values-it-rIT/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-it-rIT/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-iw-rIL/strings.xml b/core/fabric/src/main/res/values-iw-rIL/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-iw-rIL/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-ja-rJP/strings.xml b/core/fabric/src/main/res/values-ja-rJP/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-ja-rJP/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-ko-rKR/strings.xml b/core/fabric/src/main/res/values-ko-rKR/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-ko-rKR/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-lt-rLT/strings.xml b/core/fabric/src/main/res/values-lt-rLT/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-lt-rLT/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-nl-rNL/strings.xml b/core/fabric/src/main/res/values-nl-rNL/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-nl-rNL/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-no-rNO/strings.xml b/core/fabric/src/main/res/values-no-rNO/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-no-rNO/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-pl-rPL/strings.xml b/core/fabric/src/main/res/values-pl-rPL/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-pl-rPL/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-pt-rBR/strings.xml b/core/fabric/src/main/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-pt-rPT/strings.xml b/core/fabric/src/main/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-ro-rRO/strings.xml b/core/fabric/src/main/res/values-ro-rRO/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-ro-rRO/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-ru-rRU/strings.xml b/core/fabric/src/main/res/values-ru-rRU/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-ru-rRU/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-sk-rSK/strings.xml b/core/fabric/src/main/res/values-sk-rSK/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-sk-rSK/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-sr-rCS/strings.xml b/core/fabric/src/main/res/values-sr-rCS/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-sr-rCS/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-sv-rSE/strings.xml b/core/fabric/src/main/res/values-sv-rSE/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-sv-rSE/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-tr-rTR/strings.xml b/core/fabric/src/main/res/values-tr-rTR/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-tr-rTR/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values-zh-rCN/strings.xml b/core/fabric/src/main/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 3ea04e700d..0000000000
--- a/core/fabric/src/main/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/core/fabric/src/main/res/values/strings.xml b/core/fabric/src/main/res/values/strings.xml
deleted file mode 100644
index 3ad8e4ea03..0000000000
--- a/core/fabric/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- enable_fabric2
-
\ No newline at end of file
diff --git a/core/core-main/src/main/res/drawable/ic_generic_icon.xml b/core/ui/src/main/res/drawable/ic_generic_icon.xml
similarity index 100%
rename from core/core-main/src/main/res/drawable/ic_generic_icon.xml
rename to core/ui/src/main/res/drawable/ic_generic_icon.xml
diff --git a/core/fabric/.gitignore b/core/utils/.gitignore
similarity index 100%
rename from core/fabric/.gitignore
rename to core/utils/.gitignore
diff --git a/core/fabric/build.gradle b/core/utils/build.gradle
similarity index 92%
rename from core/fabric/build.gradle
rename to core/utils/build.gradle
index 5b7ede3fbb..bb59fa38b3 100644
--- a/core/fabric/build.gradle
+++ b/core/utils/build.gradle
@@ -14,12 +14,11 @@ apply from: "${project.rootDir}/core/core-main/jacoco_global.gradle"
android {
- namespace 'info.nightscout.core.fabric'
+ namespace 'info.nightscout.core.utils'
}
dependencies {
- implementation project(':interfaces')
implementation project(':app-wear-shared:rx')
implementation project(':app-wear-shared:shared')
diff --git a/core/fabric/consumer-rules.pro b/core/utils/consumer-rules.pro
similarity index 100%
rename from core/fabric/consumer-rules.pro
rename to core/utils/consumer-rules.pro
diff --git a/core/fabric/proguard-rules.pro b/core/utils/proguard-rules.pro
similarity index 100%
rename from core/fabric/proguard-rules.pro
rename to core/utils/proguard-rules.pro
diff --git a/core/fabric/src/main/AndroidManifest.xml b/core/utils/src/main/AndroidManifest.xml
similarity index 100%
rename from core/fabric/src/main/AndroidManifest.xml
rename to core/utils/src/main/AndroidManifest.xml
diff --git a/core/fabric/src/main/java/info/nightscout/core/fabric/FabricPrivacy.kt b/core/utils/src/main/java/info/nightscout/core/fabric/FabricPrivacy.kt
similarity index 99%
rename from core/fabric/src/main/java/info/nightscout/core/fabric/FabricPrivacy.kt
rename to core/utils/src/main/java/info/nightscout/core/fabric/FabricPrivacy.kt
index 916756c53a..5e213a6af7 100644
--- a/core/fabric/src/main/java/info/nightscout/core/fabric/FabricPrivacy.kt
+++ b/core/utils/src/main/java/info/nightscout/core/fabric/FabricPrivacy.kt
@@ -6,6 +6,7 @@ import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.google.firebase.ktx.Firebase
import info.nightscout.androidaps.annotations.OpenForTesting
+import info.nightscout.core.utils.R
import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag
import info.nightscout.shared.sharedPreferences.SP
diff --git a/core/fabric/src/main/java/info/nightscout/core/fabric/InstanceId.kt b/core/utils/src/main/java/info/nightscout/core/fabric/InstanceId.kt
similarity index 100%
rename from core/fabric/src/main/java/info/nightscout/core/fabric/InstanceId.kt
rename to core/utils/src/main/java/info/nightscout/core/fabric/InstanceId.kt
diff --git a/core/utils/src/main/java/info/nightscout/core/utils/MidnightUtils.kt b/core/utils/src/main/java/info/nightscout/core/utils/MidnightUtils.kt
new file mode 100644
index 0000000000..77305be80e
--- /dev/null
+++ b/core/utils/src/main/java/info/nightscout/core/utils/MidnightUtils.kt
@@ -0,0 +1,22 @@
+package info.nightscout.core.utils
+
+import org.joda.time.DateTime
+
+object MidnightUtils {
+ /*
+ * Midnight time conversion
+ */
+ fun secondsFromMidnight(): Int {
+ val passed = DateTime().millisOfDay.toLong()
+ return (passed / 1000).toInt()
+ }
+
+ fun secondsFromMidnight(date: Long): Int {
+ val passed = DateTime(date).millisOfDay.toLong()
+ return (passed / 1000).toInt()
+ }
+
+ fun milliSecFromMidnight(date: Long): Long {
+ return DateTime(date).millisOfDay.toLong()
+ }
+}
\ No newline at end of file
diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/utils/Percentile.kt b/core/utils/src/main/java/info/nightscout/core/utils/Percentile.kt
similarity index 94%
rename from plugins/aps/src/main/java/info/nightscout/plugins/aps/utils/Percentile.kt
rename to core/utils/src/main/java/info/nightscout/core/utils/Percentile.kt
index f71f2158cb..c336de8ded 100644
--- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/utils/Percentile.kt
+++ b/core/utils/src/main/java/info/nightscout/core/utils/Percentile.kt
@@ -1,4 +1,4 @@
-package info.nightscout.plugins.aps.utils
+package info.nightscout.core.utils
import kotlin.math.floor
diff --git a/core/utils/src/main/res/values/keys.xml b/core/utils/src/main/res/values/keys.xml
new file mode 100644
index 0000000000..bd10de0529
--- /dev/null
+++ b/core/utils/src/main/res/values/keys.xml
@@ -0,0 +1,106 @@
+
+
+
+ units
+ loop_openmode_min_change
+ absorption_maxtime
+ openapsama_min_5m_carbimpact
+ absorption_cutoff
+ danar_useextended
+ eatingsoon_duration
+ eatingsoon_target
+ activity_duration
+ activity_target
+ hypo_duration
+ hypo_target
+ low_mark
+ high_mark
+ ns_create_announcements_from_errors
+ bt_watchdog
+ bt_watchdog_last
+ pump_unreachable_threshold
+ missed_bg_readings_threshold
+ gradually_increase_notification_volume
+ virtualpump_type
+ QuickWizard
+ wearcontrol
+ units_mgdl
+ show_notes_entry_dialogs
+ autosens_max
+ autosens_min
+ treatmentssafety_maxcarbs
+ bgsource_upload_settings
+ localalert_settings
+ wear_settings
+ configbuilder_general_settings
+ maintenance_settings
+ smscommunicator_settings
+ openapssmb_settings
+ treatmentssafety_settings
+ loop_settings
+ virtualpump_settings
+ pump_settings
+ tidepool_settings
+ absorption_settings
+ overview_settings
+ openapsma_settings
+ medtronic_settings
+ danars_settings
+ nsclientinternal_settings
+ insight_local_settings
+ data_choices_settings
+ dexcom_settings
+ active_pump_change_timestamp
+ active_pump_type
+ active_pump_serial_number
+ age
+ child
+ teenage
+ adult
+ resistantadult
+ pregnant
+ app_expiration
+ use_dark_mode
+ insulin_oref_peak
+ autotune_auto
+ categorize_uam_as_basal
+ autotune_tune_insulin_curve
+ autotune_default_tune_days
+ autotune_circadian_ic_isf
+ autotune_additional_log
+ key_autotune_plugin
+ key_autotune_last_run
+ dexcomg5_xdripupload
+ nsclient_localbroadcasts
+ use_bolus_reminder
+ carbs_button_increment_1
+ carbs_button_increment_2
+ carbs_button_increment_3
+ enable_pump_unreachable_alert
+ enable_missed_bg_readings
+ enable_carbs_required_alert_local
+ smscommunicator_report_pump_unreachable
+ rangetodisplay
+ local_profile_last_change
+ ns_receive_profile_store
+ nsclientinternal_url
+ nsclientinternal_api_secret
+ ns_receive_insulin
+ ns_receive_carbs
+ ns_receive_therapy_events
+ ns_receive_profile_switch
+ ns_receive_offline_event
+ ns_receive_temp_target
+ ObjectivesProfileSwitchUsed
+ ObjectivesTempTargetUsed
+ ObjectivesDisconnectUsed
+ ObjectivesReconnectUsed
+ aps_mode
+ boluswizard_percentage
+ key_usersuperbolus
+ treatmentssafety_maxbolus
+ patient_name
+ email_for_crash_report
+ openapsama_autosens_period
+ enable_fabric2
+
\ No newline at end of file
diff --git a/crowdin.yml b/crowdin.yml
index daaf8587cf..f0318d01ce 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -15,6 +15,8 @@ files:
translation: /plugins/automation/src/main/res/values-%android_code%/strings.xml
- source: /plugins/openhumans/src/main/res/values/strings.xml
translation: /plugins/openhumans/src/main/res/values-%android_code%/strings.xml
+ - source: /plugins/sensitivity/src/main/res/values/strings.xml
+ translation: /plugins/sensitivity/src/main/res/values-%android_code%/strings.xml
- source: /plugins/configuration/src/main/res/values/strings.xml
translation: /plugins/configuration/src/main/res/values-%android_code%/strings.xml
- source: /core/core-main/src/main/res/values/protection.xml
@@ -23,8 +25,8 @@ files:
translation: /core/core-main/src/main/res/values-%android_code%/validator.xml
- source: /core/core-main/src/main/res/values/strings.xml
translation: /core/core-main/src/main/res/values-%android_code%/strings.xml
- - source: /core/fabric/src/main/res/values/strings.xml
- translation: /core/fabric/src/main/res/values-%android_code%/strings.xml
+ - source: /core/utils/src/main/res/values/strings.xml
+ translation: /core/utils/src/main/res/values-%android_code%/strings.xml
- source: /core/ui/src/main/res/values/strings.xml
translation: /core/ui/src/main/res/values-%android_code%/strings.xml
- source: /app-wear-shared/shared/src/main/res/values/strings.xml
diff --git a/implementation/build.gradle b/implementation/build.gradle
index cd610c49e8..2098509b31 100644
--- a/implementation/build.gradle
+++ b/implementation/build.gradle
@@ -23,7 +23,7 @@ dependencies {
implementation project(':plugins:automation')
implementation project(':interfaces')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':ui')
}
\ No newline at end of file
diff --git a/insight/build.gradle b/insight/build.gradle
index 94a41ddbbc..7484683df6 100644
--- a/insight/build.gradle
+++ b/insight/build.gradle
@@ -28,7 +28,7 @@ android {
dependencies {
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':interfaces')
implementation project(':app-wear-shared:rx')
implementation project(':app-wear-shared:shared')
diff --git a/plugins/aps/build.gradle b/plugins/aps/build.gradle
index c13275c4a2..137cf8bce1 100644
--- a/plugins/aps/build.gradle
+++ b/plugins/aps/build.gradle
@@ -21,7 +21,7 @@ dependencies {
implementation project(':database:entities')
implementation project(':database:impl')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':interfaces')
diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/OpenAPSAMAPlugin.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/OpenAPSAMAPlugin.kt
index 071378a0fa..a69564922a 100644
--- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/OpenAPSAMAPlugin.kt
+++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/OpenAPSAMAPlugin.kt
@@ -6,7 +6,7 @@ import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.androidaps.extensions.target
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
import info.nightscout.core.fabric.FabricPrivacy
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.database.impl.AppRepository
import info.nightscout.database.impl.ValueWrapper
import info.nightscout.interfaces.aps.APS
@@ -159,7 +159,7 @@ class OpenAPSAMAPlugin @Inject constructor(
)
}
if (!hardLimits.checkHardLimits(profile.dia, R.string.profile_dia, hardLimits.minDia(), hardLimits.maxDia())) return
- if (!hardLimits.checkHardLimits(profile.getIcTimeFromMidnight(Profile.secondsFromMidnight()), R.string.profile_carbs_ratio_value, hardLimits.minIC(), hardLimits.maxIC())) return
+ if (!hardLimits.checkHardLimits(profile.getIcTimeFromMidnight(MidnightUtils.secondsFromMidnight()), R.string.profile_carbs_ratio_value, hardLimits.minIC(), hardLimits.maxIC())) return
if (!hardLimits.checkHardLimits(profile.getIsfMgdl(), R.string.profile_sensitivity_value, HardLimits.MIN_ISF, HardLimits.MAX_ISF)) return
if (!hardLimits.checkHardLimits(profile.getMaxDailyBasal(), R.string.profile_max_daily_basal_value, 0.02, hardLimits.maxBasal())) return
if (!hardLimits.checkHardLimits(pump.baseBasalRate, R.string.current_basal_value, 0.01, hardLimits.maxBasal())) return
diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt
index 47f3ef245f..85aa475426 100644
--- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt
+++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/OpenAPSSMBPlugin.kt
@@ -7,7 +7,7 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.annotations.OpenForTesting
import info.nightscout.androidaps.extensions.target
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.database.impl.AppRepository
import info.nightscout.database.impl.ValueWrapper
import info.nightscout.interfaces.aps.APS
@@ -161,7 +161,7 @@ class OpenAPSSMBPlugin @Inject constructor(
)
}
if (!hardLimits.checkHardLimits(profile.dia, R.string.profile_dia, hardLimits.minDia(), hardLimits.maxDia())) return
- if (!hardLimits.checkHardLimits(profile.getIcTimeFromMidnight(Profile.secondsFromMidnight()), R.string.profile_carbs_ratio_value, hardLimits.minIC(), hardLimits.maxIC())) return
+ if (!hardLimits.checkHardLimits(profile.getIcTimeFromMidnight(MidnightUtils.secondsFromMidnight()), R.string.profile_carbs_ratio_value, hardLimits.minIC(), hardLimits.maxIC())) return
if (!hardLimits.checkHardLimits(profile.getIsfMgdl(), R.string.profile_sensitivity_value, HardLimits.MIN_ISF, HardLimits.MAX_ISF)) return
if (!hardLimits.checkHardLimits(profile.getMaxDailyBasal(), R.string.profile_max_daily_basal_value, 0.02, hardLimits.maxBasal())) return
if (!hardLimits.checkHardLimits(pump.baseBasalRate, R.string.current_basal_value, 0.01, hardLimits.maxBasal())) return
diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/AutotuneCore.kt b/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/AutotuneCore.kt
index 38304a4d76..e0c06e903c 100644
--- a/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/AutotuneCore.kt
+++ b/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/AutotuneCore.kt
@@ -2,7 +2,7 @@ package info.nightscout.plugins.general.autotune
import info.nightscout.interfaces.utils.Round
import info.nightscout.plugins.aps.R
-import info.nightscout.plugins.aps.utils.Percentile
+import info.nightscout.core.utils.Percentile
import info.nightscout.plugins.general.autotune.data.ATProfile
import info.nightscout.plugins.general.autotune.data.LocalInsulin
import info.nightscout.plugins.general.autotune.data.PreppedGlucose
diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/AutotuneIob.kt b/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/AutotuneIob.kt
index 6a7661c676..ea38010c9e 100644
--- a/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/AutotuneIob.kt
+++ b/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/AutotuneIob.kt
@@ -5,7 +5,7 @@ import info.nightscout.androidaps.extensions.durationInMinutes
import info.nightscout.androidaps.extensions.toJson
import info.nightscout.androidaps.extensions.toTemporaryBasal
import info.nightscout.core.iob.round
-import info.nightscout.core.profile.milliSecFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.database.entities.Bolus
import info.nightscout.database.entities.Carbs
import info.nightscout.database.entities.ExtendedBolus
@@ -207,7 +207,7 @@ open class AutotuneIob @Inject constructor(
if (tb.isValid && tb.durationInMinutes > 0) {
val endTimestamp = splittedTimestamp + splittedDuration
while (splittedDuration > 0) {
- if (Profile.milliSecFromMidnight(splittedTimestamp) / cutInMilliSec == Profile.milliSecFromMidnight(endTimestamp) / cutInMilliSec) {
+ if (MidnightUtils.milliSecFromMidnight(splittedTimestamp) / cutInMilliSec == MidnightUtils.milliSecFromMidnight(endTimestamp) / cutInMilliSec) {
val newTb = TemporaryBasal(
isValid = true,
isAbsolute = tb.isAbsolute,
@@ -224,7 +224,7 @@ open class AutotuneIob @Inject constructor(
boluses.addAll(convertToBoluses(newTb, profile, tunedProfile.profile)) //
// required for correct iob calculation with oref0 algo
} else {
- val durationFilled = (cutInMilliSec - Profile.milliSecFromMidnight(splittedTimestamp) % cutInMilliSec)
+ val durationFilled = (cutInMilliSec - MidnightUtils.milliSecFromMidnight(splittedTimestamp) % cutInMilliSec)
val newTb = TemporaryBasal(
isValid = true,
isAbsolute = tb.isAbsolute,
diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/data/ATProfile.kt b/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/data/ATProfile.kt
index 5f474cf01d..ff79d51e06 100644
--- a/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/data/ATProfile.kt
+++ b/plugins/aps/src/main/java/info/nightscout/plugins/general/autotune/data/ATProfile.kt
@@ -7,7 +7,7 @@ import info.nightscout.androidaps.extensions.pureProfileFromJson
import info.nightscout.core.main.R
import info.nightscout.core.profile.ProfileStoreObject
import info.nightscout.core.profile.fromMgdlToUnits
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.database.entities.data.Block
import info.nightscout.interfaces.Config
import info.nightscout.interfaces.GlucoseUnit
@@ -65,7 +65,7 @@ class ATProfile(profile: Profile, var localInsulin: LocalInsulin, val injector:
val avgIC: Double
get() = if (profile.getIcsValues().size == 1) profile.getIcsValues().get(0).value else Round.roundTo(averageProfileValue(profile.getIcsValues()), 0.01)
- fun getBasal(timestamp: Long): Double = basal[Profile.secondsFromMidnight(timestamp) / 3600]
+ fun getBasal(timestamp: Long): Double = basal[MidnightUtils.secondsFromMidnight(timestamp) / 3600]
// for localProfilePlugin Synchronisation
fun basal() = jsonArray(basal)
diff --git a/plugins/automation/build.gradle b/plugins/automation/build.gradle
index 545488c54d..0950a142c7 100644
--- a/plugins/automation/build.gradle
+++ b/plugins/automation/build.gradle
@@ -19,7 +19,7 @@ android {
dependencies {
implementation project(':graphview')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':database:entities')
implementation project(':database:impl')
diff --git a/plugins/automation/src/main/java/info/nightscout/automation/elements/InputTime.kt b/plugins/automation/src/main/java/info/nightscout/automation/elements/InputTime.kt
index 3afe0cc273..e3600294f8 100644
--- a/plugins/automation/src/main/java/info/nightscout/automation/elements/InputTime.kt
+++ b/plugins/automation/src/main/java/info/nightscout/automation/elements/InputTime.kt
@@ -12,7 +12,7 @@ import androidx.fragment.app.FragmentManager
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.TimeFormat
import info.nightscout.automation.R
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.utils.MidnightTime
import info.nightscout.shared.interfaces.ResourceHelper
@@ -60,7 +60,7 @@ class InputTime(private val rh: ResourceHelper, private val dateUtil: DateUtil)
private fun toMills(minutesSinceMidnight: Int): Long = MidnightTime.calcPlusMinutes(minutesSinceMidnight)
- private fun getMinSinceMidnight(time: Long): Int = Profile.secondsFromMidnight(time) / 60
+ private fun getMinSinceMidnight(time: Long): Int = MidnightUtils.secondsFromMidnight(time) / 60
private fun getFragmentManager(context: Context?): FragmentManager? {
return when (context) {
diff --git a/plugins/automation/src/main/java/info/nightscout/automation/elements/InputTimeRange.kt b/plugins/automation/src/main/java/info/nightscout/automation/elements/InputTimeRange.kt
index 585f9036b1..ded97ef653 100644
--- a/plugins/automation/src/main/java/info/nightscout/automation/elements/InputTimeRange.kt
+++ b/plugins/automation/src/main/java/info/nightscout/automation/elements/InputTimeRange.kt
@@ -13,7 +13,7 @@ import androidx.fragment.app.FragmentManager
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.TimeFormat
import info.nightscout.automation.R
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.utils.MidnightTime
import info.nightscout.shared.interfaces.ResourceHelper
@@ -86,7 +86,7 @@ class InputTimeRange(private val rh: ResourceHelper, private val dateUtil: DateU
private fun toMills(minutesSinceMidnight: Int): Long = MidnightTime.calcPlusMinutes(minutesSinceMidnight)
- private fun getMinSinceMidnight(time: Long): Int = Profile.secondsFromMidnight(time) / 60
+ private fun getMinSinceMidnight(time: Long): Int = MidnightUtils.secondsFromMidnight(time) / 60
private fun getFragmentManager(context: Context?): FragmentManager? {
return when (context) {
diff --git a/plugins/automation/src/main/java/info/nightscout/automation/triggers/TriggerRecurringTime.kt b/plugins/automation/src/main/java/info/nightscout/automation/triggers/TriggerRecurringTime.kt
index 170598ec8a..c3f28abe8f 100644
--- a/plugins/automation/src/main/java/info/nightscout/automation/triggers/TriggerRecurringTime.kt
+++ b/plugins/automation/src/main/java/info/nightscout/automation/triggers/TriggerRecurringTime.kt
@@ -8,7 +8,7 @@ import info.nightscout.automation.elements.InputTime
import info.nightscout.automation.elements.InputWeekDay
import info.nightscout.automation.elements.LayoutBuilder
import info.nightscout.automation.elements.StaticLabel
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.utils.JsonHelper
import info.nightscout.interfaces.utils.MidnightTime
@@ -92,7 +92,7 @@ class TriggerRecurringTime(injector: HasAndroidInjector) : Trigger(injector) {
private fun toMills(minutesSinceMidnight: Int): Long = MidnightTime.calcPlusMinutes(minutesSinceMidnight)
- private fun getMinSinceMidnight(time: Long): Int = Profile.secondsFromMidnight(time) / 60
+ private fun getMinSinceMidnight(time: Long): Int = MidnightUtils.secondsFromMidnight(time) / 60
override fun generateDialog(root: LinearLayout) {
LayoutBuilder()
diff --git a/plugins/automation/src/main/java/info/nightscout/automation/triggers/TriggerTimeRange.kt b/plugins/automation/src/main/java/info/nightscout/automation/triggers/TriggerTimeRange.kt
index d8638df250..18867478ad 100644
--- a/plugins/automation/src/main/java/info/nightscout/automation/triggers/TriggerTimeRange.kt
+++ b/plugins/automation/src/main/java/info/nightscout/automation/triggers/TriggerTimeRange.kt
@@ -7,7 +7,7 @@ import info.nightscout.automation.R
import info.nightscout.automation.elements.InputTimeRange
import info.nightscout.automation.elements.LayoutBuilder
import info.nightscout.automation.elements.StaticLabel
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.utils.JsonHelper.safeGetInt
import info.nightscout.interfaces.utils.MidnightTime
@@ -73,7 +73,7 @@ class TriggerTimeRange(injector: HasAndroidInjector) : Trigger(injector) {
private fun toMills(minutesSinceMidnight: Int): Long = MidnightTime.calcPlusMinutes(minutesSinceMidnight)
- private fun getMinSinceMidnight(time: Long): Int = Profile.secondsFromMidnight(time) / 60
+ private fun getMinSinceMidnight(time: Long): Int = MidnightUtils.secondsFromMidnight(time) / 60
override fun generateDialog(root: LinearLayout) {
LayoutBuilder()
diff --git a/plugins/configuration/build.gradle b/plugins/configuration/build.gradle
index d6c349f558..8d21ec056c 100644
--- a/plugins/configuration/build.gradle
+++ b/plugins/configuration/build.gradle
@@ -22,6 +22,6 @@ dependencies {
implementation project(':app-wear-shared:shared')
implementation project(':database:entities')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
}
\ No newline at end of file
diff --git a/plugins/main/build.gradle b/plugins/main/build.gradle
index 8316b164f0..d91f0d606f 100644
--- a/plugins/main/build.gradle
+++ b/plugins/main/build.gradle
@@ -22,7 +22,7 @@ dependencies {
implementation project(':database:impl')
implementation project(':graphview')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':interfaces')
implementation project(':ns-sdk')
diff --git a/plugins/main/src/main/java/info/nightscout/plugins/sync/nsclient/extensions/TherapyEventExtension.kt b/plugins/main/src/main/java/info/nightscout/plugins/sync/nsclient/extensions/TherapyEventExtension.kt
index a3bab73543..1c815ba8d9 100644
--- a/plugins/main/src/main/java/info/nightscout/plugins/sync/nsclient/extensions/TherapyEventExtension.kt
+++ b/plugins/main/src/main/java/info/nightscout/plugins/sync/nsclient/extensions/TherapyEventExtension.kt
@@ -81,11 +81,3 @@ fun TherapyEvent.toJson(isAdd: Boolean, dateUtil: DateUtil): JSONObject =
if (type == TherapyEvent.Type.ANNOUNCEMENT) it.put("isAnnouncement", true)
}
-fun List.isTherapyEventEvent5minBack(time: Long): Boolean {
- for (event in this) {
- if (event.timestamp <= time && event.timestamp > time - T.mins(5).msecs()) {
- return true
- }
- }
- return false
-}
diff --git a/plugins/main/src/main/res/values/strings.xml b/plugins/main/src/main/res/values/strings.xml
index 6b3fb6a6aa..d0ca819e7e 100644
--- a/plugins/main/src/main/res/values/strings.xml
+++ b/plugins/main/src/main/res/values/strings.xml
@@ -278,7 +278,6 @@
Safety
Pump is not temp basal capable
Closed loop mode disabled in preferences
- UAM disabled because it rely on Oref1 sensitivity plugin
Running dev version. Closed loop is disabled.
Closed loop disabled because of running Extended bolus
SMB always and after carbs disabled because active BG source doesn\'t support advanced filtering
diff --git a/plugins/sensitivity/.gitignore b/plugins/sensitivity/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/plugins/sensitivity/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/plugins/sensitivity/build.gradle b/plugins/sensitivity/build.gradle
new file mode 100644
index 0000000000..95cd5b5bbe
--- /dev/null
+++ b/plugins/sensitivity/build.gradle
@@ -0,0 +1,28 @@
+plugins {
+ id 'com.android.library'
+ id 'kotlin-android'
+ id 'kotlin-kapt'
+ id 'kotlin-allopen'
+ id 'com.hiya.jacoco-android'
+}
+
+apply from: "${project.rootDir}/core/core-main/android_dependencies.gradle"
+apply from: "${project.rootDir}/core/core-main/android_module_dependencies.gradle"
+apply from: "${project.rootDir}/core/core-main/allopen_dependencies.gradle"
+apply from: "${project.rootDir}/core/core-main/test_dependencies.gradle"
+apply from: "${project.rootDir}/core/core-main/jacoco_global.gradle"
+android {
+ namespace 'info.nightscout.sensitivity'
+}
+
+
+dependencies {
+ implementation project(':interfaces')
+ implementation project(':app-wear-shared:rx')
+ implementation project(':app-wear-shared:shared')
+ implementation project(':database:entities')
+ implementation project(':database:impl')
+ //implementation project(':core:core-main')
+ implementation project(':core:utils')
+ implementation project(':core:ui')
+}
\ No newline at end of file
diff --git a/plugins/sensitivity/consumer-rules.pro b/plugins/sensitivity/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/plugins/sensitivity/proguard-rules.pro b/plugins/sensitivity/proguard-rules.pro
new file mode 100644
index 0000000000..481bb43481
--- /dev/null
+++ b/plugins/sensitivity/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/plugins/sensitivity/src/main/AndroidManifest.xml b/plugins/sensitivity/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..a5918e68ab
--- /dev/null
+++ b/plugins/sensitivity/src/main/AndroidManifest.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPlugin.kt b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/AbstractSensitivityPlugin.kt
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPlugin.kt
rename to plugins/sensitivity/src/main/java/info/nightscout/sensitivity/AbstractSensitivityPlugin.kt
index 99abdfb6ac..2080fb8866 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPlugin.kt
+++ b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/AbstractSensitivityPlugin.kt
@@ -1,7 +1,6 @@
-package info.nightscout.androidaps.plugins.sensitivity
+package info.nightscout.sensitivity
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.R
import info.nightscout.interfaces.aps.AutosensDataStore
import info.nightscout.interfaces.aps.AutosensResult
import info.nightscout.interfaces.aps.Sensitivity
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityAAPSPlugin.kt b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityAAPSPlugin.kt
similarity index 93%
rename from app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityAAPSPlugin.kt
rename to plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityAAPSPlugin.kt
index 7a6ab4e86a..c7fbf7669d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityAAPSPlugin.kt
+++ b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityAAPSPlugin.kt
@@ -1,10 +1,9 @@
-package info.nightscout.androidaps.plugins.sensitivity
+package info.nightscout.sensitivity
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.annotations.OpenForTesting
-import info.nightscout.androidaps.extensions.isPSEvent5minBack
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
+import info.nightscout.core.utils.Percentile
import info.nightscout.database.entities.TherapyEvent
import info.nightscout.database.impl.AppRepository
import info.nightscout.interfaces.Constants
@@ -15,9 +14,10 @@ import info.nightscout.interfaces.plugin.PluginDescription
import info.nightscout.interfaces.plugin.PluginType
import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.profile.ProfileFunction
-import info.nightscout.plugins.sync.nsclient.extensions.isTherapyEventEvent5minBack
import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag
+import info.nightscout.sensitivity.extensions.isPSEvent5minBack
+import info.nightscout.sensitivity.extensions.isTherapyEventEvent5minBack
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
import info.nightscout.shared.utils.DateUtil
@@ -42,7 +42,7 @@ class SensitivityAAPSPlugin @Inject constructor(
PluginDescription()
.mainType(PluginType.SENSITIVITY)
.pluginIcon(R.drawable.ic_generic_icon)
- .pluginName(R.string.sensitivityaaps)
+ .pluginName(R.string.sensitivity_aaps)
.shortName(R.string.sensitivity_shortname)
.preferencesId(R.xml.pref_absorption_aaps)
.description(R.string.description_sensitivity_aaps),
@@ -104,7 +104,7 @@ class SensitivityAAPSPlugin @Inject constructor(
if (autosensData.validDeviation) if (autosensData.time > toTime - hoursForDetection * 60 * 60 * 1000L) deviationsArray.add(deviation)
if (deviationsArray.size > hoursForDetection * 60 / 5) deviationsArray.removeAt(0)
pastSensitivity += autosensData.pastSensitivity
- val secondsFromMidnight = Profile.secondsFromMidnight(autosensData.time)
+ val secondsFromMidnight = MidnightUtils.secondsFromMidnight(autosensData.time)
if (secondsFromMidnight % 3600 < 2.5 * 60 || secondsFromMidnight % 3600 > 57.5 * 60) {
pastSensitivity += "(" + (secondsFromMidnight / 3600.0).roundToInt() + ")"
}
@@ -116,7 +116,7 @@ class SensitivityAAPSPlugin @Inject constructor(
val sensResult: String
aapsLogger.debug(LTag.AUTOSENS, "Records: $index $pastSensitivity")
Arrays.sort(deviations)
- val percentile = info.nightscout.plugins.aps.utils.Percentile.percentile(deviations, 0.50)
+ val percentile = Percentile.percentile(deviations, 0.50)
val basalOff = percentile * (60.0 / 5.0) / sens
val ratio = 1 + basalOff / profile.getMaxDailyBasal()
sensResult = when {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref1Plugin.kt b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityOref1Plugin.kt
similarity index 93%
rename from app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref1Plugin.kt
rename to plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityOref1Plugin.kt
index 7cc466d1a6..6c3d24e0db 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityOref1Plugin.kt
+++ b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityOref1Plugin.kt
@@ -1,10 +1,9 @@
-package info.nightscout.androidaps.plugins.sensitivity
+package info.nightscout.sensitivity
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.annotations.OpenForTesting
-import info.nightscout.androidaps.extensions.isPSEvent5minBack
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
+import info.nightscout.core.utils.Percentile
import info.nightscout.database.entities.TherapyEvent
import info.nightscout.database.impl.AppRepository
import info.nightscout.interfaces.Constants
@@ -16,11 +15,11 @@ import info.nightscout.interfaces.constraints.Constraint
import info.nightscout.interfaces.constraints.Constraints
import info.nightscout.interfaces.plugin.PluginDescription
import info.nightscout.interfaces.plugin.PluginType
-import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.profile.ProfileFunction
-import info.nightscout.plugins.sync.nsclient.extensions.isTherapyEventEvent5minBack
import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag
+import info.nightscout.sensitivity.extensions.isPSEvent5minBack
+import info.nightscout.sensitivity.extensions.isTherapyEventEvent5minBack
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
import info.nightscout.shared.utils.DateUtil
@@ -45,7 +44,7 @@ class SensitivityOref1Plugin @Inject constructor(
PluginDescription()
.mainType(PluginType.SENSITIVITY)
.pluginIcon(R.drawable.ic_generic_icon)
- .pluginName(R.string.sensitivityoref1)
+ .pluginName(R.string.sensitivity_oref1)
.shortName(R.string.sensitivity_shortname)
.enableByDefault(true)
.preferencesId(R.xml.pref_absorption_oref1)
@@ -123,7 +122,7 @@ class SensitivityOref1Plugin @Inject constructor(
deviationsArray.removeAt(0)
}
pastSensitivity += autosensData.pastSensitivity
- val secondsFromMidnight = Profile.secondsFromMidnight(autosensData.time)
+ val secondsFromMidnight = MidnightUtils.secondsFromMidnight(autosensData.time)
if (secondsFromMidnight % 3600 < 2.5 * 60 || secondsFromMidnight % 3600 > 57.5 * 60) {
pastSensitivity += "(" + (secondsFromMidnight / 3600.0).roundToInt() + ")"
}
@@ -162,8 +161,8 @@ class SensitivityOref1Plugin @Inject constructor(
val sens = profile.getIsfMgdl()
aapsLogger.debug(LTag.AUTOSENS, "Records: $index $pastSensitivity")
Arrays.sort(deviations)
- val pSensitive = info.nightscout.plugins.aps.utils.Percentile.percentile(deviations, 0.50)
- val pResistant = info.nightscout.plugins.aps.utils.Percentile.percentile(deviations, 0.50)
+ val pSensitive = Percentile.percentile(deviations, 0.50)
+ val pResistant = Percentile.percentile(deviations, 0.50)
var basalOff = 0.0
when {
pSensitive < 0 -> { // sensitive
@@ -238,7 +237,7 @@ class SensitivityOref1Plugin @Inject constructor(
get() = SensitivityType.SENSITIVITY_OREF1
override fun isUAMEnabled(value: Constraint): Constraint {
- if (!isEnabled()) value.set(aapsLogger, false, rh.gs(info.nightscout.plugins.R.string.uamdisabledoref1notselected), this)
+ if (!isEnabled()) value.set(aapsLogger, false, rh.gs(R.string.uam_disabled_oref1_not_selected), this)
return value
}
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityWeightedAveragePlugin.kt b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityWeightedAveragePlugin.kt
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityWeightedAveragePlugin.kt
rename to plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityWeightedAveragePlugin.kt
index f20009460f..e93080e3e6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/sensitivity/SensitivityWeightedAveragePlugin.kt
+++ b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/SensitivityWeightedAveragePlugin.kt
@@ -1,11 +1,9 @@
-package info.nightscout.androidaps.plugins.sensitivity
+package info.nightscout.sensitivity
import androidx.collection.LongSparseArray
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.annotations.OpenForTesting
-import info.nightscout.androidaps.extensions.isPSEvent5minBack
-import info.nightscout.core.profile.secondsFromMidnight
+import info.nightscout.core.utils.MidnightUtils
import info.nightscout.database.entities.TherapyEvent
import info.nightscout.database.impl.AppRepository
import info.nightscout.interfaces.Constants
@@ -14,11 +12,11 @@ import info.nightscout.interfaces.aps.AutosensResult
import info.nightscout.interfaces.aps.Sensitivity.SensitivityType
import info.nightscout.interfaces.plugin.PluginDescription
import info.nightscout.interfaces.plugin.PluginType
-import info.nightscout.interfaces.profile.Profile
import info.nightscout.interfaces.profile.ProfileFunction
-import info.nightscout.plugins.sync.nsclient.extensions.isTherapyEventEvent5minBack
import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag
+import info.nightscout.sensitivity.extensions.isPSEvent5minBack
+import info.nightscout.sensitivity.extensions.isTherapyEventEvent5minBack
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
import info.nightscout.shared.utils.DateUtil
@@ -42,7 +40,7 @@ class SensitivityWeightedAveragePlugin @Inject constructor(
PluginDescription()
.mainType(PluginType.SENSITIVITY)
.pluginIcon(R.drawable.ic_generic_icon)
- .pluginName(R.string.sensitivityweightedaverage)
+ .pluginName(R.string.sensitivity_weighted_average)
.shortName(R.string.sensitivity_shortname)
.preferencesId(R.xml.pref_absorption_aaps)
.description(R.string.description_sensitivity_weighted_average),
@@ -110,7 +108,7 @@ class SensitivityWeightedAveragePlugin @Inject constructor(
val reverseWeight = (toTime - autosensData.time) / (5 * 60 * 1000L)
if (autosensData.validDeviation) data.append(reverseWeight, deviation)
pastSensitivity += autosensData.pastSensitivity
- val secondsFromMidnight = Profile.secondsFromMidnight(autosensData.time)
+ val secondsFromMidnight = MidnightUtils.secondsFromMidnight(autosensData.time)
if (secondsFromMidnight % 3600 < 2.5 * 60 || secondsFromMidnight % 3600 > 57.5 * 60) {
pastSensitivity += "(" + (secondsFromMidnight / 3600.0).roundToInt() + ")"
}
diff --git a/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/extensions/ProfileSwitchExtensions.kt b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/extensions/ProfileSwitchExtensions.kt
new file mode 100644
index 0000000000..dc3a566333
--- /dev/null
+++ b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/extensions/ProfileSwitchExtensions.kt
@@ -0,0 +1,16 @@
+package info.nightscout.sensitivity.extensions
+
+import info.nightscout.database.entities.ProfileSwitch
+import info.nightscout.shared.utils.T
+
+fun List.isPSEvent5minBack(time: Long): Boolean {
+ for (event in this) {
+ if (event.timestamp <= time && event.timestamp > time - T.mins(5).msecs()) {
+ if (event.duration == 0L) {
+ //aapsLogger.debug(LTag.DATABASE, "Found ProfileSwitch event for time: " + dateUtil.dateAndTimeString(time) + " " + event.toString())
+ return true
+ }
+ }
+ }
+ return false
+}
diff --git a/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/extensions/TherapyEventExtensions.kt b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/extensions/TherapyEventExtensions.kt
new file mode 100644
index 0000000000..0788398e6c
--- /dev/null
+++ b/plugins/sensitivity/src/main/java/info/nightscout/sensitivity/extensions/TherapyEventExtensions.kt
@@ -0,0 +1,13 @@
+package info.nightscout.sensitivity.extensions
+
+import info.nightscout.database.entities.TherapyEvent
+import info.nightscout.shared.utils.T
+
+fun List.isTherapyEventEvent5minBack(time: Long): Boolean {
+ for (event in this) {
+ if (event.timestamp <= time && event.timestamp > time - T.mins(5).msecs()) {
+ return true
+ }
+ }
+ return false
+}
\ No newline at end of file
diff --git a/plugins/sensitivity/src/main/res/values/strings.xml b/plugins/sensitivity/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..065f277f08
--- /dev/null
+++ b/plugins/sensitivity/src/main/res/values/strings.xml
@@ -0,0 +1,12 @@
+
+
+ SENS
+ Sensitivity Oref1
+ Sensitivity AAPS
+ Sensitivity WeightedAverage
+ Sensitivity is calculated the same way like Oref0, but you can specify timeframe to the past. Minimal carb absorption is calculated from max carb absorption time from preferences.
+ Sensitivity is calculated from 8h or 24h data in the past (using either which is more sensitive). Carbs (if not absorbed) are cut after time specified in preferences. Plugin also calculates UAM.
+ Sensitivity is calculated as a weighted average from deviations. Newer deviations have higher weight. Minimal carb absorption is calculated from max carb absorption time from preferences. This algorithm is the fastest in following sensitivity changes.
+ UAM disabled because it rely on Oref1 sensitivity plugin
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/pref_absorption_aaps.xml b/plugins/sensitivity/src/main/res/xml/pref_absorption_aaps.xml
similarity index 100%
rename from app/src/main/res/xml/pref_absorption_aaps.xml
rename to plugins/sensitivity/src/main/res/xml/pref_absorption_aaps.xml
diff --git a/app/src/main/res/xml/pref_absorption_oref1.xml b/plugins/sensitivity/src/main/res/xml/pref_absorption_oref1.xml
similarity index 100%
rename from app/src/main/res/xml/pref_absorption_oref1.xml
rename to plugins/sensitivity/src/main/res/xml/pref_absorption_oref1.xml
diff --git a/pump/combo/build.gradle b/pump/combo/build.gradle
index 54727a2f18..c8f482ed93 100644
--- a/pump/combo/build.gradle
+++ b/pump/combo/build.gradle
@@ -19,7 +19,7 @@ dependencies {
implementation project(':libraries')
implementation project(':core:core-main')
implementation project(':core:ui')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':app-wear-shared:rx')
implementation project(':app-wear-shared:shared')
implementation project(':interfaces')
diff --git a/pump/dana/build.gradle b/pump/dana/build.gradle
index 218fedf329..b5ce512315 100644
--- a/pump/dana/build.gradle
+++ b/pump/dana/build.gradle
@@ -28,7 +28,7 @@ android {
dependencies {
implementation project(':libraries')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':app-wear-shared:rx')
implementation project(':app-wear-shared:shared')
implementation project(':interfaces')
diff --git a/pump/danar/build.gradle b/pump/danar/build.gradle
index f60b31fac2..61303f823e 100644
--- a/pump/danar/build.gradle
+++ b/pump/danar/build.gradle
@@ -19,7 +19,7 @@ dependencies {
implementation project(':app-wear-shared:rx')
implementation project(':app-wear-shared:shared')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':pump:dana')
implementation project(':interfaces')
diff --git a/pump/danars/build.gradle b/pump/danars/build.gradle
index 52fd71aed2..d5292eb455 100644
--- a/pump/danars/build.gradle
+++ b/pump/danars/build.gradle
@@ -32,7 +32,7 @@ android {
dependencies {
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':pump:dana')
implementation project(':app-wear-shared:rx')
diff --git a/pump/diaconn/build.gradle b/pump/diaconn/build.gradle
index 3356efd9d3..de93d0684e 100644
--- a/pump/diaconn/build.gradle
+++ b/pump/diaconn/build.gradle
@@ -30,7 +30,7 @@ dependencies {
implementation project(':app-wear-shared:shared')
implementation project(':libraries')
implementation project(':interfaces')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:core-main')
api "androidx.room:room-ktx:$room_version"
diff --git a/pump/eopatch/build.gradle b/pump/eopatch/build.gradle
index 2a7f41e670..b1bc664eeb 100644
--- a/pump/eopatch/build.gradle
+++ b/pump/eopatch/build.gradle
@@ -27,7 +27,7 @@ dependencies {
implementation project(':database:entities')
implementation project(':database:impl')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':interfaces')
diff --git a/pump/medtronic/build.gradle b/pump/medtronic/build.gradle
index cfccfd972d..9f1ae45f07 100644
--- a/pump/medtronic/build.gradle
+++ b/pump/medtronic/build.gradle
@@ -25,6 +25,6 @@ dependencies {
implementation project(':pump:pump-core')
implementation project(':pump:rileylink')
implementation project(':interfaces')
- implementation project(path: ':core:fabric')
+ implementation project(path: ':core:utils')
testImplementation project(path: ':database:impl')
}
diff --git a/pump/omnipod-dash/build.gradle b/pump/omnipod-dash/build.gradle
index 460f2620e2..c18f325187 100644
--- a/pump/omnipod-dash/build.gradle
+++ b/pump/omnipod-dash/build.gradle
@@ -32,7 +32,7 @@ dependencies {
implementation project(':app-wear-shared:shared')
implementation project(':libraries')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':pump:pump-common')
implementation project(':pump:omnipod-common')
diff --git a/pump/omnipod-eros/build.gradle b/pump/omnipod-eros/build.gradle
index 8391aeb4d9..fd7eca4d58 100644
--- a/pump/omnipod-eros/build.gradle
+++ b/pump/omnipod-eros/build.gradle
@@ -32,7 +32,7 @@ dependencies {
implementation project(':app-wear-shared:shared')
implementation project(':libraries')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':core:ui')
implementation project(':pump:pump-common')
implementation project(':pump:pump-core')
diff --git a/pump/pump-common/build.gradle b/pump/pump-common/build.gradle
index bc0feeff2c..ae3686ebb9 100644
--- a/pump/pump-common/build.gradle
+++ b/pump/pump-common/build.gradle
@@ -17,7 +17,7 @@ android {
dependencies {
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':app-wear-shared:rx')
implementation project(':app-wear-shared:shared')
implementation project(':interfaces')
diff --git a/settings.gradle b/settings.gradle
index 802870db56..05c2127f78 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -3,7 +3,7 @@ include ':wear'
include ':database:entities'
include ':database:impl'
include ':core:core-main'
-include ':core:fabric'
+include ':core:utils'
include ':core:ui'
include ':app-wear-shared:rx'
include ':app-wear-shared:shared'
@@ -16,9 +16,10 @@ include ':implementation'
include ':interfaces'
include ':plugins:aps'
include ':plugins:automation'
+include ':plugins:configuration'
include ':plugins:main'
include ':plugins:openhumans'
-include ':plugins:configuration'
+include ':plugins:sensitivity'
include ':pump:combo'
include ':pump:dana'
include ':pump:danar'
diff --git a/ui/build.gradle b/ui/build.gradle
index f7123159ce..91d20109a6 100644
--- a/ui/build.gradle
+++ b/ui/build.gradle
@@ -23,7 +23,7 @@ dependencies {
implementation project(':database:entities')
implementation project(':database:impl')
implementation project(':core:core-main')
- implementation project(':core:fabric')
+ implementation project(':core:utils')
implementation project(':interfaces')
implementation project(':core:ui')
}
\ No newline at end of file