Sensitivity module

This commit is contained in:
Milos Kozak 2022-11-21 20:26:06 +01:00
parent 7725812e4a
commit 33dcf6479d
122 changed files with 392 additions and 379 deletions

View file

@ -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')

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -81,15 +81,15 @@
<string name="configbuilder_sensitivity">Sensitiwiteit opsporing</string>
<string name="configbuilder_sensitivity_description">Watter sensitiwiteit algoritme moet gebruik word?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensitiwiteit Oref1</string>
<string name="sensitivityaaps">Sensitiwiteit AAPS</string>
<string name="sensitivity_oref1">Sensitiwiteit Oref1</string>
<string name="sensitivity_aaps">Sensitiwiteit AAPS</string>
<string name="absorptionsettings_title">Absorpsie instellings</string>
<string name="absorption_maxtime_title">Maaltyd max\ks absorpsie tyd [h]</string>
<string name="absorption_maxtime_summary">Tyd in ure waarna verwag word dat alle koolhidrate uit maaltyd geabsorbeer sal wees</string>
<string name="keep_screen_on_title">Hou skerm aktief</string>
<string name="keep_screen_on_summary">Verhoed dat Android skerm afskakel. Dit sal baie meer energie vereis wanneer nie in krag prop is nie.</string>
<string name="sensitivity_warning">Deur Autosense aan te skakel onthou om alle koolhidrate in te voer Andersins sal koolhidrate dwalinge verkeerdelik geïdentifiseer word as sensitiwiteit veranderinge!!</string>
<string name="sensitivityweightedaverage">Sensitiwiteit GeweegdeGemiddelde</string>
<string name="sensitivity_weighted_average">Sensitiwiteit GeweegdeGemiddelde</string>
<string name="notloadedplugins">Nie alle profiele gelaai!</string>
<string name="valuesnotstored">Waardes nie gestoor!</string>
<string name="invalid">ONGELDIG</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">Определяне на чувствителност</string>
<string name="configbuilder_sensitivity_description">Кой алгоритъм за определяне на чувствителността да се използва?</string>
<string name="sensitivity_shortname">ЧУВСТВ</string>
<string name="sensitivityoref1">Чрез Oref1</string>
<string name="sensitivityaaps">чрез AAPS</string>
<string name="sensitivity_oref1">Чрез Oref1</string>
<string name="sensitivity_aaps">чрез AAPS</string>
<string name="absorptionsettings_title">Настройки за абсорбция</string>
<string name="absorption_maxtime_title">Максимално време за усвояване на храненето [ч]</string>
<string name="absorption_maxtime_summary">Брой часове, за които се очаква храненето да бъде напълно усвоено в организма</string>
<string name="keep_screen_on_title">Винаги включен екран</string>
<string name="keep_screen_on_summary">Предотвратяване на андроид да изключва екрана. Това ще доведе до консумацията на много енергия, когато устройството не е включено в контакта.</string>
<string name="sensitivity_warning">Когато включите Autosense feature трябва да въвеждате ВСИЧКИ въглехидрати. В противен случай те ще се изчисляват грешно като повишена чувствителност!!</string>
<string name="sensitivityweightedaverage">чрез Среднопретеглената стойност</string>
<string name="sensitivity_weighted_average">чрез Среднопретеглената стойност</string>
<string name="notloadedplugins">Не всички профили са заредени!</string>
<string name="valuesnotstored">Стойностите не са запазени!</string>
<string name="invalid">НЕВАЛИДНО</string>

View file

@ -122,15 +122,15 @@
<string name="configbuilder_sensitivity">Detekce citlivosti</string>
<string name="configbuilder_sensitivity_description">Jaký druh algoritmu pro detekci citlivosti chcete použít?</string>
<string name="sensitivity_shortname">SENZ</string>
<string name="sensitivityoref1">Sensitivita Oref1</string>
<string name="sensitivityaaps">Sensitivita AAPS</string>
<string name="sensitivity_oref1">Sensitivita Oref1</string>
<string name="sensitivity_aaps">Sensitivita AAPS</string>
<string name="absorptionsettings_title">Nastavení absorpce sacharidů</string>
<string name="absorption_maxtime_title">Max. doba absorpce sacharidů [h]</string>
<string name="absorption_maxtime_summary">Čas v hodinách, ve kterém předpokládáme, že všechny sacharidy budou strávené</string>
<string name="keep_screen_on_title">Nechat obrazovku zapnutou</string>
<string name="keep_screen_on_summary">Zabránit Androidu ve zhasínání obrazovky. Bez připojení do nabíječky vybije velice rychle baterii!</string>
<string name="sensitivity_warning">Při zapnuté detekci sensitivity nezapomeňte vkládat všechny sacharidy. Jinak budou odchylky mylně vyhodnocovány jako změna sensitivity !!</string>
<string name="sensitivityweightedaverage">Sensitivita vážený průměr</string>
<string name="sensitivity_weighted_average">Sensitivita vážený průměr</string>
<string name="notloadedplugins">Všechny profily nenačteny!</string>
<string name="valuesnotstored">Hodnoty nejsou uloženy!</string>
<string name="invalid">NEPLATNÝ</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">Detektering af følsomhed</string>
<string name="configbuilder_sensitivity_description">Hvilken følsomhedsalgoritme skal anvendes?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Følsomhed Oref1</string>
<string name="sensitivityaaps">Følsomhed AAPS</string>
<string name="sensitivity_oref1">Følsomhed Oref1</string>
<string name="sensitivity_aaps">Følsomhed AAPS</string>
<string name="absorptionsettings_title">Indstillinger for absorbering</string>
<string name="absorption_maxtime_title">Måltid max absorptionstid [h]</string>
<string name="absorption_maxtime_summary">Tid i timer, hvor det forventes at alle kulhydrater fra måltidet vil blive absorberet</string>
<string name="keep_screen_on_title">Hold skærmen tændt</string>
<string name="keep_screen_on_summary">Forhindrer Android i at slukke for skærmen. Det vil forbruge meget energi, når den ikke er tilsluttet stikkontakt.</string>
<string name="sensitivity_warning">Ved at slå funktionen Autosense til husk at indtaste alle spiste kulhydrater. Ellers vil kulhydrat afvigelser blive identificeret forkert som følsomheds ændring !!</string>
<string name="sensitivityweightedaverage">Følsomhed Vægtet Gennemsnit</string>
<string name="sensitivity_weighted_average">Følsomhed Vægtet Gennemsnit</string>
<string name="notloadedplugins">Ikke alle profiler er indlæst!</string>
<string name="valuesnotstored">Værdier ikke gemt!</string>
<string name="invalid">UGYLDIG</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">Sensitivitätserkennung</string>
<string name="configbuilder_sensitivity_description">Welcher Sensitivitäts-Algorithmus soll verwendet werden?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensitivität Oref1</string>
<string name="sensitivityaaps">Sensitivität AAPS</string>
<string name="sensitivity_oref1">Sensitivität Oref1</string>
<string name="sensitivity_aaps">Sensitivität AAPS</string>
<string name="absorptionsettings_title">Resorptions-Einstellungen</string>
<string name="absorption_maxtime_title">Maximale Essens-Resorptionszeit [h]</string>
<string name="absorption_maxtime_summary">Zeit in Stunden, in der zu erwarten ist, dass alle Kohlenhydrate resorbiert sein werden.</string>
<string name="keep_screen_on_title">Bildschirm aktiv lassen</string>
<string name="keep_screen_on_summary">Hindere Android daran, den Bildschirm abzuschalten. Dies erhöht den Energieverbrauch, wenn das Gerät nicht an einem Ladegerät angeschlossen ist.</string>
<string name="sensitivity_warning">Stelle bei aktivierter Autosens-Funktion sicher, dass du alle eingenommenen Kohlenhydrate eingibst. Ansonsten können die Kohlenhydrat-Abweichungen zu falschen Sensitivitätswerten führen!</string>
<string name="sensitivityweightedaverage">Durchschnittliche Sensitivität</string>
<string name="sensitivity_weighted_average">Durchschnittliche Sensitivität</string>
<string name="notloadedplugins">Es sind nicht alle Profile geladen!</string>
<string name="valuesnotstored">Werte nicht gespeichert!</string>
<string name="invalid">Ungültig</string>

