diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7af9821bee..124d50535e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -132,7 +132,7 @@ + var absorbed: Double var carbsFromBolus: Double var cob: Double + var bgi: Double + var delta: Double + var avgDelta: Double var slopeFromMaxDeviation: Double var slopeFromMinDeviation: Double var usedMinCarbsImpact: Double @@ -37,4 +42,6 @@ interface AutosensData { var autosensResult: AutosensResult fun cloneCarbsList(): MutableList + fun deductAbsorbedCarbs() + fun removeOldCarbs(toTime: Long, isAAPSOrWeighted: Boolean) } \ No newline at end of file diff --git a/core/interfaces/src/main/java/info/nightscout/interfaces/aps/Loop.kt b/core/interfaces/src/main/java/info/nightscout/interfaces/aps/Loop.kt index c0eac9f4eb..dc96f4ea91 100644 --- a/core/interfaces/src/main/java/info/nightscout/interfaces/aps/Loop.kt +++ b/core/interfaces/src/main/java/info/nightscout/interfaces/aps/Loop.kt @@ -57,4 +57,6 @@ interface Loop { runningConfiguration: RunningConfiguration, version: String ): DeviceStatus? + + fun provideEmptyAPSResultObject(): APSResult } \ No newline at end of file diff --git a/core/interfaces/src/main/java/info/nightscout/interfaces/iob/IobCobCalculator.kt b/core/interfaces/src/main/java/info/nightscout/interfaces/iob/IobCobCalculator.kt index a88237a838..66a1af0fd6 100644 --- a/core/interfaces/src/main/java/info/nightscout/interfaces/iob/IobCobCalculator.kt +++ b/core/interfaces/src/main/java/info/nightscout/interfaces/iob/IobCobCalculator.kt @@ -104,4 +104,6 @@ interface IobCobCalculator { * @return IobTotal */ fun calculateIobFromTempBasalsIncludingConvertedExtended(): IobTotal + + fun provideEmptyAutosensDataObject(): AutosensData } \ No newline at end of file diff --git a/core/main/src/main/java/info/nightscout/core/di/CoreDataClassesModule.kt b/core/main/src/main/java/info/nightscout/core/di/CoreDataClassesModule.kt index d5e6d5431d..e94b388f44 100644 --- a/core/main/src/main/java/info/nightscout/core/di/CoreDataClassesModule.kt +++ b/core/main/src/main/java/info/nightscout/core/di/CoreDataClassesModule.kt @@ -2,8 +2,6 @@ package info.nightscout.core.di import dagger.Module import dagger.android.ContributesAndroidInjector -import info.nightscout.core.aps.APSResultObject -import info.nightscout.core.iob.iobCobCalculator.data.AutosensDataObject import info.nightscout.core.wizard.BolusWizard import info.nightscout.core.wizard.QuickWizardEntry import info.nightscout.interfaces.pump.PumpEnactResult @@ -13,8 +11,6 @@ import info.nightscout.interfaces.pump.PumpEnactResult abstract class CoreDataClassesModule { @ContributesAndroidInjector abstract fun pumpEnactResultInjector(): PumpEnactResult - @ContributesAndroidInjector abstract fun apsResultInjector(): APSResultObject - @ContributesAndroidInjector abstract fun autosensDataInjector(): AutosensDataObject @ContributesAndroidInjector abstract fun bolusWizardInjector(): BolusWizard @ContributesAndroidInjector abstract fun quickWizardEntryInjector(): QuickWizardEntry } diff --git a/core/main/src/main/java/info/nightscout/core/di/CoreModule.kt b/core/main/src/main/java/info/nightscout/core/di/CoreModule.kt index 627e0d0f24..5d49cc0571 100644 --- a/core/main/src/main/java/info/nightscout/core/di/CoreModule.kt +++ b/core/main/src/main/java/info/nightscout/core/di/CoreModule.kt @@ -5,14 +5,11 @@ import android.os.Build import android.telephony.SmsManager import dagger.Module import dagger.Provides -import dagger.android.ContributesAndroidInjector -import info.nightscout.core.services.AlarmSoundService @Module( includes = [ CoreDataClassesModule::class, - PreferencesModule::class, - ServicesModule::class + PreferencesModule::class ] ) open class CoreModule { diff --git a/core/main/src/main/java/info/nightscout/core/di/ServicesModule.kt b/core/main/src/main/java/info/nightscout/core/di/ServicesModule.kt deleted file mode 100644 index 3debe1c342..0000000000 --- a/core/main/src/main/java/info/nightscout/core/di/ServicesModule.kt +++ /dev/null @@ -1,12 +0,0 @@ -package info.nightscout.core.di - -import dagger.Module -import dagger.android.ContributesAndroidInjector -import info.nightscout.core.services.AlarmSoundService - -@Module -@Suppress("unused") -abstract class ServicesModule { - - @ContributesAndroidInjector abstract fun contributesAlarmSoundService(): AlarmSoundService -} \ No newline at end of file diff --git a/core/main/src/main/java/info/nightscout/core/profile/ProfileStoreObject.kt b/core/main/src/main/java/info/nightscout/core/profile/ProfileStoreObject.kt deleted file mode 100644 index d857c4eab2..0000000000 --- a/core/main/src/main/java/info/nightscout/core/profile/ProfileStoreObject.kt +++ /dev/null @@ -1,2 +0,0 @@ -package info.nightscout.core.profile - diff --git a/core/main/src/main/java/info/nightscout/core/aps/APSResultObject.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/APSResultObject.kt similarity index 98% rename from core/main/src/main/java/info/nightscout/core/aps/APSResultObject.kt rename to plugins/aps/src/main/java/info/nightscout/plugins/aps/APSResultObject.kt index 1914d740f7..1e86c69c53 100644 --- a/core/main/src/main/java/info/nightscout/core/aps/APSResultObject.kt +++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/APSResultObject.kt @@ -1,9 +1,10 @@ -package info.nightscout.core.aps +package info.nightscout.plugins.aps import android.text.Spanned import dagger.android.HasAndroidInjector import info.nightscout.core.extensions.convertedToAbsolute import info.nightscout.core.extensions.convertedToPercent +import info.nightscout.core.ui.R import info.nightscout.database.entities.GlucoseValue import info.nightscout.interfaces.aps.APSResult import info.nightscout.interfaces.constraints.Constraint @@ -14,7 +15,7 @@ import info.nightscout.interfaces.plugin.ActivePlugin import info.nightscout.interfaces.profile.ProfileFunction import info.nightscout.interfaces.pump.defs.PumpDescription import info.nightscout.interfaces.utils.DecimalFormatter -import info.nightscout.interfaces.utils.HtmlHelper.fromHtml +import info.nightscout.interfaces.utils.HtmlHelper import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.LTag import info.nightscout.shared.interfaces.ResourceHelper @@ -41,7 +42,7 @@ open class APSResultObject @Inject constructor(val injector: HasAndroidInjector) @Inject lateinit var rh: ResourceHelper @Inject lateinit var dateUtil: DateUtil - var date: Long = 0 + override var date: Long = 0 override var reason: String = "" override var rate = 0.0 override var percent = 0 @@ -116,11 +117,11 @@ open class APSResultObject @Inject constructor(val injector: HasAndroidInjector) // reason ret += "" + rh.gs(info.nightscout.core.ui.R.string.reason) + ": " + reason.replace("<", "<").replace(">", ">") - return fromHtml(ret) + return HtmlHelper.fromHtml(ret) } return if (isCarbsRequired) { - fromHtml(carbsRequiredText) - } else fromHtml(rh.gs(info.nightscout.core.ui.R.string.nochangerequested)) + HtmlHelper.fromHtml(carbsRequiredText) + } else HtmlHelper.fromHtml(rh.gs(R.string.nochangerequested)) } override fun newAndClone(injector: HasAndroidInjector): APSResult { diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/di/ApsModule.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/di/ApsModule.kt index 305571b652..db2efe7902 100644 --- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/di/ApsModule.kt +++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/di/ApsModule.kt @@ -3,8 +3,10 @@ package info.nightscout.plugins.aps.di import dagger.Binds import dagger.Module import dagger.android.ContributesAndroidInjector +import info.nightscout.interfaces.aps.APSResult import info.nightscout.interfaces.aps.Loop import info.nightscout.interfaces.autotune.Autotune +import info.nightscout.plugins.aps.APSResultObject import info.nightscout.plugins.aps.OpenAPSFragment import info.nightscout.plugins.aps.loop.LoopPlugin import info.nightscout.plugins.general.autotune.AutotunePlugin @@ -22,6 +24,7 @@ import info.nightscout.plugins.general.autotune.AutotunePlugin abstract class ApsModule { @ContributesAndroidInjector abstract fun contributesOpenAPSFragment(): OpenAPSFragment + @ContributesAndroidInjector abstract fun apsResultInjector(): APSResultObject @Module interface Bindings { diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/di/LoopModule.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/di/LoopModule.kt index e827400c1c..d04bee6705 100644 --- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/di/LoopModule.kt +++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/di/LoopModule.kt @@ -2,10 +2,12 @@ package info.nightscout.plugins.aps.di import dagger.Module import dagger.android.ContributesAndroidInjector +import info.nightscout.plugins.aps.loop.CarbSuggestionReceiver +import info.nightscout.plugins.aps.loop.LoopFragment @Module @Suppress("unused") abstract class LoopModule { - @ContributesAndroidInjector abstract fun contributesLoopFragment(): info.nightscout.plugins.aps.loop.LoopFragment - @ContributesAndroidInjector abstract fun contributesCarbSuggestionReceiver(): info.nightscout.plugins.aps.loop.CarbSuggestionReceiver + @ContributesAndroidInjector abstract fun contributesLoopFragment(): LoopFragment + @ContributesAndroidInjector abstract fun contributesCarbSuggestionReceiver(): CarbSuggestionReceiver } \ No newline at end of file diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/loop/LoopPlugin.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/loop/LoopPlugin.kt index 934fd1c9e8..7ae6516800 100644 --- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/loop/LoopPlugin.kt +++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/loop/LoopPlugin.kt @@ -57,6 +57,7 @@ import info.nightscout.interfaces.queue.CommandQueue import info.nightscout.interfaces.receivers.ReceiverStatusStore import info.nightscout.interfaces.ui.UiInteraction import info.nightscout.interfaces.utils.HardLimits +import info.nightscout.plugins.aps.APSResultObject import info.nightscout.plugins.aps.R import info.nightscout.plugins.aps.loop.events.EventLoopSetLastRunGui import info.nightscout.plugins.aps.loop.extensions.json @@ -782,6 +783,9 @@ class LoopPlugin @Inject constructor( configuration = runningConfiguration.configuration().toString() ) } + + override fun provideEmptyAPSResultObject(): APSResult = APSResultObject(injector) + companion object { private const val CHANNEL_ID = "AAPS-OpenLoop" diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/DetermineBasalAdapterAMAJS.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/DetermineBasalAdapterAMAJS.kt index 34c6253160..e65441e276 100644 --- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/DetermineBasalAdapterAMAJS.kt +++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/DetermineBasalAdapterAMAJS.kt @@ -1,7 +1,7 @@ package info.nightscout.plugins.aps.openAPSAMA import dagger.android.HasAndroidInjector -import info.nightscout.core.aps.APSResultObject +import info.nightscout.plugins.aps.APSResultObject import info.nightscout.core.extensions.convertedToAbsolute import info.nightscout.core.extensions.getPassedDurationToTimeInMinutes import info.nightscout.core.extensions.plannedRemainingMinutes diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/DetermineBasalResultAMA.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/DetermineBasalResultAMA.kt index e79082c38a..46560190a0 100644 --- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/DetermineBasalResultAMA.kt +++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSAMA/DetermineBasalResultAMA.kt @@ -1,7 +1,7 @@ package info.nightscout.plugins.aps.openAPSAMA import dagger.android.HasAndroidInjector -import info.nightscout.core.aps.APSResultObject +import info.nightscout.plugins.aps.APSResultObject import info.nightscout.rx.logging.LTag import org.json.JSONException import org.json.JSONObject diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.kt index 2adf294d8a..c882fc9e8f 100644 --- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.kt +++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.kt @@ -1,7 +1,7 @@ package info.nightscout.plugins.aps.openAPSSMB import dagger.android.HasAndroidInjector -import info.nightscout.core.aps.APSResultObject +import info.nightscout.plugins.aps.APSResultObject import info.nightscout.core.extensions.convertedToAbsolute import info.nightscout.core.extensions.getPassedDurationToTimeInMinutes import info.nightscout.core.extensions.plannedRemainingMinutes diff --git a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/DetermineBasalResultSMB.kt b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/DetermineBasalResultSMB.kt index 446b09a952..6fa9f3d375 100644 --- a/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/DetermineBasalResultSMB.kt +++ b/plugins/aps/src/main/java/info/nightscout/plugins/aps/openAPSSMB/DetermineBasalResultSMB.kt @@ -1,7 +1,7 @@ package info.nightscout.plugins.aps.openAPSSMB import dagger.android.HasAndroidInjector -import info.nightscout.core.aps.APSResultObject +import info.nightscout.plugins.aps.APSResultObject import info.nightscout.interfaces.aps.VariableSensitivityResult import info.nightscout.rx.logging.LTag import org.json.JSONException diff --git a/plugins/aps/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt b/plugins/aps/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt index ef46cbe7e0..7e219660cf 100644 --- a/plugins/aps/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt +++ b/plugins/aps/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt @@ -38,6 +38,7 @@ open class TestBaseWithProfile : TestBase() { @Mock lateinit var context: Context lateinit var dateUtil: DateUtil + lateinit var testPumpPlugin: TestPumpPlugin val rxBus = RxBus(aapsSchedulers, aapsLogger) val profileInjector = HasAndroidInjector { AndroidInjector { } } @@ -56,6 +57,8 @@ open class TestBaseWithProfile : TestBase() { dateUtil = Mockito.spy(DateUtil(context)) `when`(dateUtil.now()).thenReturn(1656358822000) validProfile = ProfileSealed.Pure(pureProfileFromJson(JSONObject(validProfileJSON), dateUtil)!!) + testPumpPlugin = TestPumpPlugin(profileInjector) + `when`(activePluginProvider.activePump).thenReturn(testPumpPlugin) effectiveProfileSwitch = EffectiveProfileSwitch( timestamp = dateUtil.now(), basalBlocks = validProfile.basalBlocks, diff --git a/core/main/src/test/java/info/nightscout/androidaps/plugins/aps/loop/APSResultTest.kt b/plugins/aps/src/test/java/info/nightscout/plugins/aps/loop/APSResultTest.kt similarity index 84% rename from core/main/src/test/java/info/nightscout/androidaps/plugins/aps/loop/APSResultTest.kt rename to plugins/aps/src/test/java/info/nightscout/plugins/aps/loop/APSResultTest.kt index 758c2260de..f747c1a22d 100644 --- a/core/main/src/test/java/info/nightscout/androidaps/plugins/aps/loop/APSResultTest.kt +++ b/plugins/aps/src/test/java/info/nightscout/plugins/aps/loop/APSResultTest.kt @@ -1,17 +1,16 @@ -package info.nightscout.androidaps.plugins.aps.loop +package info.nightscout.plugins.aps.loop import dagger.android.AndroidInjector import dagger.android.HasAndroidInjector import info.nightscout.androidaps.TestBaseWithProfile -import info.nightscout.core.aps.APSResultObject import info.nightscout.database.entities.TemporaryBasal import info.nightscout.interfaces.aps.APSResult import info.nightscout.interfaces.constraints.Constraint import info.nightscout.interfaces.constraints.Constraints -import info.nightscout.interfaces.iob.IobCobCalculator import info.nightscout.interfaces.pump.defs.PumpType import info.nightscout.interfaces.utils.JsonHelper.safeGetDouble -import org.junit.Assert +import info.nightscout.shared.sharedPreferences.SP +import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.mockito.ArgumentMatchers @@ -21,7 +20,7 @@ import org.mockito.Mockito.`when` class APSResultTest : TestBaseWithProfile() { @Mock lateinit var constraints: Constraints - @Mock lateinit var iobCobCalculator: IobCobCalculator + @Mock lateinit var sp: SP private val injector = HasAndroidInjector { AndroidInjector { } } @@ -55,7 +54,7 @@ class APSResultTest : TestBaseWithProfile() { @Test fun changeRequestedTest() { - val apsResult = APSResultObject { AndroidInjector { } } + val apsResult = info.nightscout.plugins.aps.APSResultObject { AndroidInjector { } } .also { it.aapsLogger = aapsLogger it.constraintChecker = constraints @@ -76,21 +75,21 @@ class APSResultTest : TestBaseWithProfile() { closedLoopEnabled.set(aapsLogger, true) `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn(null) apsResult.tempBasalRequested(false) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) apsResult.tempBasalRequested(true).percent(200).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) // open loop closedLoopEnabled.set(aapsLogger, false) // no change requested `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn(null) apsResult.tempBasalRequested(false) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) // request 100% when no temp is running `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn(null) apsResult.tempBasalRequested(true).percent(100).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) // request equal temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -103,7 +102,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).percent(70).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) // request zero temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -116,7 +115,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).percent(0).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) // request high temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -129,7 +128,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).percent(200).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) // request slightly different temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -142,7 +141,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).percent(80).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) // request different temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -155,7 +154,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).percent(120).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) // it should work with absolute temps too // request different temp @@ -169,7 +168,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).percent(100).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( TemporaryBasal( timestamp = 0, @@ -180,7 +179,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).percent(50).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) // **** ABSOLUTE pump **** testPumpPlugin.pumpDescription.fillFor(PumpType.MEDTRONIC_515_715) // U/h based @@ -191,7 +190,7 @@ class APSResultTest : TestBaseWithProfile() { // request 100% when no temp is running `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn(null) apsResult.tempBasalRequested(true).rate(1.0).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) // request equal temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -204,7 +203,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).rate(2.0).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( TemporaryBasal( timestamp = 0, @@ -215,7 +214,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).rate(2.0).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) // request zero temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -228,7 +227,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).rate(0.0).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) // request high temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -241,7 +240,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).rate(35.0).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) // request slightly different temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -254,7 +253,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).rate(1.2).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) // request different temp `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( @@ -267,7 +266,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).rate(1.5).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) // it should work with percent temps too // request different temp @@ -281,7 +280,7 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).rate(1.1).duration(30) - Assert.assertEquals(false, apsResult.isChangeRequested) + Assertions.assertEquals(false, apsResult.isChangeRequested) `when`(iobCobCalculator.getTempBasalIncludingConvertedExtended(ArgumentMatchers.anyLong())).thenReturn( TemporaryBasal( timestamp = 0, @@ -292,11 +291,11 @@ class APSResultTest : TestBaseWithProfile() { ) ) apsResult.tempBasalRequested(true).rate(0.5).duration(30) - Assert.assertEquals(true, apsResult.isChangeRequested) + Assertions.assertEquals(true, apsResult.isChangeRequested) } @Test fun cloneTest() { - val apsResult = APSResultObject { AndroidInjector { } } + val apsResult = info.nightscout.plugins.aps.APSResultObject { AndroidInjector { } } .also { it.aapsLogger = aapsLogger it.constraintChecker = constraints @@ -308,12 +307,12 @@ class APSResultTest : TestBaseWithProfile() { } apsResult.rate(10.0) val apsResult2 = apsResult.newAndClone(injector) - Assert.assertEquals(apsResult.rate, apsResult2.rate, 0.0) + Assertions.assertEquals(apsResult.rate, apsResult2.rate, 0.0) } @Test fun jsonTest() { closedLoopEnabled.set(aapsLogger, true) - val apsResult = APSResultObject { AndroidInjector { } } + val apsResult = info.nightscout.plugins.aps.APSResultObject { AndroidInjector { } } .also { it.aapsLogger = aapsLogger it.constraintChecker = constraints @@ -324,9 +323,9 @@ class APSResultTest : TestBaseWithProfile() { it.rh = rh } apsResult.rate(20.0).tempBasalRequested(true) - Assert.assertEquals(20.0, safeGetDouble(apsResult.json(), "rate"), 0.0) + Assertions.assertEquals(20.0, safeGetDouble(apsResult.json(), "rate"), 0.0) apsResult.rate(20.0).tempBasalRequested(false) - Assert.assertEquals(false, apsResult.json()?.has("rate")) + Assertions.assertEquals(false, apsResult.json()?.has("rate")) } @BeforeEach diff --git a/plugins/automation/build.gradle b/plugins/automation/build.gradle index 304374ca9c..c1b50cd96f 100644 --- a/plugins/automation/build.gradle +++ b/plugins/automation/build.gradle @@ -28,6 +28,7 @@ dependencies { implementation project(':core:interfaces') testImplementation project(':implementation') + testImplementation project(':plugins:main') api "androidx.constraintlayout:constraintlayout:$constraintlayout_version" api "com.google.android.gms:play-services-location:$play_services_location_version" diff --git a/plugins/automation/src/test/java/info/nightscout/automation/actions/ActionsTestBase.kt b/plugins/automation/src/test/java/info/nightscout/automation/actions/ActionsTestBase.kt index f286296d47..c8972b3510 100644 --- a/plugins/automation/src/test/java/info/nightscout/automation/actions/ActionsTestBase.kt +++ b/plugins/automation/src/test/java/info/nightscout/automation/actions/ActionsTestBase.kt @@ -10,6 +10,7 @@ import info.nightscout.database.entities.DeviceStatus import info.nightscout.database.entities.OfflineEvent import info.nightscout.interfaces.ConfigBuilder import info.nightscout.interfaces.GlucoseUnit +import info.nightscout.interfaces.aps.APSResult import info.nightscout.interfaces.aps.Loop import info.nightscout.interfaces.configBuilder.RunningConfiguration import info.nightscout.interfaces.constraints.Constraint @@ -42,7 +43,8 @@ ActionsTestBase : TestBaseWithProfile() { aapsLogger: AAPSLogger, rh: ResourceHelper, injector: HasAndroidInjector, - pluginDescription: PluginDescription + pluginDescription: PluginDescription, + private val apsResult: APSResult ) : PluginBase( pluginDescription, aapsLogger, rh, injector ), Loop { @@ -75,6 +77,9 @@ ActionsTestBase : TestBaseWithProfile() { runningConfiguration: RunningConfiguration, version: String ): DeviceStatus? = null + + override fun provideEmptyAPSResultObject(): APSResult = apsResult + override fun setPluginEnabled(type: PluginType, newState: Boolean) {} } @@ -87,6 +92,7 @@ ActionsTestBase : TestBaseWithProfile() { @Mock lateinit var loopPlugin: TestLoopPlugin @Mock lateinit var uel: UserEntryLogger @Mock lateinit var context: Context + @Mock lateinit var apsResult: APSResult private val pluginDescription = PluginDescription() lateinit var testPumpPlugin: TestPumpPlugin diff --git a/plugins/automation/src/test/java/info/nightscout/automation/triggers/TriggerAutosensValueTest.kt b/plugins/automation/src/test/java/info/nightscout/automation/triggers/TriggerAutosensValueTest.kt index e059d38390..7ed8250f79 100644 --- a/plugins/automation/src/test/java/info/nightscout/automation/triggers/TriggerAutosensValueTest.kt +++ b/plugins/automation/src/test/java/info/nightscout/automation/triggers/TriggerAutosensValueTest.kt @@ -3,9 +3,9 @@ package info.nightscout.automation.triggers import com.google.common.base.Optional import info.nightscout.automation.R import info.nightscout.automation.elements.Comparator -import info.nightscout.core.iob.iobCobCalculator.data.AutosensDataObject +import info.nightscout.plugins.iob.iobCobCalculator.data.AutosensDataObject import org.json.JSONObject -import org.junit.Assert +import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.mockito.ArgumentMatchers @@ -22,53 +22,53 @@ class TriggerAutosensValueTest : TriggerTestBase() { var t = TriggerAutosensValue(injector) t.autosens.value = 110.0 t.comparator.value = Comparator.Compare.IS_EQUAL - Assert.assertEquals(110.0, t.autosens.value, 0.01) - Assert.assertEquals(Comparator.Compare.IS_EQUAL, t.comparator.value) - Assert.assertFalse(t.shouldRun()) + Assertions.assertEquals(110.0, t.autosens.value, 0.01) + Assertions.assertEquals(Comparator.Compare.IS_EQUAL, t.comparator.value) + Assertions.assertFalse(t.shouldRun()) t = TriggerAutosensValue(injector) t.autosens.value = 100.0 t.comparator.value = Comparator.Compare.IS_EQUAL - Assert.assertEquals(100.0, t.autosens.value, 0.01) - Assert.assertTrue(t.shouldRun()) + Assertions.assertEquals(100.0, t.autosens.value, 0.01) + Assertions.assertTrue(t.shouldRun()) t = TriggerAutosensValue(injector) t.autosens.value = 50.0 t.comparator.value = Comparator.Compare.IS_EQUAL_OR_GREATER - Assert.assertTrue(t.shouldRun()) + Assertions.assertTrue(t.shouldRun()) t = TriggerAutosensValue(injector) t.autosens.value = 310.0 t.comparator.value = Comparator.Compare.IS_EQUAL_OR_LESSER - Assert.assertTrue(t.shouldRun()) + Assertions.assertTrue(t.shouldRun()) t = TriggerAutosensValue(injector) t.autosens.value = 420.0 t.comparator.value = Comparator.Compare.IS_EQUAL - Assert.assertFalse(t.shouldRun()) + Assertions.assertFalse(t.shouldRun()) t = TriggerAutosensValue(injector) t.autosens.value = 390.0 t.comparator.value = Comparator.Compare.IS_EQUAL_OR_LESSER - Assert.assertTrue(t.shouldRun()) + Assertions.assertTrue(t.shouldRun()) t = TriggerAutosensValue(injector) t.autosens.value = 390.0 t.comparator.value = Comparator.Compare.IS_EQUAL_OR_GREATER - Assert.assertFalse(t.shouldRun()) + Assertions.assertFalse(t.shouldRun()) t = TriggerAutosensValue(injector) t.autosens.value = 20.0 t.comparator.value = Comparator.Compare.IS_EQUAL_OR_GREATER - Assert.assertTrue(t.shouldRun()) + Assertions.assertTrue(t.shouldRun()) t = TriggerAutosensValue(injector) t.autosens.value = 390.0 t.comparator.value = Comparator.Compare.IS_EQUAL_OR_LESSER - Assert.assertTrue(t.shouldRun()) + Assertions.assertTrue(t.shouldRun()) `when`(autosensDataStore.getLastAutosensData(anyObject(), anyObject(), anyObject())).thenReturn(AutosensDataObject(injector)) t = TriggerAutosensValue(injector) t.autosens.value = 80.0 t.comparator.value = Comparator.Compare.IS_EQUAL_OR_LESSER - Assert.assertFalse(t.shouldRun()) + Assertions.assertFalse(t.shouldRun()) // Test autosensData == null and Comparator == IS_NOT_AVAILABLE `when`(autosensDataStore.getLastAutosensData(anyObject(), anyObject(), anyObject())).thenReturn(null) t = TriggerAutosensValue(injector) t.comparator.value = Comparator.Compare.IS_NOT_AVAILABLE - Assert.assertTrue(t.shouldRun()) + Assertions.assertTrue(t.shouldRun()) } @Test @@ -77,8 +77,8 @@ class TriggerAutosensValueTest : TriggerTestBase() { t.autosens.value = 213.0 t.comparator.value = Comparator.Compare.IS_EQUAL_OR_LESSER val t1 = t.duplicate() as TriggerAutosensValue - Assert.assertEquals(213.0, t1.autosens.value, 0.01) - Assert.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) + Assertions.assertEquals(213.0, t1.autosens.value, 0.01) + Assertions.assertEquals(Comparator.Compare.IS_EQUAL_OR_LESSER, t.comparator.value) } private var asJson = "{\"data\":{\"comparator\":\"IS_EQUAL\",\"value\":410},\"type\":\"TriggerAutosensValue\"}" @@ -88,7 +88,7 @@ class TriggerAutosensValueTest : TriggerTestBase() { val t = TriggerAutosensValue(injector) t.autosens.value = 410.0 t.comparator.value = Comparator.Compare.IS_EQUAL - Assert.assertEquals(asJson, t.toJSON()) + Assertions.assertEquals(asJson, t.toJSON()) } @Test @@ -97,12 +97,12 @@ class TriggerAutosensValueTest : TriggerTestBase() { t.autosens.value = 410.0 t.comparator.value = Comparator.Compare.IS_EQUAL val t2 = TriggerDummy(injector).instantiate(JSONObject(t.toJSON())) as TriggerAutosensValue - Assert.assertEquals(Comparator.Compare.IS_EQUAL, t2.comparator.value) - Assert.assertEquals(410.0, t2.autosens.value, 0.01) + Assertions.assertEquals(Comparator.Compare.IS_EQUAL, t2.comparator.value) + Assertions.assertEquals(410.0, t2.autosens.value, 0.01) } @Test fun iconTest() { - Assert.assertEquals(Optional.of(R.drawable.ic_as), TriggerAutosensValue(injector).icon()) + Assertions.assertEquals(Optional.of(R.drawable.ic_as), TriggerAutosensValue(injector).icon()) } @BeforeEach diff --git a/plugins/main/src/main/java/info/nightscout/plugins/di/PluginsModule.kt b/plugins/main/src/main/java/info/nightscout/plugins/di/PluginsModule.kt index ea1fe6c73b..5fda8f728e 100644 --- a/plugins/main/src/main/java/info/nightscout/plugins/di/PluginsModule.kt +++ b/plugins/main/src/main/java/info/nightscout/plugins/di/PluginsModule.kt @@ -9,6 +9,7 @@ import info.nightscout.plugins.general.persistentNotification.DummyService import info.nightscout.plugins.general.smsCommunicator.SmsCommunicatorPlugin import info.nightscout.plugins.general.wear.WearFragment import info.nightscout.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin +import info.nightscout.plugins.iob.iobCobCalculator.data.AutosensDataObject @Module( includes = [ @@ -32,6 +33,8 @@ abstract class PluginsModule { @ContributesAndroidInjector abstract fun contributesWearFragment(): WearFragment @ContributesAndroidInjector abstract fun contributesDummyService(): DummyService + @ContributesAndroidInjector abstract fun autosensDataObjectInjector(): AutosensDataObject + @Module interface Bindings { diff --git a/plugins/main/src/main/java/info/nightscout/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.kt b/plugins/main/src/main/java/info/nightscout/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.kt index 2890d9b828..345005de50 100644 --- a/plugins/main/src/main/java/info/nightscout/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.kt +++ b/plugins/main/src/main/java/info/nightscout/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.kt @@ -38,6 +38,7 @@ import info.nightscout.interfaces.profile.ProfileFunction import info.nightscout.interfaces.utils.DecimalFormatter import info.nightscout.interfaces.utils.MidnightTime import info.nightscout.plugins.R +import info.nightscout.plugins.iob.iobCobCalculator.data.AutosensDataObject import info.nightscout.plugins.iob.iobCobCalculator.data.AutosensDataStoreObject import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.bus.RxBus @@ -599,6 +600,8 @@ class IobCobCalculatorPlugin @Inject constructor( override fun calculateIobFromTempBasalsIncludingConvertedExtended(): IobTotal = calculateIobToTimeFromTempBasalsIncludingConvertedExtended(dateUtil.now()) + override fun provideEmptyAutosensDataObject(): AutosensData = AutosensDataObject(injector) + override fun calculateIobToTimeFromTempBasalsIncludingConvertedExtended(toTime: Long): IobTotal { val total = IobTotal(toTime) val now = dateUtil.now() diff --git a/core/main/src/main/java/info/nightscout/core/iob/iobCobCalculator/data/AutosensDataObject.kt b/plugins/main/src/main/java/info/nightscout/plugins/iob/iobCobCalculator/data/AutosensDataObject.kt similarity index 91% rename from core/main/src/main/java/info/nightscout/core/iob/iobCobCalculator/data/AutosensDataObject.kt rename to plugins/main/src/main/java/info/nightscout/plugins/iob/iobCobCalculator/data/AutosensDataObject.kt index 84064cbaa2..523ebb57eb 100644 --- a/core/main/src/main/java/info/nightscout/core/iob/iobCobCalculator/data/AutosensDataObject.kt +++ b/plugins/main/src/main/java/info/nightscout/plugins/iob/iobCobCalculator/data/AutosensDataObject.kt @@ -1,4 +1,4 @@ -package info.nightscout.core.iob.iobCobCalculator.data +package info.nightscout.plugins.iob.iobCobCalculator.data import dagger.android.HasAndroidInjector import info.nightscout.interfaces.Constants @@ -22,18 +22,22 @@ class AutosensDataObject(injector: HasAndroidInjector) : AutosensData { @Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var dateUtil: DateUtil + init { + injector.androidInjector().inject(this) + } + override var time = 0L override var bg = 0.0 // mgdl override var pastSensitivity = "" override var deviation = 0.0 override var validDeviation = false - var activeCarbsList: MutableList = ArrayList() - var absorbed = 0.0 + override var activeCarbsList: MutableList = ArrayList() + override var absorbed = 0.0 override var carbsFromBolus = 0.0 override var cob = 0.0 - var bgi = 0.0 - var delta = 0.0 - var avgDelta = 0.0 + override var bgi = 0.0 + override var delta = 0.0 + override var avgDelta = 0.0 override var avgDeviation = 0.0 override var autosensResult = AutosensResult() override var slopeFromMaxDeviation = 0.0 @@ -86,7 +90,7 @@ class AutosensDataObject(injector: HasAndroidInjector) : AutosensData { } // remove carbs older than timeframe - fun removeOldCarbs(toTime: Long, isAAPSOrWeighted: Boolean) { + override fun removeOldCarbs(toTime: Long, isAAPSOrWeighted: Boolean) { val maxAbsorptionHours: Double = if (isAAPSOrWeighted) sp.getDouble(info.nightscout.core.utils.R.string.key_absorption_maxtime, Constants.DEFAULT_MAX_ABSORPTION_TIME) else sp.getDouble(info.nightscout.core.utils.R.string.key_absorption_cutoff, Constants.DEFAULT_MAX_ABSORPTION_TIME) @@ -102,7 +106,7 @@ class AutosensDataObject(injector: HasAndroidInjector) : AutosensData { } } - fun deductAbsorbedCarbs() { + override fun deductAbsorbedCarbs() { var ac = absorbed var i = 0 while (i < activeCarbsList.size && ac > 0) { @@ -115,7 +119,4 @@ class AutosensDataObject(injector: HasAndroidInjector) : AutosensData { i++ } } - init { - injector.androidInjector().inject(this) - } } \ No newline at end of file diff --git a/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/data/ProcessedDeviceStatusDataImpl.kt b/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/data/ProcessedDeviceStatusDataImpl.kt index 8131e49195..9f71a1bdb2 100644 --- a/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/data/ProcessedDeviceStatusDataImpl.kt +++ b/plugins/sync/src/main/java/info/nightscout/plugins/sync/nsclient/data/ProcessedDeviceStatusDataImpl.kt @@ -1,8 +1,10 @@ package info.nightscout.plugins.sync.nsclient.data import android.text.Spanned +import dagger.Lazy import dagger.android.HasAndroidInjector -import info.nightscout.core.aps.APSResultObject +import info.nightscout.interfaces.aps.APSResult +import info.nightscout.interfaces.aps.Loop import info.nightscout.interfaces.nsclient.NSSettingsStatus import info.nightscout.interfaces.nsclient.ProcessedDeviceStatusData import info.nightscout.interfaces.utils.HtmlHelper @@ -21,7 +23,8 @@ import javax.inject.Singleton class ProcessedDeviceStatusDataImpl @Inject constructor( private val rh: ResourceHelper, private val dateUtil: DateUtil, - private val sp: SP + private val sp: SP, + private val loop: Lazy ) : ProcessedDeviceStatusData { override var pumpData: ProcessedDeviceStatusData.PumpData? = null @@ -112,11 +115,10 @@ class ProcessedDeviceStatusDataImpl @Inject constructor( override val openApsTimestamp: Long get() = if (openAPSData.clockSuggested != 0L) openAPSData.clockSuggested else -1 - override fun getAPSResult(injector: HasAndroidInjector): APSResultObject { - val result = APSResultObject(injector) - result.json = openAPSData.suggested - result.date = openAPSData.clockSuggested - return result + override fun getAPSResult(injector: HasAndroidInjector): APSResult = + loop.get().provideEmptyAPSResultObject().also { + it.json = openAPSData.suggested + it.date = openAPSData.clockSuggested } override val uploaderStatus: String get() { diff --git a/ui/src/main/java/info/nightscout/ui/activities/ErrorHelperActivity.kt b/ui/src/main/java/info/nightscout/ui/activities/ErrorHelperActivity.kt index 055dfa9a49..f3339c054d 100644 --- a/ui/src/main/java/info/nightscout/ui/activities/ErrorHelperActivity.kt +++ b/ui/src/main/java/info/nightscout/ui/activities/ErrorHelperActivity.kt @@ -1,7 +1,7 @@ package info.nightscout.ui.activities import android.os.Bundle -import info.nightscout.core.services.AlarmSoundService +import info.nightscout.ui.services.AlarmSoundService import info.nightscout.core.ui.activities.DialogAppCompatActivity import info.nightscout.database.impl.AppRepository import info.nightscout.database.impl.transactions.InsertTherapyEventAnnouncementTransaction diff --git a/ui/src/main/java/info/nightscout/ui/di/UiModule.kt b/ui/src/main/java/info/nightscout/ui/di/UiModule.kt index 7cc9ab99d0..47158c0980 100644 --- a/ui/src/main/java/info/nightscout/ui/di/UiModule.kt +++ b/ui/src/main/java/info/nightscout/ui/di/UiModule.kt @@ -32,6 +32,7 @@ import info.nightscout.ui.dialogs.TempTargetDialog import info.nightscout.ui.dialogs.TreatmentDialog import info.nightscout.ui.dialogs.WizardDialog import info.nightscout.ui.dialogs.WizardInfoDialog +import info.nightscout.ui.services.AlarmSoundService import info.nightscout.ui.widget.Widget import info.nightscout.ui.widget.WidgetConfigureActivity @@ -39,6 +40,8 @@ import info.nightscout.ui.widget.WidgetConfigureActivity @Suppress("unused") abstract class UiModule { + @ContributesAndroidInjector abstract fun contributesAlarmSoundService(): AlarmSoundService + @ContributesAndroidInjector abstract fun contributesWidget(): Widget @ContributesAndroidInjector abstract fun contributesWidgetConfigureActivity(): WidgetConfigureActivity diff --git a/core/main/src/main/java/info/nightscout/core/services/AlarmSoundService.kt b/ui/src/main/java/info/nightscout/ui/services/AlarmSoundService.kt similarity index 99% rename from core/main/src/main/java/info/nightscout/core/services/AlarmSoundService.kt rename to ui/src/main/java/info/nightscout/ui/services/AlarmSoundService.kt index 8932c239d1..86e1aabe8e 100644 --- a/core/main/src/main/java/info/nightscout/core/services/AlarmSoundService.kt +++ b/ui/src/main/java/info/nightscout/ui/services/AlarmSoundService.kt @@ -1,4 +1,4 @@ -package info.nightscout.core.services +package info.nightscout.ui.services import android.content.Context import android.content.Intent diff --git a/core/main/src/main/java/info/nightscout/core/services/AlarmSoundServiceHelper.kt b/ui/src/main/java/info/nightscout/ui/services/AlarmSoundServiceHelper.kt similarity index 98% rename from core/main/src/main/java/info/nightscout/core/services/AlarmSoundServiceHelper.kt rename to ui/src/main/java/info/nightscout/ui/services/AlarmSoundServiceHelper.kt index 042f462afb..42aca554a5 100644 --- a/core/main/src/main/java/info/nightscout/core/services/AlarmSoundServiceHelper.kt +++ b/ui/src/main/java/info/nightscout/ui/services/AlarmSoundServiceHelper.kt @@ -1,4 +1,4 @@ -package info.nightscout.core.services +package info.nightscout.ui.services import android.content.ComponentName import android.content.Context diff --git a/wear/src/test/java/info/nightscout/androidaps/testing/mocks/BundleMock.java b/wear/src/test/java/info/nightscout/androidaps/testing/mocks/BundleMock.java index 47586d3597..0f04d47276 100644 --- a/wear/src/test/java/info/nightscout/androidaps/testing/mocks/BundleMock.java +++ b/wear/src/test/java/info/nightscout/androidaps/testing/mocks/BundleMock.java @@ -28,7 +28,7 @@ import java.util.HashMap; @SuppressWarnings({"unused", "rawtypes", "SuspiciousMethodCalls", "unchecked"}) public final class BundleMock { - +/* public static Bundle mock() { return mock(new HashMap<>()); } @@ -180,4 +180,5 @@ public final class BundleMock { return bundle; } + */ } \ No newline at end of file diff --git a/workflow/src/main/java/info/nightscout/workflow/PrepareIobAutosensGraphDataWorker.kt b/workflow/src/main/java/info/nightscout/workflow/PrepareIobAutosensGraphDataWorker.kt index 40bb033065..27898f8724 100644 --- a/workflow/src/main/java/info/nightscout/workflow/PrepareIobAutosensGraphDataWorker.kt +++ b/workflow/src/main/java/info/nightscout/workflow/PrepareIobAutosensGraphDataWorker.kt @@ -17,12 +17,12 @@ import info.nightscout.core.graph.data.Scale import info.nightscout.core.graph.data.ScaledDataPoint import info.nightscout.core.iob.combine import info.nightscout.core.iob.copy -import info.nightscout.core.iob.iobCobCalculator.data.AutosensDataObject import info.nightscout.core.utils.receivers.DataWorkerStorage import info.nightscout.core.utils.worker.LoggingWorker import info.nightscout.core.workflow.CalculationWorkflow import info.nightscout.database.ValueWrapper import info.nightscout.database.impl.AppRepository +import info.nightscout.interfaces.aps.AutosensData import info.nightscout.interfaces.aps.AutosensResult import info.nightscout.interfaces.aps.SMBDefaults import info.nightscout.interfaces.iob.IobCobCalculator @@ -94,7 +94,7 @@ class PrepareIobAutosensGraphDataWorker( } class AutosensDataPoint( - private val ad: AutosensDataObject, + private val ad: AutosensData, private val scale: Scale, private val chartTime: Long, private val rh: ResourceHelper @@ -163,7 +163,7 @@ class PrepareIobAutosensGraphDataWorker( val iob = data.iobCobCalculator.calculateFromTreatmentsAndTemps(time, profile) val baseBasalIob = data.iobCobCalculator.calculateAbsoluteIobFromBaseBasals(time) val absIob = IobTotal.combine(iob, baseBasalIob) - val autosensData = adsData.getAutosensDataAtTime(time) as AutosensDataObject? + val autosensData = adsData.getAutosensDataAtTime(time) if (abs(lastIob - iob.iob) > 0.02) { if (abs(lastIob - iob.iob) > 0.2) iobArray.add(ScaledDataPoint(time, lastIob, data.overviewData.iobScale)) iobArray.add(ScaledDataPoint(time, iob.iob, data.overviewData.iobScale)) diff --git a/workflow/src/main/java/info/nightscout/workflow/iob/IobCobOref1Worker.kt b/workflow/src/main/java/info/nightscout/workflow/iob/IobCobOref1Worker.kt index 795764b0bc..fa06f39be7 100644 --- a/workflow/src/main/java/info/nightscout/workflow/iob/IobCobOref1Worker.kt +++ b/workflow/src/main/java/info/nightscout/workflow/iob/IobCobOref1Worker.kt @@ -7,7 +7,6 @@ import androidx.work.workDataOf import dagger.android.HasAndroidInjector import info.nightscout.core.events.EventIobCalculationProgress import info.nightscout.core.extensions.target -import info.nightscout.core.iob.iobCobCalculator.data.AutosensDataObject import info.nightscout.core.utils.fabric.FabricPrivacy import info.nightscout.core.utils.receivers.DataWorkerStorage import info.nightscout.core.utils.worker.LoggingWorker @@ -115,7 +114,7 @@ class IobCobOref1Worker( } aapsLogger.debug(LTag.AUTOSENS, "Processing calculation thread: ${data.reason} ($i/${bucketedData.size})") val sens = profile.getIsfMgdl(bgTime) - val autosensData = AutosensDataObject(data.injector) + val autosensData = data.iobCobCalculator.provideEmptyAutosensDataObject() autosensData.time = bgTime if (previous != null) autosensData.activeCarbsList = previous.cloneCarbsList() else autosensData.activeCarbsList = ArrayList() diff --git a/workflow/src/main/java/info/nightscout/workflow/iob/IobCobOrefWorker.kt b/workflow/src/main/java/info/nightscout/workflow/iob/IobCobOrefWorker.kt index 9abf378e38..d371a78f74 100644 --- a/workflow/src/main/java/info/nightscout/workflow/iob/IobCobOrefWorker.kt +++ b/workflow/src/main/java/info/nightscout/workflow/iob/IobCobOrefWorker.kt @@ -6,7 +6,6 @@ import androidx.work.WorkerParameters import androidx.work.workDataOf import dagger.android.HasAndroidInjector import info.nightscout.core.events.EventIobCalculationProgress -import info.nightscout.core.iob.iobCobCalculator.data.AutosensDataObject import info.nightscout.core.utils.fabric.FabricPrivacy import info.nightscout.core.utils.receivers.DataWorkerStorage import info.nightscout.core.utils.worker.LoggingWorker @@ -56,7 +55,7 @@ class IobCobOrefWorker @Inject internal constructor( class IobCobOrefWorkerData( val injector: HasAndroidInjector, - val iobCobCalculatorPlugin: IobCobCalculator, // cannot be injected : HistoryBrowser uses different instance + val iobCobCalculator: IobCobCalculator, // cannot be injected : HistoryBrowser uses different instance val reason: String, val end: Long, val limitDataToOldestAvailable: Boolean, @@ -75,9 +74,9 @@ class IobCobOrefWorker @Inject internal constructor( return Result.success(workDataOf("Error" to "app still initializing")) } //log.debug("Locking calculateSensitivityData"); - val oldestTimeWithData = data.iobCobCalculatorPlugin.calculateDetectionStart(data.end, data.limitDataToOldestAvailable) + val oldestTimeWithData = data.iobCobCalculator.calculateDetectionStart(data.end, data.limitDataToOldestAvailable) // work on local copy and set back when finished - val ads = data.iobCobCalculatorPlugin.ads.clone() + val ads = data.iobCobCalculator.ads.clone() val bucketedData = ads.bucketedData val autosensDataTable = ads.autosensDataTable if (bucketedData == null || bucketedData.size < 3) { @@ -110,7 +109,7 @@ class IobCobOrefWorker @Inject internal constructor( } aapsLogger.debug(LTag.AUTOSENS, "Processing calculation thread: ${data.reason} ($i/${bucketedData.size})") val sens = profile.getIsfMgdl(bgTime) - val autosensData = AutosensDataObject(data.injector) + val autosensData = data.iobCobCalculator.provideEmptyAutosensDataObject() autosensData.time = bgTime if (previous != null) autosensData.activeCarbsList = previous.cloneCarbsList() else autosensData.activeCarbsList = ArrayList() @@ -125,7 +124,7 @@ class IobCobOrefWorker @Inject internal constructor( autosensData.bg = bg delta = bg - bucketedData[i + 1].value avgDelta = (bg - bucketedData[i + 3].value) / 3 - val iob = data.iobCobCalculatorPlugin.calculateFromTreatmentsAndTemps(bgTime, profile) + val iob = data.iobCobCalculator.calculateFromTreatmentsAndTemps(bgTime, profile) val bgi = -iob.activity * sens * 5 val deviation = delta - bgi val avgDeviation = ((avgDelta - bgi) * 1000).roundToLong() / 1000.0 @@ -260,7 +259,7 @@ class IobCobOrefWorker @Inject internal constructor( autosensData.autosensResult = sensitivity aapsLogger.debug(LTag.AUTOSENS, autosensData.toString()) } - data.iobCobCalculatorPlugin.ads = ads + data.iobCobCalculator.ads = ads Thread { SystemClock.sleep(1000) rxBus.send(EventAutosensCalculationFinished(data.cause))