View file

@ -80,15 +80,15 @@
<string name="configbuilder_sensitivity">Ανίχνευση ευαισθησίας</string>
<string name="configbuilder_sensitivity_description">Ποιος αλγόριθμος ευαισθησίας να χρησιμοποιηθεί;</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Ευαισθησία Oref1</string>
<string name="sensitivityaaps">Ευαισθησία AAPS</string>
<string name="sensitivity_oref1">Ευαισθησία Oref1</string>
<string name="sensitivity_aaps">Ευαισθησία AAPS</string>
<string name="absorptionsettings_title">Ρύθμιση απορρόφησης</string>
<string name="absorption_maxtime_title">Μέγιστος χρόνος απορρόφησης γεύματος [h]</string>
<string name="absorption_maxtime_summary">Χρόνος σε ώρες που περιμένουμε να απορροφηθούν όλοι οι υδατάνθρακες ενός γεύματος</string>
<string name="keep_screen_on_title">Κρατήστε την οθόνη ενεργή</string>
<string name="keep_screen_on_summary">Αποτρέψετε το Android να απενεργοποιήσει την οθόνη. Χωρίς σύνδεση με το φορτιστή, αποφορτίζει πολύ γρήγορα την μπαταρία.</string>
<string name="sensitivity_warning">Ενεργοποιώντας το autosense θυμηθείτε να εισάγετε όλους τους υδατάνθρακες. Διαφορετικά, οι αποκλίσεις των υδατανθράκων θα εντοπιστούν λανθασμένα ως αλλαγή ευαισθησίας!!</string>
<string name="sensitivityweightedaverage">Ευαισθησία WeightedAverage</string>
<string name="sensitivity_weighted_average">Ευαισθησία WeightedAverage</string>
<string name="notloadedplugins">Δεν έχουν φορτωθεί όλα τα προφίλ!</string>
<string name="valuesnotstored">Οι τιμές δεν αποθηκεύτηκαν!</string>
<string name="invalid">ΜΗ ΕΓΚΥΡΟ</string>

View file

@ -122,15 +122,15 @@
<string name="configbuilder_sensitivity">Detección sensibilidad</string>
<string name="configbuilder_sensitivity_description">¿Qué algoritmo de sensibilidad debería usar?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensibilidad Oref1</string>
<string name="sensitivityaaps">Sensibilidad AAPS</string>
<string name="sensitivity_oref1">Sensibilidad Oref1</string>
<string name="sensitivity_aaps">Sensibilidad AAPS</string>
<string name="absorptionsettings_title">Ajustes de absorción</string>
<string name="absorption_maxtime_title">Tiempo máximo de absorción de la comida [h]</string>
<string name="absorption_maxtime_summary">Tiempo en horas en el que se espera que todos los carbohidratos hayan sido absorbidos</string>
<string name="keep_screen_on_title">Mantener la pantalla activa</string>
<string name="keep_screen_on_summary">Evita que Android apague la pantalla. Consume mucha batería cuando el teléfono no está conectado al cargador</string>
<string name="sensitivity_warning">Al activar Autosens, recuerda introducir todos carbohidratos que has comido, sino, las desviaciones de carbohidratos serán identificados incorrectamente, como un cambio de sensibilidad</string>
<string name="sensitivityweightedaverage">Sensibilidad promedio ponderada</string>
<string name="sensitivity_weighted_average">Sensibilidad promedio ponderada</string>
<string name="notloadedplugins">Faltan perfiles por cargar!</string>
<string name="valuesnotstored">Valores no guardados!</string>
<string name="invalid">INVÁLIDO</string>

View file

@ -123,15 +123,15 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="configbuilder_sensitivity">Estimation de Sensibilité</string>
<string name="configbuilder_sensitivity_description">Quel algorithme de Sensibilité doit être utilisé ?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensibilité Oref1</string>
<string name="sensitivityaaps">Sensibilité AAPS </string>
<string name="sensitivity_oref1">Sensibilité Oref1</string>
<string name="sensitivity_aaps">Sensibilité AAPS </string>
<string name="absorptionsettings_title">Paramètres dabsorption</string>
<string name="absorption_maxtime_title">Durée max dabsorption d\'un repas [h]</string>
<string name="absorption_maxtime_summary">Le temps estimé en heures pour une absorbption totale des glucides dun repas</string>
<string name="keep_screen_on_title">Garder l\'écran allumé</string>
<string name="keep_screen_on_summary">Empêcher Android d\'éteindre l\'écran. Ceci consommera beaucoup de batterie lorsque vous nêtes pas connecté à une prise de courant.</string>
<string name="sensitivity_warning">En activant la fonction Autosens, noubliez pas de rentrer tous les glucides consommés. Sinon les déviations de glucides seront incorrectement identifiées pour les changements de sensibilité !!</string>
<string name="sensitivityweightedaverage">Sensibilité avec moyenne pondérée</string>
<string name="sensitivity_weighted_average">Sensibilité avec moyenne pondérée</string>
<string name="notloadedplugins">Les profils ne sont pas tous téléchargés !</string>
<string name="valuesnotstored">Valeurs non enregistrées !</string>
<string name="invalid">INVALIDE</string>

View file

@ -121,15 +121,15 @@
<string name="configbuilder_sensitivity">Rilevamento sensibilità</string>
<string name="configbuilder_sensitivity_description">Quale algoritmo di sensibilità dovrebbe essere usato?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensibilità Oref1</string>
<string name="sensitivityaaps">Sensibilità AAPS</string>
<string name="sensitivity_oref1">Sensibilità Oref1</string>
<string name="sensitivity_aaps">Sensibilità AAPS</string>
<string name="absorptionsettings_title">Impostazioni assorbimento</string>
<string name="absorption_maxtime_title">Max tempo assorbimento pasto [h]</string>
<string name="absorption_maxtime_summary">Tempo in ore in cui è previsto che tutti i carboidrati del pasto vengano assorbiti</string>
<string name="keep_screen_on_title">Mantieni lo schermo acceso</string>
<string name="keep_screen_on_summary">Evita che Android spenga lo schermo. Consumerà molta energia quando non è collegato alla presa di corrente.</string>
<string name="sensitivity_warning">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à !!</string>
<string name="sensitivityweightedaverage">Sensibilità WeightedAverage</string>
<string name="sensitivity_weighted_average">Sensibilità WeightedAverage</string>
<string name="notloadedplugins">Non tutti i profili caricati!</string>
<string name="valuesnotstored">Valori non memorizzati!</string>
<string name="invalid">NON VALIDO</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">זיהוי רגישות</string>
<string name="configbuilder_sensitivity_description">באיזה אלגוריתם זיהוי רגישות להשתמש?</string>
<string name="sensitivity_shortname">רגישות</string>
<string name="sensitivityoref1">רגישות Oref1</string>
<string name="sensitivityaaps">רגישות AAPS</string>
<string name="sensitivity_oref1">רגישות Oref1</string>
<string name="sensitivity_aaps">רגישות AAPS</string>
<string name="absorptionsettings_title">הגדרות ספיגה</string>
<string name="absorption_maxtime_title">זמן ספיגה מקסימלי של הארוחה [h]</string>
<string name="absorption_maxtime_summary">מספר השעות בהן צפוי שכל הפחמימות מארוחה ייספגו</string>
<string name="keep_screen_on_title">השאר את המסך דולק</string>
<string name="keep_screen_on_summary">מניעת כיבוי המסך. הדבר צורך הרבה כח סוללה.</string>
<string name="sensitivity_warning">בהפעלת פונקציית ה-Autosens יש לזכור שחייבים להזין למערכת את כל הפחמימות שנאכלו. אחרת פחמימות לא יזוהו נכון כשינוי ברגישות!</string>
<string name="sensitivityweightedaverage">רגישות משוקללת ממוצעת</string>
<string name="sensitivity_weighted_average">רגישות משוקללת ממוצעת</string>
<string name="notloadedplugins">לא כל הפרופילים נטענו!</string>
<string name="valuesnotstored">הערכים לא נשמרו</string>
<string name="invalid">לא חוקי</string>

View file

@ -115,15 +115,15 @@
<string name="configbuilder_sensitivity">민감도 감지</string>
<string name="configbuilder_sensitivity_description">어떤 민감도 알고리즘을 사용하겠습니까?</string>
<string name="sensitivity_shortname">민감도</string>
<string name="sensitivityoref1">민감도 Oref1</string>
<string name="sensitivityaaps">민감도 AAPS</string>
<string name="sensitivity_oref1">민감도 Oref1</string>
<string name="sensitivity_aaps">민감도 AAPS</string>
<string name="absorptionsettings_title">흡수 설정</string>
<string name="absorption_maxtime_title">식사 최대 흡수 시간 [h]</string>
<string name="absorption_maxtime_summary">식사로 섭취한 탄수화물이 모두 흡수될기까지 예상되는 시간</string>
<string name="keep_screen_on_title">화면을 켜진 상태로 유지</string>
<string name="keep_screen_on_summary">안드로이드의 화면이 꺼지는 것을 방지합니다. 전원이 공급되어 있지 않으면 전력소모가 큽니다.</string>
<string name="sensitivity_warning">Autosense 기능을 켜면 모든 섭취된 탄수화물양을 입력하십시오. 그렇지 않으면 탄수화물 편차(deviations)가 민감도 변화로 잘못 인식될것입니다!!</string>
<string name="sensitivityweightedaverage">민감도 가중평균</string>
<string name="sensitivity_weighted_average">민감도 가중평균</string>
<string name="notloadedplugins">모든 프로파일이 로드되지 않았습니다.</string>
<string name="valuesnotstored">값이 저장되지 않았습니다!</string>
<string name="invalid">유효하지 않음</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">Jautrumo nustatymas</string>
<string name="configbuilder_sensitivity_description">Kurį jautrumo nustatymo algoritmą naudoti?</string>
<string name="sensitivity_shortname">JAUTR</string>
<string name="sensitivityoref1">Jautrumo nustatymo algoritmas Oref1</string>
<string name="sensitivityaaps">Jautrumo nustatymo algoritmas AAPS</string>
<string name="sensitivity_oref1">Jautrumo nustatymo algoritmas Oref1</string>
<string name="sensitivity_aaps">Jautrumo nustatymo algoritmas AAPS</string>
<string name="absorptionsettings_title">Angliavandenių įsisavinimo parametrai</string>
<string name="absorption_maxtime_title">Maksimalus angliavandenių įsisavinimo laikas [h]</string>
<string name="absorption_maxtime_summary">Laikas, per kurį visi maisto angliavandeniai, tikėtina, bus įsisavinti</string>
<string name="keep_screen_on_title">Laikyti ekraną įjungtą</string>
<string name="keep_screen_on_summary">Neleidžia Android sistemai išjungti ekrano. Naudojama daug energijos, jei telefonas neprijungtas prie maitinimo šaltinio.</string>
<string name="sensitivity_warning">Įjungę Autosens funkciją nepamirškite įvedinėti visus valgomus angliavandenius. To nedarant, angliavandenių sukeliami gliukozės svyravimai bus klaidingai identifikuojami kaip jautrumo pasikeitimai!</string>
<string name="sensitivityweightedaverage">Jautrumas pagal svertinį vidurkį</string>
<string name="sensitivity_weighted_average">Jautrumas pagal svertinį vidurkį</string>
<string name="notloadedplugins">Ne visi profiliai įkelti!</string>
<string name="valuesnotstored">Reikšmės neišsaugotos!</string>
<string name="invalid">KLAIDA</string>

View file

@ -122,15 +122,15 @@
<string name="configbuilder_sensitivity">Gevoeligheid detectie</string>
<string name="configbuilder_sensitivity_description">Welk gevoeligheid algoritme moet worden gebruikt?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Gevoeligheid Oref1</string>
<string name="sensitivityaaps">Gevoeligheid AAPS</string>
<string name="sensitivity_oref1">Gevoeligheid Oref1</string>
<string name="sensitivity_aaps">Gevoeligheid AAPS</string>
<string name="absorptionsettings_title">Opname instellingen</string>
<string name="absorption_maxtime_title">Max absorptietijd maaltijd [uur]</string>
<string name="absorption_maxtime_summary">Verwachte tijd in uren totdat alle koolhydraten opgenomen zijn</string>
<string name="keep_screen_on_title">Laat scherm aan</string>
<string name="keep_screen_on_summary">Voorkomen dat Android het scherm uitschakelt. Dit kost veel accuvoeding als je de telefoon niet aan de oplader hebt.</string>
<string name="sensitivity_warning">Bij het gebruik van Autosense, vergeet niet alle opgenomen koolhydraten in te geven. Anders zullen BG wijzigingen door maaltijden foutief geïnterpreteerd worden !!</string>
<string name="sensitivityweightedaverage">Gemiddelde gevoeligheid</string>
<string name="sensitivity_weighted_average">Gemiddelde gevoeligheid</string>
<string name="notloadedplugins">Niet alle profielen zijn geladen!</string>
<string name="valuesnotstored">Waarden niet opgeslagen!</string>
<string name="invalid">Ongeldig</string>

View file

@ -122,15 +122,15 @@
<string name="configbuilder_sensitivity">Sensitivitetsdeteksjon</string>
<string name="configbuilder_sensitivity_description">Hvilken sensitivitetsalgoritme skal benyttes?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensitivitet Oref1</string>
<string name="sensitivityaaps">Sensitivitet AAPS</string>
<string name="sensitivity_oref1">Sensitivitet Oref1</string>
<string name="sensitivity_aaps">Sensitivitet AAPS</string>
<string name="absorptionsettings_title">Absorpsjonsinnstillinger</string>
<string name="absorption_maxtime_title">Maks absorpsjonstid for måltid [h]</string>
<string name="absorption_maxtime_summary">Tid i timer hvor det forventes at alle karbohydrater fra måltid vil være absorbert</string>
<string name="keep_screen_on_title">Hold skjermen påslått</string>
<string name="keep_screen_on_summary">Forhindre Android fra å slå av skjermen. Mobilen vil bruke mye batteri hvis den ikke plugges til strømledning.</string>
<string name="sensitivity_warning">Hvis du slår på Autosense-funksjonen må du huske å angi alle spiste karbohydrater. Ellers vil KH-avvik gi feil i sensitivitetsberegningen !!</string>
<string name="sensitivityweightedaverage">Sensitivitet vektet middelverdi</string>
<string name="sensitivity_weighted_average">Sensitivitet vektet middelverdi</string>
<string name="notloadedplugins">Ikke alle profiler ble lastet!</string>
<string name="valuesnotstored">Verdier ikke lagret!</string>
<string name="invalid">UGYLDIG</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">Detekcja wrażliwości (sensitivity)</string>
<string name="configbuilder_sensitivity_description">Który algorytm wrażliwości powinien być używany?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Wrażliwość Oref1</string>
<string name="sensitivityaaps">Wrażliwość AAPS</string>
<string name="sensitivity_oref1">Wrażliwość Oref1</string>
<string name="sensitivity_aaps">Wrażliwość AAPS</string>
<string name="absorptionsettings_title">Ustawienia wchłaniania</string>
<string name="absorption_maxtime_title">Maks. czas wchłaniania posiłku [h]</string>
<string name="absorption_maxtime_summary">Oczekiwany czas w godzinach, w którym wszystkie węglowodany zostają wchłonięte</string>
<string name="keep_screen_on_title">Utrzymuj ekran włączony</string>
<string name="keep_screen_on_summary">Nie pozwól, aby system Android wyłączał ekran. Zwiększy to zużycie energii, gdy zasilanie sieciowe jest wyłączone.</string>
<string name="sensitivity_warning">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 !!</string>
<string name="sensitivityweightedaverage">Wrażliwość ŚredniaWażona</string>
<string name="sensitivity_weighted_average">Wrażliwość ŚredniaWażona</string>
<string name="notloadedplugins">Nie wszystkie profile zostały załadowane!</string>
<string name="valuesnotstored">Wartości nie są przechowywane!</string>
<string name="invalid">NIEPRAWIDŁOWY</string>

View file

@ -107,15 +107,15 @@
<string name="configbuilder_sensitivity">Detecção sensibilidade</string>
<string name="configbuilder_sensitivity_description">Que algoritmo de sensibilidade deve ser usado?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensibilidade Oref1</string>
<string name="sensitivityaaps">Sensibilidade AAPS</string>
<string name="sensitivity_oref1">Sensibilidade Oref1</string>
<string name="sensitivity_aaps">Sensibilidade AAPS</string>
<string name="absorptionsettings_title">Configurações de absorção</string>
<string name="absorption_maxtime_title">Tempo máx. absorção refeição [h]</string>
<string name="absorption_maxtime_summary">Tempo em horas, espectável para que todos os hidratos de carbono da refeição sejam absorvidos</string>
<string name="keep_screen_on_title">Manter a tela ligada</string>
<string name="keep_screen_on_summary">Impedir Android de desligar o ecrã. Isto irá consumir muita bateria quando não ligado ao carregador.</string>
<string name="sensitivity_warning">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!!</string>
<string name="sensitivityweightedaverage">Média ponderada da Sensibilidade</string>
<string name="sensitivity_weighted_average">Média ponderada da Sensibilidade</string>
<string name="notloadedplugins">Nem todos perfis foram carregados!</string>
<string name="valuesnotstored">Valores não guardados!</string>
<string name="invalid">INVÁLIDO</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">Detecção sensibilidade</string>
<string name="configbuilder_sensitivity_description">Que algoritmo de sensibilidade deve ser usado?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensibilidade Oref1</string>
<string name="sensitivityaaps">Sensibilidade AAPS</string>
<string name="sensitivity_oref1">Sensibilidade Oref1</string>
<string name="sensitivity_aaps">Sensibilidade AAPS</string>
<string name="absorptionsettings_title">Definições de absorção</string>
<string name="absorption_maxtime_title">Tempo máx. absorção refeição [h]</string>
<string name="absorption_maxtime_summary">Tempo em horas, espectável para que todos os hidratos de carbono da refeição sejam absorvidos</string>
<string name="keep_screen_on_title">Manter ecrã ligado</string>
<string name="keep_screen_on_summary">Impedir Android de desligar o ecrã. Isto irá consumir muita bateria quando não ligado ao carregador.</string>
<string name="sensitivity_warning">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 !!</string>
<string name="sensitivityweightedaverage">Média ponderada da Sensibilidade</string>
<string name="sensitivity_weighted_average">Média ponderada da Sensibilidade</string>
<string name="notloadedplugins">Nem todos perfis foram carregados!</string>
<string name="valuesnotstored">Valores não guardados!</string>
<string name="invalid">INVÁLIDO</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">Detectare sensibilitate</string>
<string name="configbuilder_sensitivity_description">Ce algoritm de detecție a sensibilității doriți să folosiți?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensibilitate Oref1</string>
<string name="sensitivityaaps">Sensibilitate AAPS</string>
<string name="sensitivity_oref1">Sensibilitate Oref1</string>
<string name="sensitivity_aaps">Sensibilitate AAPS</string>
<string name="absorptionsettings_title">Setări absorbție</string>
<string name="absorption_maxtime_title">Timp maxim absorbție masă [o]</string>
<string name="absorption_maxtime_summary">Timp în ore la care se presupune că toți carbohidrații sunt absorbiți</string>
<string name="keep_screen_on_title">Menține ecranul aprins</string>
<string name="keep_screen_on_summary">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.</string>
<string name="sensitivity_warning">Trebuie introduși toți carbo la pornirea Autosens. În caz contrar, acțiunea carbo va fi percepută ca schimbare a sensibilității!</string>
<string name="sensitivityweightedaverage">Sensibilitate estimată prin mediere</string>
<string name="sensitivity_weighted_average">Sensibilitate estimată prin mediere</string>
<string name="notloadedplugins">Nu s-au încărcat toate profilurile!</string>
<string name="valuesnotstored">Nu s-au salvat valorile!</string>
<string name="invalid">INVALID</string>

View file

@ -122,15 +122,15 @@
<string name="configbuilder_sensitivity">определение чувствительности</string>
<string name="configbuilder_sensitivity_description">Какой алгоритм чувствительности следует использовать?</string>
<string name="sensitivity_shortname">ЧУВСТВ</string>
<string name="sensitivityoref1">Чувствительность Oref1</string>
<string name="sensitivityaaps">Чувствительность AAPS</string>
<string name="sensitivity_oref1">Чувствительность Oref1</string>
<string name="sensitivity_aaps">Чувствительность AAPS</string>
<string name="absorptionsettings_title">Настройки усваиваемости</string>
<string name="absorption_maxtime_title">Максимальное время усваимости пищи [h] (час)</string>
<string name="absorption_maxtime_summary">Ожидаемое время усваивания всех углеводов пищи в часах</string>
<string name="keep_screen_on_title">Не отключать экран</string>
<string name="keep_screen_on_summary">Не давать системе Android отключать экран. Это увеличит потребление энергии при отключенной сети питания.</string>
<string name="sensitivity_warning">Активируя Autosense не забывайте вводить все съеденные углеводы. Иначе отклонения в углеводах будут неверно определены как изменение чувствительности !!</string>
<string name="sensitivityweightedaverage">Средневзвешенная чувствительность</string>
<string name="sensitivity_weighted_average">Средневзвешенная чувствительность</string>
<string name="notloadedplugins">не все профили загружены!</string>
<string name="valuesnotstored">Данные не сохранены!</string>
<string name="invalid">НЕВЕРНО</string>

View file

@ -122,15 +122,15 @@
<string name="configbuilder_sensitivity">Detekcia citlivosti</string>
<string name="configbuilder_sensitivity_description">Aký druh algoritmu pre detekciu citlivosti má byť použitý?</string>
<string name="sensitivity_shortname">SENZ</string>
<string name="sensitivityoref1">Senzitivita Oref1</string>
<string name="sensitivityaaps">Senzitivita AAPS</string>
<string name="sensitivity_oref1">Senzitivita Oref1</string>
<string name="sensitivity_aaps">Senzitivita AAPS</string>
<string name="absorptionsettings_title">Nastavenie vstrebávania sacharidov</string>
<string name="absorption_maxtime_title">Max. doba vstrebávania sacharidov [h]</string>
<string name="absorption_maxtime_summary">Čas v hodinách, počas ktorého predpokladáme, že všetky sacharidy budú vstrebané</string>
<string name="keep_screen_on_title">Nechať obrazovku zapnutú</string>
<string name="keep_screen_on_summary">Zabrániť Androidu, aby zhasínal obrazovku. Bez pripojenia nabíjačky vybije veľmi rýchlo batériu!</string>
<string name="sensitivity_warning">Pri zapnutej automatickej detekcii citlivosti, nezabudnite vkladať všetky prijaté sacharidy. V opačnom prípade, budú odchýlky mylne vyhodnocované, ako zmena citlivosti !!</string>
<string name="sensitivityweightedaverage">Citlivosť vážený priemer</string>
<string name="sensitivity_weighted_average">Citlivosť vážený priemer</string>
<string name="notloadedplugins">Nenačítané všetky profily!</string>
<string name="valuesnotstored">Hodnoty nie sú uložené!</string>
<string name="invalid">NEPLATNÝ</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">Känslighetsavkänning</string>
<string name="configbuilder_sensitivity_description">Vilken algoritm vill du använda för känslighetsavkänning?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Oref1</string>
<string name="sensitivityaaps">AAPS</string>
<string name="sensitivity_oref1">Oref1</string>
<string name="sensitivity_aaps">AAPS</string>
<string name="absorptionsettings_title">Absorptionsinställningar</string>
<string name="absorption_maxtime_title">Max absorptionstid för en måltid [tim]</string>
<string name="absorption_maxtime_summary">Tid i timmar när alla kolhydrater förväntas vara absorberade</string>
<string name="keep_screen_on_title">Håll skärmen igång</string>
<string name="keep_screen_on_summary">Förhindrar att skärmen stängs av. Förbrukar mer batteri.</string>
<string name="sensitivity_warning">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)!!</string>
<string name="sensitivityweightedaverage">WeightedAverage</string>
<string name="sensitivity_weighted_average">WeightedAverage</string>
<string name="notloadedplugins">Alla profiler laddades inte!</string>
<string name="valuesnotstored">Alla värden sparades inte!</string>
<string name="invalid">OGILTIG</string>

View file

@ -120,15 +120,15 @@
<string name="configbuilder_sensitivity">Duyarlılık algılaması</string>
<string name="configbuilder_sensitivity_description">Hangi duyarlılık algoritması kullanılmalıdır?</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Oref1 duyarlılık</string>
<string name="sensitivityaaps">AAPS duyarlılık</string>
<string name="sensitivity_oref1">Oref1 duyarlılık</string>
<string name="sensitivity_aaps">AAPS duyarlılık</string>
<string name="absorptionsettings_title">Emilim ayarları</string>
<string name="absorption_maxtime_title">Besinin maksimum emilim süresi [h]</string>
<string name="absorption_maxtime_summary">Yemekteki tüm karbonhidratların emilmesinin beklendiği saat cinsinden süre</string>
<string name="keep_screen_on_title">Ekranıık tut</string>
<string name="keep_screen_on_summary">Android\'in ekranı kapatmasını önleyin. Prize takılı değilken çok fazla enerji tüketir.</string>
<string name="sensitivity_warning">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!!</string>
<string name="sensitivityweightedaverage">ırlıklı ortalama duyarlılık</string>
<string name="sensitivity_weighted_average">ırlıklı ortalama duyarlılık</string>
<string name="notloadedplugins">Tüm profiller yüklenmedi!</string>
<string name="valuesnotstored">Değerler kaydedilmedi!</string>
<string name="invalid">GEÇERSİZ</string>

View file

@ -116,15 +116,15 @@
<string name="configbuilder_sensitivity">灵敏度检测</string>
<string name="configbuilder_sensitivity_description">应使用哪一种灵敏度算法?</string>
<string name="sensitivity_shortname">灵敏度</string>
<string name="sensitivityoref1">灵敏度 Oref1</string>
<string name="sensitivityaaps">灵敏度 AAPS</string>
<string name="sensitivity_oref1">灵敏度 Oref1</string>
<string name="sensitivity_aaps">灵敏度 AAPS</string>
<string name="absorptionsettings_title">食物吸收设置</string>
<string name="absorption_maxtime_title">膳食最大吸收时间 [h]</string>
<string name="absorption_maxtime_summary">预计膳食中所有的碳水化合物被吸收的时间,以小时为单位</string>
<string name="keep_screen_on_title">保持屏幕常亮</string>
<string name="keep_screen_on_summary">阻止 Android 系统关闭手机屏幕。这将非常耗电</string>
<string name="sensitivity_warning">如果要打开 Autosense功能, 记住输入所有吃的碳水化合物。否则碳水化合物的偏差将被识别为错误的灵敏度变化!!</string>
<string name="sensitivityweightedaverage">灵敏度 WeightedAverage</string>
<string name="sensitivity_weighted_average">灵敏度 WeightedAverage</string>
<string name="notloadedplugins">配置文件加载不完整</string>
<string name="valuesnotstored">值没有被存储</string>
<string name="invalid">无效</string>

View file

@ -41,10 +41,6 @@
<string name="description_config_builder">Used for configuring the active plugins</string>
<string name="description_overview">Displays the current state of your loop and buttons for most common actions</string>
<string name="description_persistent_notification">Shows an ongoing notification with a short overview of what your loop is doing</string>
<string name="description_sensitivity_aaps">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.</string>
<string name="description_sensitivity_oref1">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.</string>
<string name="description_sensitivity_weighted_average">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.</string>
<string name="description_treatments">Saves all treatments that were made</string>
<string name="description_wear">Monitor and control AAPS using your WearOS watch.</string>
<string name="delta">Delta</string>
<string name="configbuilder">Config Builder</string>
@ -120,19 +116,14 @@
<string name="ns_alarm_urgent_stale_data_value_label">Urgent stale data threshold [min]</string>
<string name="openapsama_autosens_period">Interval for autosens [h]</string>
<string name="openapsama_autosens_period_summary">Amount of hours in the past for sensitivity detection (carbs absorption time is excluded)</string>
<string name="key_openapsama_autosens_period" translatable="false">openapsama_autosens_period</string>
<string name="openaps">OpenAPS</string>
<string name="uploader">Uploader</string>
<string name="sensitivity_shortname">SENS</string>
<string name="sensitivityoref1">Sensitivity Oref1</string>
<string name="sensitivityaaps">Sensitivity AAPS</string>
<string name="absorptionsettings_title">Absorption settings</string>
<string name="absorption_maxtime_title">Meal max absorption time [h]</string>
<string name="absorption_maxtime_summary">Time in hours where is expected all carbs from meal will be absorbed</string>
<string name="keep_screen_on_title">Keep screen on</string>
<string name="keep_screen_on_summary">Prevent Android to turn screen off. It will consume lot of energy when not plugged to power outlet.</string>
<string name="sensitivity_warning">By turning on Autosense feature remember to enter all eated carbs. Otherwise carbs deviations will be identified wrong as sensitivity change !!</string>
<string name="sensitivityweightedaverage">Sensitivity WeightedAverage</string>
<string name="notloadedplugins">Not all profiles loaded!</string>
<string name="valuesnotstored">Values not stored!</string>
<string name="invalid">INVALID</string>

View file

@ -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

View file

@ -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"

View file

@ -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)

View file

@ -12,18 +12,6 @@ import info.nightscout.shared.utils.T
import org.json.JSONObject
import java.util.TimeZone
fun List<ProfileSwitch>.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) {

View file

@ -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
*/

View file

@ -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()

View file

@ -1,108 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Keys-->
<string name="key_units" translatable="false">units</string>
<string name="key_loop_openmode_min_change" translatable="false">loop_openmode_min_change</string>
<string name="key_absorption_maxtime" translatable="false">absorption_maxtime</string>
<string name="key_openapsama_min_5m_carbimpact" translatable="false">openapsama_min_5m_carbimpact</string>
<string name="key_absorption_cutoff" translatable="false">absorption_cutoff</string>
<string name="key_danar_useextended" translatable="false">danar_useextended</string>
<string name="key_eatingsoon_duration" translatable="false">eatingsoon_duration</string>
<string name="key_eatingsoon_target" translatable="false">eatingsoon_target</string>
<string name="key_activity_duration" translatable="false">activity_duration</string>
<string name="key_activity_target" translatable="false">activity_target</string>
<string name="key_hypo_duration" translatable="false">hypo_duration</string>
<string name="key_hypo_target" translatable="false">hypo_target</string>
<string name="key_low_mark" translatable="false">low_mark</string>
<string name="key_high_mark" translatable="false">high_mark</string>
<string name="key_ns_create_announcements_from_errors" translatable="false">ns_create_announcements_from_errors</string>
<string name="key_btwatchdog" translatable="false">bt_watchdog</string>
<string name="key_btwatchdog_lastbark" translatable="false">bt_watchdog_last</string>
<string name="key_pump_unreachable_threshold_minutes" translatable="false">pump_unreachable_threshold</string>
<string name="key_missed_bg_readings_threshold_minutes" translatable="false">missed_bg_readings_threshold</string>
<string name="key_gradually_increase_notification_volume" translatable="false">gradually_increase_notification_volume</string>
<string name="key_virtualpump_type" translatable="false">virtualpump_type</string>
<string name="key_quickwizard" translatable="false">QuickWizard</string>
<string name="key_wear_control" translatable="false">wearcontrol</string>
<string name="key_units_mgdl" translatable="false">units_mgdl</string>
<string name="key_show_notes_entry_dialogs" translatable="false">show_notes_entry_dialogs</string>
<string name="key_openapsama_autosens_max" translatable="false">autosens_max</string>
<string name="key_openapsama_autosens_min" translatable="false">autosens_min</string>
<string name="key_treatmentssafety_maxcarbs" translatable="false">treatmentssafety_maxcarbs</string>
<string name="key_bgsource_upload_settings" translatable="false">bgsource_upload_settings</string>
<string name="key_localalert_settings" translatable="false">localalert_settings</string>
<string name="key_wear_settings" translatable="false">wear_settings</string>
<string name="key_configbuilder_general_settings" translatable="false">configbuilder_general_settings</string>
<string name="key_maintenance_settings" translatable="false">maintenance_settings</string>
<string name="key_smscommunicator_settings" translatable="false">smscommunicator_settings</string>
<string name="key_openapssmb_settings" translatable="false">openapssmb_settings</string>
<string name="key_treatmentssafety_settings" translatable="false">treatmentssafety_settings</string>
<string name="key_loop_settings" translatable="false">loop_settings</string>
<string name="key_virtualpump_settings" translatable="false">virtualpump_settings</string>
<string name="key_pump_settings" translatable="false">pump_settings</string>
<string name="key_tidepool_settings" translatable="false">tidepool_settings</string>
<string name="key_absorption_settings" translatable="false">absorption_settings</string>
<string name="key_overview_settings" translatable="false">overview_settings</string>
<string name="key_openapsma_settings" translatable="false">openapsma_settings</string>
<string name="key_medtronic_settings" translatable="false">medtronic_settings</string>
<string name="key_danars_settings" translatable="false">danars_settings</string>
<string name="key_ns_client_settings" translatable="false">nsclientinternal_settings</string>
<string name="key_insight_local_settings" translatable="false">insight_local_settings</string>
<string name="key_data_choices_settings" translatable="false">data_choices_settings</string>
<string name="key_dexcom_settings" translatable="false">dexcom_settings</string>
<string name="key_active_pump_change_timestamp" translatable="false">active_pump_change_timestamp</string>
<string name="key_active_pump_type" translatable="false">active_pump_type</string>
<string name="key_active_pump_serial_number" translatable="false">active_pump_serial_number</string>
<string name="key_age" translatable="false">age</string>
<string name="key_child" translatable="false">child</string>
<string name="key_teenage" translatable="false">teenage</string>
<string name="key_adult" translatable="false">adult</string>
<string name="key_resistantadult" translatable="false">resistantadult</string>
<string name="key_pregnant" translatable="false">pregnant</string>
<string name="key_app_expiration" translatable="false">app_expiration</string>
<string name="key_use_dark_mode" translatable="false">use_dark_mode</string>
<string name="key_insulin_oref_peak" translatable="false">insulin_oref_peak</string>
<string name="key_autotune_auto" translatable="false">autotune_auto</string>
<string name="key_autotune_categorize_uam_as_basal" translatable="false">categorize_uam_as_basal</string>
<string name="key_autotune_tune_insulin_curve" translatable="false">autotune_tune_insulin_curve</string>
<string name="key_autotune_default_tune_days" translatable="false">autotune_default_tune_days</string>
<string name="key_autotune_circadian_ic_isf" translatable="false">autotune_circadian_ic_isf</string>
<string name="key_autotune_additional_log" translatable="false">autotune_additional_log</string>
<string name="key_autotune_plugin" translatable="false">key_autotune_plugin</string>
<string name="key_autotune_last_run" translatable="false">key_autotune_last_run</string>
<string name="key_dexcomg5_xdripupload" translatable="false">dexcomg5_xdripupload</string>
<string name="key_nsclient_localbroadcasts" translatable="false">nsclient_localbroadcasts</string>
<string name="key_usebolusreminder" translatable="false">use_bolus_reminder</string>
<string name="key_carbs_button_increment_1" translatable="false">carbs_button_increment_1</string>
<string name="key_carbs_button_increment_2" translatable="false">carbs_button_increment_2</string>
<string name="key_carbs_button_increment_3" translatable="false">carbs_button_increment_3</string>
<string name="key_enable_pump_unreachable_alert" translatable="false">enable_pump_unreachable_alert</string>
<string name="key_enable_missed_bg_readings_alert" translatable="false">enable_missed_bg_readings</string>
<string name="key_enable_carbs_required_alert_local" translatable="false">enable_carbs_required_alert_local</string>
<string name="key_smscommunicator_report_pump_unreachable" translatable="false">smscommunicator_report_pump_unreachable</string>
<string name="key_rangetodisplay" translatable="false">rangetodisplay</string>
<string name="key_local_profile_last_change" translatable="false">local_profile_last_change</string>
<string name="key_ns_receive_profile_store" translatable="false">ns_receive_profile_store</string>
<string name="key_nsclientinternal_url" translatable="false">nsclientinternal_url</string>
<string name="key_nsclientinternal_api_secret" translatable="false">nsclientinternal_api_secret</string>
<string name="key_ns_receive_insulin" translatable="false">ns_receive_insulin</string>
<string name="key_ns_receive_carbs" translatable="false">ns_receive_carbs</string>
<string name="key_ns_receive_therapy_events" translatable="false">ns_receive_therapy_events</string>
<string name="key_ns_receive_profile_switch" translatable="false">ns_receive_profile_switch</string>
<string name="key_ns_receive_offline_event" translatable="false">ns_receive_offline_event</string>
<string name="key_ns_receive_temp_target" translatable="false">ns_receive_temp_target</string>
<string name="key_objectiveuseprofileswitch" translatable="false">ObjectivesProfileSwitchUsed</string>
<string name="key_objectiveusetemptarget" translatable="false">ObjectivesTempTargetUsed</string>
<string name="key_objectiveusedisconnect" translatable="false">ObjectivesDisconnectUsed</string>
<string name="key_objectiveusereconnect" translatable="false">ObjectivesReconnectUsed</string>
<string name="key_aps_mode" translatable="false">aps_mode</string>
<string name="key_boluswizard_percentage" translatable="false">boluswizard_percentage</string>
<string name="key_usesuperbolus" translatable="false">key_usersuperbolus</string>
<string name="key_treatmentssafety_maxbolus" translatable="false">treatmentssafety_maxbolus</string>
<string name="key_patient_name" translatable="false">patient_name</string>
<string name="key_email_for_crash_report" translatable="false">email_for_crash_report</string>
<!-- General-->
<string name="refresh">Refresh</string>
<string name="error">Error</string>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="key_enable_fabric" translatable="false">enable_fabric2</string>
</resources>

View file

@ -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')

View file

@ -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

View file

@ -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()
}
}

View file

@ -1,4 +1,4 @@
package info.nightscout.plugins.aps.utils
package info.nightscout.core.utils
import kotlin.math.floor

View file

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Keys-->
<string name="key_units" translatable="false">units</string>
<string name="key_loop_openmode_min_change" translatable="false">loop_openmode_min_change</string>
<string name="key_absorption_maxtime" translatable="false">absorption_maxtime</string>
<string name="key_openapsama_min_5m_carbimpact" translatable="false">openapsama_min_5m_carbimpact</string>
<string name="key_absorption_cutoff" translatable="false">absorption_cutoff</string>
<string name="key_danar_useextended" translatable="false">danar_useextended</string>
<string name="key_eatingsoon_duration" translatable="false">eatingsoon_duration</string>
<string name="key_eatingsoon_target" translatable="false">eatingsoon_target</string>
<string name="key_activity_duration" translatable="false">activity_duration</string>
<string name="key_activity_target" translatable="false">activity_target</string>
<string name="key_hypo_duration" translatable="false">hypo_duration</string>
<string name="key_hypo_target" translatable="false">hypo_target</string>
<string name="key_low_mark" translatable="false">low_mark</string>
<string name="key_high_mark" translatable="false">high_mark</string>
<string name="key_ns_create_announcements_from_errors" translatable="false">ns_create_announcements_from_errors</string>
<string name="key_btwatchdog" translatable="false">bt_watchdog</string>
<string name="key_btwatchdog_lastbark" translatable="false">bt_watchdog_last</string>
<string name="key_pump_unreachable_threshold_minutes" translatable="false">pump_unreachable_threshold</string>
<string name="key_missed_bg_readings_threshold_minutes" translatable="false">missed_bg_readings_threshold</string>
<string name="key_gradually_increase_notification_volume" translatable="false">gradually_increase_notification_volume</string>
<string name="key_virtualpump_type" translatable="false">virtualpump_type</string>
<string name="key_quickwizard" translatable="false">QuickWizard</string>
<string name="key_wear_control" translatable="false">wearcontrol</string>
<string name="key_units_mgdl" translatable="false">units_mgdl</string>
<string name="key_show_notes_entry_dialogs" translatable="false">show_notes_entry_dialogs</string>
<string name="key_openapsama_autosens_max" translatable="false">autosens_max</string>
<string name="key_openapsama_autosens_min" translatable="false">autosens_min</string>
<string name="key_treatmentssafety_maxcarbs" translatable="false">treatmentssafety_maxcarbs</string>
<string name="key_bgsource_upload_settings" translatable="false">bgsource_upload_settings</string>
<string name="key_localalert_settings" translatable="false">localalert_settings</string>
<string name="key_wear_settings" translatable="false">wear_settings</string>
<string name="key_configbuilder_general_settings" translatable="false">configbuilder_general_settings</string>
<string name="key_maintenance_settings" translatable="false">maintenance_settings</string>
<string name="key_smscommunicator_settings" translatable="false">smscommunicator_settings</string>
<string name="key_openapssmb_settings" translatable="false">openapssmb_settings</string>
<string name="key_treatmentssafety_settings" translatable="false">treatmentssafety_settings</string>
<string name="key_loop_settings" translatable="false">loop_settings</string>
<string name="key_virtualpump_settings" translatable="false">virtualpump_settings</string>
<string name="key_pump_settings" translatable="false">pump_settings</string>
<string name="key_tidepool_settings" translatable="false">tidepool_settings</string>
<string name="key_absorption_settings" translatable="false">absorption_settings</string>
<string name="key_overview_settings" translatable="false">overview_settings</string>
<string name="key_openapsma_settings" translatable="false">openapsma_settings</string>
<string name="key_medtronic_settings" translatable="false">medtronic_settings</string>
<string name="key_danars_settings" translatable="false">danars_settings</string>
<string name="key_ns_client_settings" translatable="false">nsclientinternal_settings</string>
<string name="key_insight_local_settings" translatable="false">insight_local_settings</string>
<string name="key_data_choices_settings" translatable="false">data_choices_settings</string>
<string name="key_dexcom_settings" translatable="false">dexcom_settings</string>
<string name="key_active_pump_change_timestamp" translatable="false">active_pump_change_timestamp</string>
<string name="key_active_pump_type" translatable="false">active_pump_type</string>
<string name="key_active_pump_serial_number" translatable="false">active_pump_serial_number</string>
<string name="key_age" translatable="false">age</string>
<string name="key_child" translatable="false">child</string>
<string name="key_teenage" translatable="false">teenage</string>
<string name="key_adult" translatable="false">adult</string>
<string name="key_resistantadult" translatable="false">resistantadult</string>
<string name="key_pregnant" translatable="false">pregnant</string>
<string name="key_app_expiration" translatable="false">app_expiration</string>
<string name="key_use_dark_mode" translatable="false">use_dark_mode</string>
<string name="key_insulin_oref_peak" translatable="false">insulin_oref_peak</string>
<string name="key_autotune_auto" translatable="false">autotune_auto</string>
<string name="key_autotune_categorize_uam_as_basal" translatable="false">categorize_uam_as_basal</string>
<string name="key_autotune_tune_insulin_curve" translatable="false">autotune_tune_insulin_curve</string>
<string name="key_autotune_default_tune_days" translatable="false">autotune_default_tune_days</string>
<string name="key_autotune_circadian_ic_isf" translatable="false">autotune_circadian_ic_isf</string>
<string name="key_autotune_additional_log" translatable="false">autotune_additional_log</string>
<string name="key_autotune_plugin" translatable="false">key_autotune_plugin</string>
<string name="key_autotune_last_run" translatable="false">key_autotune_last_run</string>
<string name="key_dexcomg5_xdripupload" translatable="false">dexcomg5_xdripupload</string>
<string name="key_nsclient_localbroadcasts" translatable="false">nsclient_localbroadcasts</string>
<string name="key_usebolusreminder" translatable="false">use_bolus_reminder</string>
<string name="key_carbs_button_increment_1" translatable="false">carbs_button_increment_1</string>
<string name="key_carbs_button_increment_2" translatable="false">carbs_button_increment_2</string>
<string name="key_carbs_button_increment_3" translatable="false">carbs_button_increment_3</string>
<string name="key_enable_pump_unreachable_alert" translatable="false">enable_pump_unreachable_alert</string>
<string name="key_enable_missed_bg_readings_alert" translatable="false">enable_missed_bg_readings</string>
<string name="key_enable_carbs_required_alert_local" translatable="false">enable_carbs_required_alert_local</string>
<string name="key_smscommunicator_report_pump_unreachable" translatable="false">smscommunicator_report_pump_unreachable</string>
<string name="key_rangetodisplay" translatable="false">rangetodisplay</string>
<string name="key_local_profile_last_change" translatable="false">local_profile_last_change</string>
<string name="key_ns_receive_profile_store" translatable="false">ns_receive_profile_store</string>
<string name="key_nsclientinternal_url" translatable="false">nsclientinternal_url</string>
<string name="key_nsclientinternal_api_secret" translatable="false">nsclientinternal_api_secret</string>
<string name="key_ns_receive_insulin" translatable="false">ns_receive_insulin</string>
<string name="key_ns_receive_carbs" translatable="false">ns_receive_carbs</string>
<string name="key_ns_receive_therapy_events" translatable="false">ns_receive_therapy_events</string>
<string name="key_ns_receive_profile_switch" translatable="false">ns_receive_profile_switch</string>
<string name="key_ns_receive_offline_event" translatable="false">ns_receive_offline_event</string>
<string name="key_ns_receive_temp_target" translatable="false">ns_receive_temp_target</string>
<string name="key_objectiveuseprofileswitch" translatable="false">ObjectivesProfileSwitchUsed</string>
<string name="key_objectiveusetemptarget" translatable="false">ObjectivesTempTargetUsed</string>
<string name="key_objectiveusedisconnect" translatable="false">ObjectivesDisconnectUsed</string>
<string name="key_objectiveusereconnect" translatable="false">ObjectivesReconnectUsed</string>
<string name="key_aps_mode" translatable="false">aps_mode</string>
<string name="key_boluswizard_percentage" translatable="false">boluswizard_percentage</string>
<string name="key_usesuperbolus" translatable="false">key_usersuperbolus</string>
<string name="key_treatmentssafety_maxbolus" translatable="false">treatmentssafety_maxbolus</string>
<string name="key_patient_name" translatable="false">patient_name</string>
<string name="key_email_for_crash_report" translatable="false">email_for_crash_report</string>
<string name="key_openapsama_autosens_period" translatable="false">openapsama_autosens_period</string>
<string name="key_enable_fabric" translatable="false">enable_fabric2</string>
</resources>

View file

@ -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

View file

@ -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')
}

View file

@ -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')

View file

@ -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')

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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)

View file

@ -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')

View file

@ -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) {

View file

@ -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) {

View file

@ -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()

View file

@ -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()

View file

@ -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')
}

View file

@ -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')

View file

@ -81,11 +81,3 @@ fun TherapyEvent.toJson(isAdd: Boolean, dateUtil: DateUtil): JSONObject =
if (type == TherapyEvent.Type.ANNOUNCEMENT) it.put("isAnnouncement", true)
}
fun List<TherapyEvent>.isTherapyEventEvent5minBack(time: Long): Boolean {
for (event in this) {
if (event.timestamp <= time && event.timestamp > time - T.mins(5).msecs()) {
return true
}
}
return false
}

View file

@ -278,7 +278,6 @@
<string name="safety" translatable="false">Safety</string>
<string name="pumpisnottempbasalcapable">Pump is not temp basal capable</string>
<string name="closedmodedisabledinpreferences">Closed loop mode disabled in preferences</string>
<string name="uamdisabledoref1notselected">UAM disabled because it rely on Oref1 sensitivity plugin</string>
<string name="closed_loop_disabled_on_dev_branch">Running dev version. Closed loop is disabled.</string>
<string name="closed_loop_disabled_with_eb">Closed loop disabled because of running Extended bolus</string>
<string name="smbalwaysdisabled">SMB always and after carbs disabled because active BG source doesn\'t support advanced filtering</string>

1
plugins/sensitivity/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/build

View file

@ -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')
}

View file

21
plugins/sensitivity/proguard-rules.pro vendored Normal file
View file

@ -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

Some files were not shown because too many files have changed in this diff Show more