TreatmentsPlugin -> dagger
This commit is contained in:
parent
377b5a9991
commit
ca9486fab3
23 changed files with 276 additions and 215 deletions
|
@ -37,9 +37,6 @@ import com.joanzapata.iconify.fonts.FontAwesomeModule;
|
|||
import javax.inject.Inject;
|
||||
|
||||
import dagger.android.AndroidInjection;
|
||||
import dagger.android.AndroidInjector;
|
||||
import dagger.android.DispatchingAndroidInjector;
|
||||
import dagger.android.HasAndroidInjector;
|
||||
import info.nightscout.androidaps.activities.HistoryBrowseActivity;
|
||||
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity;
|
||||
import info.nightscout.androidaps.activities.PreferencesActivity;
|
||||
|
@ -68,10 +65,7 @@ import info.nightscout.androidaps.utils.SP;
|
|||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
|
||||
public class MainActivity extends NoSplashAppCompatActivity implements HasAndroidInjector {
|
||||
|
||||
@Inject
|
||||
DispatchingAndroidInjector<Object> androidInjector;
|
||||
public class MainActivity extends NoSplashAppCompatActivity {
|
||||
|
||||
private CompositeDisposable disposable = new CompositeDisposable();
|
||||
|
||||
|
@ -354,12 +348,4 @@ public class MainActivity extends NoSplashAppCompatActivity implements HasAndroi
|
|||
return actionBarDrawerToggle.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns an {@link AndroidInjector}.
|
||||
*/
|
||||
@Override
|
||||
public AndroidInjector<Object> androidInjector() {
|
||||
return androidInjector;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -136,6 +136,7 @@ public class MainApp extends DaggerApplication {
|
|||
@Inject OpenAPSAMAPlugin openAPSAMAPlugin;
|
||||
@Inject OpenAPSSMBPlugin openAPSSMBPlugin;
|
||||
@Inject StatusLinePlugin statusLinePlugin;
|
||||
@Inject TreatmentsPlugin treatmentsPlugin;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
|
@ -215,7 +216,7 @@ public class MainApp extends DaggerApplication {
|
|||
if (Config.APS) pluginsList.add(openAPSSMBPlugin);
|
||||
pluginsList.add(NSProfilePlugin.getPlugin());
|
||||
if (!Config.NSCLIENT) pluginsList.add(LocalProfilePlugin.INSTANCE);
|
||||
pluginsList.add(TreatmentsPlugin.getPlugin());
|
||||
pluginsList.add(treatmentsPlugin);
|
||||
if (!Config.NSCLIENT) pluginsList.add(safetyPlugin);
|
||||
if (!Config.NSCLIENT) pluginsList.add(VersionCheckerPlugin.INSTANCE);
|
||||
if (Config.APS) pluginsList.add(StorageConstraintPlugin.getPlugin());
|
||||
|
|
|
@ -2,11 +2,13 @@ package info.nightscout.androidaps.activities
|
|||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import dagger.android.support.DaggerAppCompatActivity
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.utils.LocaleHelper
|
||||
|
||||
open class NoSplashAppCompatActivity : AppCompatActivity() {
|
||||
@Suppress("registered")
|
||||
open class NoSplashAppCompatActivity : DaggerAppCompatActivity() {
|
||||
|
||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||
setTheme(R.style.AppTheme_NoActionBar)
|
||||
super.onCreate(savedInstanceState)
|
||||
|
|
|
@ -8,14 +8,18 @@ import info.nightscout.androidaps.utils.OKDialog
|
|||
import info.nightscout.androidaps.utils.TddCalculator
|
||||
import info.nightscout.androidaps.utils.TirCalculator
|
||||
import kotlinx.android.synthetic.main.stats_activity.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class StatsActivity : NoSplashAppCompatActivity() {
|
||||
|
||||
@Inject
|
||||
lateinit var tddCalculator: TddCalculator
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.stats_activity)
|
||||
|
||||
stats_tdds.text = TddCalculator.stats()
|
||||
stats_tdds.text = tddCalculator.stats()
|
||||
stats_tir.text = TirCalculator.stats()
|
||||
stats_activity.text = ActivityMonitor.stats()
|
||||
|
||||
|
|
|
@ -12,10 +12,14 @@ import info.nightscout.androidaps.dialogs.ProfileViewerDialog
|
|||
import info.nightscout.androidaps.utils.*
|
||||
import kotlinx.android.synthetic.main.survey_activity.*
|
||||
import org.slf4j.LoggerFactory
|
||||
import javax.inject.Inject
|
||||
|
||||
class SurveyActivity : NoSplashAppCompatActivity() {
|
||||
private val log = LoggerFactory.getLogger(SurveyActivity::class.java)
|
||||
|
||||
@Inject
|
||||
lateinit var tddCalculator: TddCalculator
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.survey_activity)
|
||||
|
@ -26,7 +30,7 @@ class SurveyActivity : NoSplashAppCompatActivity() {
|
|||
val profileList = profileStore?.getProfileList() ?: return
|
||||
survey_spinner.adapter = ArrayAdapter(this, R.layout.spinner_centered, profileList)
|
||||
|
||||
survey_tdds.text = TddCalculator.stats()
|
||||
survey_tdds.text = tddCalculator.stats()
|
||||
survey_tir.text = TirCalculator.stats()
|
||||
survey_activity.text = ActivityMonitor.stats()
|
||||
|
||||
|
|
|
@ -3,14 +3,44 @@ package info.nightscout.androidaps.dependencyInjection
|
|||
import dagger.Module
|
||||
import dagger.android.ContributesAndroidInjector
|
||||
import info.nightscout.androidaps.MainActivity
|
||||
import info.nightscout.androidaps.activities.PreferencesActivity
|
||||
import info.nightscout.androidaps.activities.*
|
||||
import info.nightscout.androidaps.plugins.general.maintenance.activities.LogSettingActivity
|
||||
import info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity
|
||||
import info.nightscout.androidaps.plugins.pump.common.dialog.RileyLinkBLEScanActivity
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusActivity
|
||||
import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRHistoryActivity
|
||||
import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRUserOptionsActivity
|
||||
import info.nightscout.androidaps.plugins.pump.danaRS.activities.BLEScanActivity
|
||||
import info.nightscout.androidaps.plugins.pump.danaRS.activities.PairingHelperActivity
|
||||
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightAlertActivity
|
||||
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightPairingActivity
|
||||
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightPairingInformationActivity
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.dialog.MedtronicHistoryActivity
|
||||
import info.nightscout.androidaps.setupwizard.SetupWizardActivity
|
||||
|
||||
@Module
|
||||
abstract class ActivitiesModule {
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributeMainActivity(): MainActivity
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesPreferencesActivity(): PreferencesActivity
|
||||
@ContributesAndroidInjector abstract fun contributesBLEScanActivity(): BLEScanActivity
|
||||
@ContributesAndroidInjector abstract fun contributeBolusProgressHelperActivity(): BolusProgressHelperActivity
|
||||
@ContributesAndroidInjector abstract fun contributeDanaRHistoryActivity(): DanaRHistoryActivity
|
||||
@ContributesAndroidInjector abstract fun contributeDanaRUserOptionsActivity(): DanaRUserOptionsActivity
|
||||
@ContributesAndroidInjector abstract fun contributeErrorHelperActivity(): ErrorHelperActivity
|
||||
@ContributesAndroidInjector abstract fun contributesHistoryBrowseActivity(): HistoryBrowseActivity
|
||||
@ContributesAndroidInjector abstract fun contributesInsightAlertActivity(): InsightAlertActivity
|
||||
@ContributesAndroidInjector abstract fun contributesInsightPairingActivity(): InsightPairingActivity
|
||||
@ContributesAndroidInjector abstract fun contributesInsightPairingInformationActivity(): InsightPairingInformationActivity
|
||||
@ContributesAndroidInjector abstract fun contributesLogSettingActivity(): LogSettingActivity
|
||||
@ContributesAndroidInjector abstract fun contributeMainActivity(): MainActivity
|
||||
@ContributesAndroidInjector abstract fun contributesMedtronicHistoryActivity(): MedtronicHistoryActivity
|
||||
@ContributesAndroidInjector abstract fun contributesPairingHelperActivity(): PairingHelperActivity
|
||||
@ContributesAndroidInjector abstract fun contributesPreferencesActivity(): PreferencesActivity
|
||||
@ContributesAndroidInjector abstract fun contributesQuickWizardListActivity(): QuickWizardListActivity
|
||||
@ContributesAndroidInjector abstract fun contributesRequestDexcomPermissionActivity(): RequestDexcomPermissionActivity
|
||||
@ContributesAndroidInjector abstract fun contributesRileyLinkStatusActivity(): RileyLinkStatusActivity
|
||||
@ContributesAndroidInjector abstract fun contributesRileyLinkBLEScanActivity(): RileyLinkBLEScanActivity
|
||||
@ContributesAndroidInjector abstract fun contributesSetupWizardActivity(): SetupWizardActivity
|
||||
@ContributesAndroidInjector abstract fun contributesStatsActivity(): StatsActivity
|
||||
@ContributesAndroidInjector abstract fun contributesSurveyActivity(): SurveyActivity
|
||||
@ContributesAndroidInjector abstract fun contributesTDDStatsActivity(): TDDStatsActivity
|
||||
}
|
|
@ -17,6 +17,7 @@ import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
|
|||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation
|
||||
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective5
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionSendSMS
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||
import info.nightscout.androidaps.queue.commands.CommandSetProfile
|
||||
import info.nightscout.androidaps.services.DataService
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
|
|
|
@ -8,39 +8,22 @@ import info.nightscout.androidaps.plugins.aps.openAPSAMA.OpenAPSAMAFragment
|
|||
import info.nightscout.androidaps.plugins.aps.openAPSMA.OpenAPSMAFragment
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSSMB.OpenAPSSMBFragment
|
||||
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorFragment
|
||||
import info.nightscout.androidaps.plugins.profile.ns.NSProfileFragment
|
||||
|
||||
@Module
|
||||
abstract class FragmentsModule {
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesPreferencesFragment(): MyPreferenceFragment
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesOpenAPSAMAFragment(): OpenAPSAMAFragment
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesOpenAPSMAFragment(): OpenAPSMAFragment
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesOpenAPSSMBFragment(): OpenAPSSMBFragment
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesSmsCommunicatorFragment(): SmsCommunicatorFragment
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesCalibrationDialog(): CalibrationDialog
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesCarbsDialog(): CarbsDialog
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesCareDialog(): CareDialog
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesExtendedBolusDialog(): ExtendedBolusDialog
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesFillDialog(): FillDialog
|
||||
@ContributesAndroidInjector abstract fun contributesPreferencesFragment(): MyPreferenceFragment
|
||||
@ContributesAndroidInjector abstract fun contributesOpenAPSAMAFragment(): OpenAPSAMAFragment
|
||||
@ContributesAndroidInjector abstract fun contributesOpenAPSMAFragment(): OpenAPSMAFragment
|
||||
@ContributesAndroidInjector abstract fun contributesOpenAPSSMBFragment(): OpenAPSSMBFragment
|
||||
@ContributesAndroidInjector abstract fun contributesNSProfileFragment(): NSProfileFragment
|
||||
@ContributesAndroidInjector abstract fun contributesSmsCommunicatorFragment(): SmsCommunicatorFragment
|
||||
@ContributesAndroidInjector abstract fun contributesCalibrationDialog(): CalibrationDialog
|
||||
@ContributesAndroidInjector abstract fun contributesCarbsDialog(): CarbsDialog
|
||||
@ContributesAndroidInjector abstract fun contributesCareDialog(): CareDialog
|
||||
@ContributesAndroidInjector abstract fun contributesExtendedBolusDialog(): ExtendedBolusDialog
|
||||
@ContributesAndroidInjector abstract fun contributesFillDialog(): FillDialog
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract fun contributesInsulinDialog(): InsulinDialog
|
||||
|
|
|
@ -30,6 +30,9 @@ class ProfileSwitchDialog : DialogFragmentWithDate() {
|
|||
@Inject
|
||||
lateinit var profileFunction: ProfileFunction
|
||||
|
||||
@Inject
|
||||
lateinit var treatmentsPlugin: TreatmentsPlugin
|
||||
|
||||
override fun onSaveInstanceState(savedInstanceState: Bundle) {
|
||||
super.onSaveInstanceState(savedInstanceState)
|
||||
savedInstanceState.putDouble("overview_profileswitch_duration", overview_profileswitch_duration.value)
|
||||
|
@ -104,7 +107,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() {
|
|||
|
||||
activity?.let { activity ->
|
||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_profileswitch), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
|
||||
profileFunction.doProfileSwitch(profileStore, profile, duration.toInt(), percent, timeShift, eventTime)
|
||||
treatmentsPlugin.doProfileSwitch(profileStore, profile, duration.toInt(), percent, timeShift, eventTime)
|
||||
})
|
||||
}
|
||||
return true
|
||||
|
|
|
@ -1,19 +1,21 @@
|
|||
package info.nightscout.androidaps.interfaces;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||
import info.nightscout.androidaps.data.Intervals;
|
||||
import info.nightscout.androidaps.data.IobTotal;
|
||||
import info.nightscout.androidaps.data.MealData;
|
||||
import info.nightscout.androidaps.data.NonOverlappingIntervals;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.data.ProfileIntervals;
|
||||
import info.nightscout.androidaps.data.ProfileStore;
|
||||
import info.nightscout.androidaps.db.ExtendedBolus;
|
||||
import info.nightscout.androidaps.db.ProfileSwitch;
|
||||
import info.nightscout.androidaps.db.TempTarget;
|
||||
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||
import info.nightscout.androidaps.plugins.treatments.Treatment;
|
||||
import info.nightscout.androidaps.data.Intervals;
|
||||
import info.nightscout.androidaps.data.ProfileIntervals;
|
||||
|
||||
/**
|
||||
* Created by mike on 14.06.2016.
|
||||
|
@ -62,6 +64,8 @@ public interface TreatmentsInterface {
|
|||
ProfileSwitch getProfileSwitchFromHistory(long time);
|
||||
ProfileIntervals<ProfileSwitch> getProfileSwitchesFromHistory();
|
||||
void addToHistoryProfileSwitch(ProfileSwitch profileSwitch);
|
||||
void doProfileSwitch(@NotNull final ProfileStore profileStore, @NotNull final String profileName, final int duration, final int percentage, final int timeShift, final long date);
|
||||
void doProfileSwitch(final int duration, final int percentage, final int timeShift);
|
||||
|
||||
long oldestDataAvailable();
|
||||
|
||||
|
|
|
@ -6,8 +6,12 @@ package info.nightscout.androidaps.logging
|
|||
|
||||
interface AAPSLogger {
|
||||
|
||||
fun debug(message: String)
|
||||
fun debug(enable: Boolean, tag: LTag, message: String)
|
||||
fun debug(tag: LTag, message: String)
|
||||
fun info(tag: LTag, message: String)
|
||||
fun error(tag: LTag, message: String)
|
||||
fun error(message: String)
|
||||
fun error(message: String, throwable: Throwable)
|
||||
fun error(tag: LTag, message: String, throwable: Throwable)
|
||||
}
|
|
@ -8,6 +8,14 @@ import android.util.Log
|
|||
|
||||
class AAPSLoggerDebug : AAPSLogger {
|
||||
|
||||
override fun debug(message: String) {
|
||||
Log.d(LTag.CORE.tag, message)
|
||||
}
|
||||
|
||||
override fun debug(enable: Boolean, tag: LTag, message: String) {
|
||||
if (enable) Log.d(LTag.CORE.tag, message)
|
||||
}
|
||||
|
||||
override fun debug(tag: LTag, message: String) {
|
||||
Log.d(tag.tag, message)
|
||||
}
|
||||
|
@ -21,6 +29,14 @@ class AAPSLoggerDebug : AAPSLogger {
|
|||
|
||||
}
|
||||
|
||||
override fun error(message: String) {
|
||||
Log.e(LTag.CORE.tag, message)
|
||||
}
|
||||
|
||||
override fun error(message: String, throwable: Throwable) {
|
||||
Log.e(LTag.CORE.tag, message, throwable)
|
||||
}
|
||||
|
||||
override fun error(tag: LTag, message: String, throwable: Throwable) {
|
||||
Log.e(tag.tag, message, throwable)
|
||||
|
||||
|
|
|
@ -8,10 +8,19 @@ import org.slf4j.LoggerFactory
|
|||
|
||||
class AAPSLoggerProduction : AAPSLogger {
|
||||
|
||||
override fun debug(message: String) {
|
||||
LoggerFactory.getLogger(LTag.CORE.tag).debug(message)
|
||||
}
|
||||
|
||||
override fun debug(enable: Boolean, tag: LTag, message: String) {
|
||||
if (enable && L.isEnabled(tag.tag)) {
|
||||
LoggerFactory.getLogger(tag.tag).debug(message)
|
||||
}
|
||||
}
|
||||
|
||||
override fun debug(tag: LTag, message: String) {
|
||||
if (L.isEnabled(tag.tag)) {
|
||||
LoggerFactory.getLogger(tag.tag).debug(message)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,14 +34,20 @@ class AAPSLoggerProduction : AAPSLogger {
|
|||
override fun error(tag: LTag, message: String) {
|
||||
if (L.isEnabled(tag.tag)) {
|
||||
LoggerFactory.getLogger(tag.tag).error(message)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun error(message: String) {
|
||||
LoggerFactory.getLogger(LTag.CORE.tag).error(message)
|
||||
}
|
||||
|
||||
override fun error(message: String, throwable: Throwable) {
|
||||
LoggerFactory.getLogger(LTag.CORE.tag).error(message, throwable)
|
||||
}
|
||||
|
||||
override fun error(tag: LTag, message: String, throwable: Throwable) {
|
||||
if (L.isEnabled(tag.tag)) {
|
||||
LoggerFactory.getLogger(tag.tag).error(message, throwable)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,6 +14,4 @@ interface ProfileFunction {
|
|||
fun getUnits(): String
|
||||
fun getProfile(time: Long): Profile?
|
||||
fun prepareProfileSwitch(profileStore: ProfileStore, profileName: String, duration: Int, percentage: Int, timeShift: Int, date: Long): ProfileSwitch
|
||||
fun doProfileSwitch(profileStore: ProfileStore, profileName: String, duration: Int, percentage: Int, timeShift: Int, date: Long)
|
||||
fun doProfileSwitch(duration: Int, percentage: Int, timeShift: Int)
|
||||
}
|
|
@ -6,12 +6,11 @@ import info.nightscout.androidaps.data.Profile
|
|||
import info.nightscout.androidaps.data.ProfileStore
|
||||
import info.nightscout.androidaps.db.ProfileSwitch
|
||||
import info.nightscout.androidaps.db.Source
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import java.security.spec.InvalidParameterSpecException
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class ProfileFunctionImplementation constructor(private val sp: SP) : ProfileFunction {
|
||||
|
||||
override fun getProfileName(): String =
|
||||
|
@ -34,7 +33,7 @@ class ProfileFunctionImplementation constructor(private val sp: SP) : ProfileFun
|
|||
}
|
||||
|
||||
override fun getProfile(time: Long): Profile? =
|
||||
getProfile(System.currentTimeMillis())
|
||||
ProfileFunctions.getInstance().getProfile(System.currentTimeMillis())
|
||||
|
||||
override fun getUnits(): String =
|
||||
sp.getString(R.string.key_units, Constants.MGDL)
|
||||
|
@ -54,27 +53,4 @@ class ProfileFunctionImplementation constructor(private val sp: SP) : ProfileFun
|
|||
profileSwitch.percentage = percentage
|
||||
return profileSwitch
|
||||
}
|
||||
|
||||
override fun doProfileSwitch(profileStore: ProfileStore, profileName: String, duration: Int, percentage: Int, timeShift: Int, date: Long) {
|
||||
val profileSwitch = prepareProfileSwitch(profileStore, profileName, duration, percentage, timeShift, date)
|
||||
TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch)
|
||||
if (percentage == 90 && duration == 10)
|
||||
sp.putBoolean(R.string.key_objectiveuseprofileswitch, true)
|
||||
}
|
||||
|
||||
override fun doProfileSwitch(duration: Int, percentage: Int, timeShift: Int) {
|
||||
getProfile()?.let {
|
||||
val profileSwitch = ProfileSwitch()
|
||||
profileSwitch.date = System.currentTimeMillis()
|
||||
profileSwitch.source = Source.USER
|
||||
profileSwitch.profileName = ProfileFunctions.getInstance().getProfileName(System.currentTimeMillis(), customized = false, showRemainingTime = false)
|
||||
profileSwitch.profileJson = it.data.toString()
|
||||
profileSwitch.profilePlugin = ConfigBuilderPlugin.getPlugin().activeProfileInterface::class.java.name
|
||||
profileSwitch.durationInMinutes = duration
|
||||
profileSwitch.isCPP = percentage != 100 || timeShift != 0
|
||||
profileSwitch.timeshift = timeShift
|
||||
profileSwitch.percentage = percentage
|
||||
TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -182,30 +182,4 @@ public class ProfileFunctions implements ProfileFunction {
|
|||
return profileSwitch;
|
||||
}
|
||||
|
||||
public void doProfileSwitch(@NotNull final ProfileStore profileStore, @NotNull final String profileName, final int duration, final int percentage, final int timeShift, final long date) {
|
||||
ProfileSwitch profileSwitch = prepareProfileSwitch(profileStore, profileName, duration, percentage, timeShift, date);
|
||||
TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch);
|
||||
if (percentage == 90 && duration == 10)
|
||||
SP.putBoolean(R.string.key_objectiveuseprofileswitch, true);
|
||||
}
|
||||
|
||||
public void doProfileSwitch(final int duration, final int percentage, final int timeShift) {
|
||||
ProfileSwitch profileSwitch = TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(System.currentTimeMillis());
|
||||
if (profileSwitch != null) {
|
||||
profileSwitch = new ProfileSwitch();
|
||||
profileSwitch.date = System.currentTimeMillis();
|
||||
profileSwitch.source = Source.USER;
|
||||
profileSwitch.profileName = getInstance().getProfileName(System.currentTimeMillis(), false, false);
|
||||
profileSwitch.profileJson = getInstance().getProfile().getData().toString();
|
||||
profileSwitch.profilePlugin = ConfigBuilderPlugin.getPlugin().getActiveProfileInterface().getClass().getName();
|
||||
profileSwitch.durationInMinutes = duration;
|
||||
profileSwitch.isCPP = percentage != 100 || timeShift != 0;
|
||||
profileSwitch.timeshift = timeShift;
|
||||
profileSwitch.percentage = percentage;
|
||||
TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch);
|
||||
} else {
|
||||
log.error("No profile switch existing");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
|||
import info.nightscout.androidaps.plugins.general.automation.elements.InputProfileName;
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.LabelWithElement;
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.LayoutBuilder;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.JsonHelper;
|
||||
|
@ -33,7 +34,7 @@ public class ActionProfileSwitch extends Action {
|
|||
// Prevent action if active profile is already active
|
||||
// but we don't have a trigger IS_NOT_EQUAL
|
||||
// so check is in the doRun()
|
||||
ProfileInterface profileInterface = ConfigBuilderPlugin.getPlugin().getActiveProfileInterface();
|
||||
ProfileInterface profileInterface = ConfigBuilderPlugin.getPlugin().getActiveProfileInterface();
|
||||
if (profileInterface != null) {
|
||||
ProfileStore profileStore = profileInterface.getProfile();
|
||||
if (profileStore != null) {
|
||||
|
@ -62,13 +63,13 @@ public class ActionProfileSwitch extends Action {
|
|||
|
||||
String activeProfileName = ProfileFunctions.getInstance().getProfileName();
|
||||
//Check for uninitialized profileName
|
||||
if ( profileName.equals("")){
|
||||
if (profileName.equals("")) {
|
||||
log.error("Selected profile not initialized");
|
||||
if (callback != null)
|
||||
callback.result(new PumpEnactResult().success(false).comment(R.string.error_field_must_not_be_empty)).run();
|
||||
return;
|
||||
}
|
||||
if ( ProfileFunctions.getInstance().getProfile() == null){
|
||||
if (ProfileFunctions.getInstance().getProfile() == null) {
|
||||
log.error("ProfileFunctions not initialized");
|
||||
if (callback != null)
|
||||
callback.result(new PumpEnactResult().success(false).comment(R.string.noprofile)).run();
|
||||
|
@ -90,15 +91,15 @@ public class ActionProfileSwitch extends Action {
|
|||
}
|
||||
ProfileStore profileStore = activeProfile.getProfile();
|
||||
if (profileStore == null) return;
|
||||
if(profileStore.getSpecificProfile(profileName) == null) {
|
||||
if (profileStore.getSpecificProfile(profileName) == null) {
|
||||
if (L.isEnabled(L.AUTOMATION))
|
||||
log.error("Selected profile does not exist! - "+ profileName);
|
||||
log.error("Selected profile does not exist! - " + profileName);
|
||||
if (callback != null)
|
||||
callback.result(new PumpEnactResult().success(false).comment(R.string.notexists)).run();
|
||||
return;
|
||||
}
|
||||
|
||||
ProfileFunctions.getInstance().doProfileSwitch(profileStore, profileName, 0, 100, 0, DateUtil.now());
|
||||
TreatmentsPlugin.getPlugin().doProfileSwitch(profileStore, profileName, 0, 100, 0, DateUtil.now());
|
||||
if (callback != null)
|
||||
callback.result(new PumpEnactResult().success(true).comment(R.string.ok)).run();
|
||||
}
|
||||
|
|
|
@ -6,21 +6,21 @@ import com.google.common.base.Optional;
|
|||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.Comparator;
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.InputDuration;
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.InputPercent;
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.LabelWithElement;
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.LayoutBuilder;
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerProfilePercent;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.androidaps.utils.JsonHelper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class ActionProfileSwitchPercent extends Action {
|
||||
private static final Logger log = LoggerFactory.getLogger(ActionProfileSwitchPercent.class);
|
||||
|
@ -47,7 +47,7 @@ public class ActionProfileSwitchPercent extends Action {
|
|||
|
||||
@Override
|
||||
public void doAction(Callback callback) {
|
||||
ProfileFunctions.getInstance().doProfileSwitch((int) duration.getValue(), (int) pct.getValue(), 0);
|
||||
TreatmentsPlugin.getPlugin().doProfileSwitch((int) duration.getValue(), (int) pct.getValue(), 0);
|
||||
if (callback != null)
|
||||
callback.result(new PumpEnactResult().success(true).comment(R.string.ok)).run();
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ import javax.inject.Singleton
|
|||
@Singleton
|
||||
class SmsCommunicatorPlugin @Inject constructor(
|
||||
val configBuilderPlugin: ConfigBuilderPlugin,
|
||||
val treatmentsPlugin: TreatmentsPlugin,
|
||||
val resourceHelper: ResourceHelper,
|
||||
val constraintChecker: ConstraintChecker,
|
||||
val aapsLogger: AAPSLogger
|
||||
|
@ -467,7 +468,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
val finalPercentage = percentage
|
||||
messageToConfirm = AuthRequest(this, receivedSms, reply, passCode, object : SmsAction(list[pindex - 1] as String, finalPercentage) {
|
||||
override fun run() {
|
||||
ProfileFunctions.getInstance().doProfileSwitch(store, list[pindex - 1] as String, 0, finalPercentage, 0, DateUtil.now())
|
||||
treatmentsPlugin.doProfileSwitch(store, list[pindex - 1] as String, 0, finalPercentage, 0, DateUtil.now())
|
||||
sendSMS(Sms(receivedSms.phoneNumber, R.string.profileswitchcreated))
|
||||
}
|
||||
})
|
||||
|
|
|
@ -679,8 +679,7 @@ public class ActionStringHandler {
|
|||
}
|
||||
|
||||
//send profile to pumpe
|
||||
new NewNSTreatmentDialog(); //init
|
||||
ProfileFunctions.getInstance().doProfileSwitch(0, percentage, timeshift);
|
||||
TreatmentsPlugin.getPlugin().doProfileSwitch(0, percentage, timeshift);
|
||||
}
|
||||
|
||||
private static void generateTempTarget(int duration, double low, double high) {
|
||||
|
|
|
@ -6,12 +6,13 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.widget.AdapterView
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.fragment.app.Fragment
|
||||
import dagger.android.support.DaggerFragment
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
|
||||
import info.nightscout.androidaps.plugins.profile.ns.events.EventNSProfileUpdateGUI
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
|
@ -21,8 +22,13 @@ import io.reactivex.disposables.CompositeDisposable
|
|||
import kotlinx.android.synthetic.main.close.*
|
||||
import kotlinx.android.synthetic.main.nsprofile_fragment.*
|
||||
import kotlinx.android.synthetic.main.profileviewer_fragment.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class NSProfileFragment : DaggerFragment() {
|
||||
|
||||
@Inject
|
||||
lateinit var treatmentsPlugin: TreatmentsPlugin
|
||||
|
||||
class NSProfileFragment : Fragment() {
|
||||
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
|
@ -42,7 +48,7 @@ class NSProfileFragment : Fragment() {
|
|||
activity?.let { activity ->
|
||||
OKDialog.showConfirmation(activity, MainApp.gs(R.string.nsprofile),
|
||||
MainApp.gs(R.string.activate_profile) + ": " + name + " ?", Runnable {
|
||||
ProfileFunctions.getInstance().doProfileSwitch(store, name, 0, 100, 0, DateUtil.now())
|
||||
treatmentsPlugin.doProfileSwitch(store, name, 0, 100, 0, DateUtil.now())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,16 +7,18 @@ import androidx.annotation.Nullable;
|
|||
|
||||
import com.google.firebase.analytics.FirebaseAnalytics;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.activities.ErrorHelperActivity;
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||
import info.nightscout.androidaps.data.Intervals;
|
||||
import info.nightscout.androidaps.data.Iob;
|
||||
|
@ -26,8 +28,10 @@ import info.nightscout.androidaps.data.NonOverlappingIntervals;
|
|||
import info.nightscout.androidaps.data.OverlappingIntervals;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.data.ProfileIntervals;
|
||||
import info.nightscout.androidaps.data.ProfileStore;
|
||||
import info.nightscout.androidaps.db.ExtendedBolus;
|
||||
import info.nightscout.androidaps.db.ProfileSwitch;
|
||||
import info.nightscout.androidaps.db.Source;
|
||||
import info.nightscout.androidaps.db.TempTarget;
|
||||
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||
import info.nightscout.androidaps.events.EventReloadProfileSwitchData;
|
||||
|
@ -40,12 +44,12 @@ import info.nightscout.androidaps.interfaces.PluginDescription;
|
|||
import info.nightscout.androidaps.interfaces.PluginType;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.interfaces.TreatmentsInterface;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.logging.AAPSLogger;
|
||||
import info.nightscout.androidaps.logging.LTag;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
||||
import info.nightscout.androidaps.activities.ErrorHelperActivity;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification;
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData;
|
||||
|
@ -59,26 +63,33 @@ import info.nightscout.androidaps.utils.DateUtil;
|
|||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
import info.nightscout.androidaps.utils.SP;
|
||||
import info.nightscout.androidaps.utils.T;
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* Created by mike on 05.08.2016.
|
||||
*/
|
||||
@Singleton
|
||||
public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface {
|
||||
private Logger log = LoggerFactory.getLogger(L.DATATREATMENTS);
|
||||
private final AAPSLogger aapsLogger;
|
||||
private final MainApp mainApp;
|
||||
private final ResourceHelper resourceHelper;
|
||||
private final ProfileFunction profileFunction;
|
||||
private final ConfigBuilderPlugin configBuilderPlugin;
|
||||
|
||||
private CompositeDisposable disposable = new CompositeDisposable();
|
||||
|
||||
private static TreatmentsPlugin treatmentsPlugin;
|
||||
|
||||
/**
|
||||
* @deprecated Use dagger to get an instance
|
||||
*/
|
||||
@Deprecated
|
||||
public static TreatmentsPlugin getPlugin() {
|
||||
if (treatmentsPlugin == null)
|
||||
treatmentsPlugin = new TreatmentsPlugin();
|
||||
throw new IllegalStateException("Accessing TreatmentsPlugin before first instantiation");
|
||||
return treatmentsPlugin;
|
||||
}
|
||||
|
||||
private TreatmentService service;
|
||||
protected TreatmentService service;
|
||||
|
||||
private IobTotal lastTreatmentCalculation;
|
||||
private IobTotal lastTempBasalsCalculation;
|
||||
|
@ -89,7 +100,13 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
private final Intervals<TempTarget> tempTargets = new OverlappingIntervals<>();
|
||||
private final ProfileIntervals<ProfileSwitch> profiles = new ProfileIntervals<>();
|
||||
|
||||
public TreatmentsPlugin() {
|
||||
@Inject
|
||||
public TreatmentsPlugin(AAPSLogger aapsLogger,
|
||||
ResourceHelper resourceHelper,
|
||||
MainApp mainApp,
|
||||
ConfigBuilderPlugin configBuilderPlugin,
|
||||
ProfileFunction profileFunction
|
||||
) {
|
||||
super(new PluginDescription()
|
||||
.mainType(PluginType.TREATMENT)
|
||||
.fragmentClass(TreatmentsFragment.class.getName())
|
||||
|
@ -98,19 +115,24 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
.alwaysEnabled(true)
|
||||
.description(R.string.description_treatments)
|
||||
);
|
||||
this.service = new TreatmentService();
|
||||
this.aapsLogger = aapsLogger;
|
||||
this.resourceHelper = resourceHelper;
|
||||
this.mainApp = mainApp;
|
||||
this.configBuilderPlugin = configBuilderPlugin;
|
||||
this.profileFunction = profileFunction;
|
||||
treatmentsPlugin = this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
this.service = new TreatmentService();
|
||||
initializeData(range());
|
||||
super.onStart();
|
||||
disposable.add(RxBus.INSTANCE
|
||||
.toObservable(EventReloadTreatmentData.class)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe(event -> {
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("EventReloadTreatmentData");
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "EventReloadTreatmentData");
|
||||
initializeTreatmentData(range());
|
||||
initializeExtendedBolusData(range());
|
||||
updateTotalIOBTreatments();
|
||||
|
@ -134,8 +156,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
.toObservable(EventReloadTempBasalData.class)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe(event -> {
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("EventReloadTempBasalData");
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "EventReloadTempBasalData");
|
||||
initializeTempBasalData(range());
|
||||
updateTotalIOBTempBasals();
|
||||
},
|
||||
|
@ -155,9 +176,9 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
|
||||
private long range() {
|
||||
double dia = Constants.defaultDIA;
|
||||
if (ConfigBuilderPlugin.getPlugin() != null && ProfileFunctions.getInstance().getProfile() != null)
|
||||
dia = ProfileFunctions.getInstance().getProfile().getDia();
|
||||
return (long) (60 * 60 * 1000L * (24 + dia));
|
||||
if (profileFunction.getProfile() != null)
|
||||
dia = profileFunction.getProfile().getDia();
|
||||
return (long) (60 * 60 * 1000L * (24 + dia));
|
||||
}
|
||||
|
||||
public void initializeData(long range) {
|
||||
|
@ -169,8 +190,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
}
|
||||
|
||||
private void initializeTreatmentData(long range) {
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("initializeTreatmentData");
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "initializeTreatmentData");
|
||||
synchronized (treatments) {
|
||||
treatments.clear();
|
||||
treatments.addAll(getService().getTreatmentDataFromTime(DateUtil.now() - range, false));
|
||||
|
@ -178,8 +198,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
}
|
||||
|
||||
private void initializeTempBasalData(long range) {
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("initializeTempBasalData");
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "initializeTempBasalData");
|
||||
synchronized (tempBasals) {
|
||||
tempBasals.reset().add(MainApp.getDbHelper().getTemporaryBasalsDataFromTime(DateUtil.now() - range, false));
|
||||
}
|
||||
|
@ -187,8 +206,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
}
|
||||
|
||||
private void initializeExtendedBolusData(long range) {
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("initializeExtendedBolusData");
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "initializeExtendedBolusData");
|
||||
synchronized (extendedBoluses) {
|
||||
extendedBoluses.reset().add(MainApp.getDbHelper().getExtendedBolusDataFromTime(DateUtil.now() - range, false));
|
||||
}
|
||||
|
@ -196,16 +214,14 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
}
|
||||
|
||||
private void initializeTempTargetData(long range) {
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("initializeTempTargetData");
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "initializeTempTargetData");
|
||||
synchronized (tempTargets) {
|
||||
tempTargets.reset().add(MainApp.getDbHelper().getTemptargetsDataFromTime(DateUtil.now() - range, false));
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeProfileSwitchData(long range) {
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("initializeProfileSwitchData");
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "initializeProfileSwitchData");
|
||||
synchronized (profiles) {
|
||||
profiles.reset().add(MainApp.getDbHelper().getProfileSwitchData(DateUtil.now() - range, false));
|
||||
}
|
||||
|
@ -220,22 +236,22 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
public IobTotal getCalculationToTimeTreatments(long time) {
|
||||
IobTotal total = new IobTotal(time);
|
||||
|
||||
Profile profile = ProfileFunctions.getInstance().getProfile();
|
||||
Profile profile = profileFunction.getProfile();
|
||||
if (profile == null)
|
||||
return total;
|
||||
|
||||
InsulinInterface insulinInterface = ConfigBuilderPlugin.getPlugin().getActiveInsulin();
|
||||
InsulinInterface insulinInterface = configBuilderPlugin.getActiveInsulin();
|
||||
if (insulinInterface == null)
|
||||
return total;
|
||||
|
||||
PumpInterface pumpInterface = ConfigBuilderPlugin.getPlugin().getActivePump();
|
||||
PumpInterface pumpInterface = configBuilderPlugin.getActivePump();
|
||||
if (pumpInterface == null)
|
||||
return total;
|
||||
|
||||
double dia = profile.getDia();
|
||||
|
||||
synchronized (treatments) {
|
||||
for (Integer pos = 0; pos < treatments.size(); pos++) {
|
||||
for (int pos = 0; pos < treatments.size(); pos++) {
|
||||
Treatment t = treatments.get(pos);
|
||||
if (!t.isValid) continue;
|
||||
if (t.date > time) continue;
|
||||
|
@ -276,7 +292,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
public MealData getMealData() {
|
||||
MealData result = new MealData();
|
||||
|
||||
Profile profile = ProfileFunctions.getInstance().getProfile();
|
||||
Profile profile = profileFunction.getProfile();
|
||||
if (profile == null) return result;
|
||||
|
||||
long now = System.currentTimeMillis();
|
||||
|
@ -344,17 +360,13 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
|
||||
long time = System.currentTimeMillis();
|
||||
synchronized (treatments) {
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: AllTreatmentsInDb: {}", MedtronicUtil.getGsonInstanceCore().toJson(treatments));
|
||||
aapsLogger.debug(MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: AllTreatmentsInDb: " + MedtronicUtil.getGsonInstanceCore().toJson(treatments));
|
||||
|
||||
for (Treatment t : treatments) {
|
||||
if (t.date <= time && t.date >= fromTimestamp)
|
||||
in5minback.add(t);
|
||||
}
|
||||
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: FilteredTreatments: AfterTime={}, Items={}", fromTimestamp, MedtronicUtil.getGsonInstanceCore().toJson(in5minback));
|
||||
|
||||
aapsLogger.debug(MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: FilteredTreatments: AfterTime={}, Items={} " + fromTimestamp + " " + MedtronicUtil.getGsonInstanceCore().toJson(in5minback));
|
||||
return in5minback;
|
||||
}
|
||||
}
|
||||
|
@ -364,7 +376,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
public List<Treatment> getTreatments5MinBackFromHistory(long time) {
|
||||
List<Treatment> in5minback = new ArrayList<>();
|
||||
synchronized (treatments) {
|
||||
for (Integer pos = 0; pos < treatments.size(); pos++) {
|
||||
for (int pos = 0; pos < treatments.size(); pos++) {
|
||||
Treatment t = treatments.get(pos);
|
||||
if (!t.isValid)
|
||||
continue;
|
||||
|
@ -383,12 +395,11 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
for (Treatment t : treatments) {
|
||||
if (!t.isValid)
|
||||
continue;
|
||||
if (t.date > last && t.insulin > 0 && t.isValid && t.date <= now)
|
||||
if (t.date > last && t.insulin > 0 && t.date <= now)
|
||||
last = t.date;
|
||||
}
|
||||
}
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("Last bolus time: " + new Date(last).toLocaleString());
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "Last bolus time: " + DateUtil.dateAndTimeString(last));
|
||||
return last;
|
||||
}
|
||||
|
||||
|
@ -399,12 +410,11 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
for (Treatment t : treatments) {
|
||||
if (!t.isValid)
|
||||
continue;
|
||||
if (t.date > last && t.insulin > 0 && t.isValid && t.date <= now && isSMB == t.isSMB)
|
||||
if (t.date > last && t.insulin > 0 && t.date <= now && isSMB == t.isSMB)
|
||||
last = t.date;
|
||||
}
|
||||
}
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
log.debug("Last manual bolus time: " + new Date(last).toLocaleString());
|
||||
aapsLogger.debug(LTag.DATATREATMENTS, "Last manual bolus time: " + DateUtil.dateAndTimeString(last));
|
||||
return last;
|
||||
}
|
||||
|
||||
|
@ -443,16 +453,20 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
public IobTotal getCalculationToTimeTempBasals(long time, boolean truncate, long truncateTime) {
|
||||
IobTotal total = new IobTotal(time);
|
||||
|
||||
InsulinInterface insulinInterface = ConfigBuilderPlugin.getPlugin().getActiveInsulin();
|
||||
InsulinInterface insulinInterface = configBuilderPlugin.getActiveInsulin();
|
||||
if (insulinInterface == null)
|
||||
return total;
|
||||
|
||||
PumpInterface pumpInterface = configBuilderPlugin.getActivePump();
|
||||
if (pumpInterface == null)
|
||||
return total;
|
||||
|
||||
synchronized (tempBasals) {
|
||||
for (Integer pos = 0; pos < tempBasals.size(); pos++) {
|
||||
TemporaryBasal t = tempBasals.get(pos);
|
||||
if (t.date > time) continue;
|
||||
IobTotal calc;
|
||||
Profile profile = ProfileFunctions.getInstance().getProfile(t.date);
|
||||
Profile profile = profileFunction.getProfile(t.date);
|
||||
if (profile == null) continue;
|
||||
if (truncate && t.end() > truncateTime) {
|
||||
TemporaryBasal dummyTemp = new TemporaryBasal();
|
||||
|
@ -466,14 +480,14 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
total.plus(calc);
|
||||
}
|
||||
}
|
||||
if (ConfigBuilderPlugin.getPlugin().getActivePump().isFakingTempsByExtendedBoluses()) {
|
||||
if (pumpInterface.isFakingTempsByExtendedBoluses()) {
|
||||
IobTotal totalExt = new IobTotal(time);
|
||||
synchronized (extendedBoluses) {
|
||||
for (Integer pos = 0; pos < extendedBoluses.size(); pos++) {
|
||||
for (int pos = 0; pos < extendedBoluses.size(); pos++) {
|
||||
ExtendedBolus e = extendedBoluses.get(pos);
|
||||
if (e.date > time) continue;
|
||||
IobTotal calc;
|
||||
Profile profile = ProfileFunctions.getInstance().getProfile(e.date);
|
||||
Profile profile = profileFunction.getProfile(e.date);
|
||||
if (profile == null) continue;
|
||||
if (truncate && e.end() > truncateTime) {
|
||||
ExtendedBolus dummyExt = new ExtendedBolus();
|
||||
|
@ -499,16 +513,20 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
public IobTotal getCalculationToTimeTempBasals(long time, long truncateTime, AutosensResult lastAutosensResult, boolean exercise_mode, int half_basal_exercise_target, boolean isTempTarget) {
|
||||
IobTotal total = new IobTotal(time);
|
||||
|
||||
InsulinInterface insulinInterface = ConfigBuilderPlugin.getPlugin().getActiveInsulin();
|
||||
InsulinInterface insulinInterface = configBuilderPlugin.getActiveInsulin();
|
||||
if (insulinInterface == null)
|
||||
return total;
|
||||
|
||||
PumpInterface pumpInterface = configBuilderPlugin.getActivePump();
|
||||
if (pumpInterface == null)
|
||||
return total;
|
||||
|
||||
synchronized (tempBasals) {
|
||||
for (int pos = 0; pos < tempBasals.size(); pos++) {
|
||||
TemporaryBasal t = tempBasals.get(pos);
|
||||
if (t.date > time) continue;
|
||||
IobTotal calc;
|
||||
Profile profile = ProfileFunctions.getInstance().getProfile(t.date);
|
||||
Profile profile = profileFunction.getProfile(t.date);
|
||||
if (profile == null) continue;
|
||||
if (t.end() > truncateTime) {
|
||||
TemporaryBasal dummyTemp = new TemporaryBasal();
|
||||
|
@ -522,14 +540,14 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
total.plus(calc);
|
||||
}
|
||||
}
|
||||
if (ConfigBuilderPlugin.getPlugin().getActivePump().isFakingTempsByExtendedBoluses()) {
|
||||
if (pumpInterface.isFakingTempsByExtendedBoluses()) {
|
||||
IobTotal totalExt = new IobTotal(time);
|
||||
synchronized (extendedBoluses) {
|
||||
for (int pos = 0; pos < extendedBoluses.size(); pos++) {
|
||||
ExtendedBolus e = extendedBoluses.get(pos);
|
||||
if (e.date > time) continue;
|
||||
IobTotal calc;
|
||||
Profile profile = ProfileFunctions.getInstance().getProfile(e.date);
|
||||
Profile profile = profileFunction.getProfile(e.date);
|
||||
if (profile == null) continue;
|
||||
if (e.end() > truncateTime) {
|
||||
ExtendedBolus dummyExt = new ExtendedBolus();
|
||||
|
@ -564,7 +582,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
if (tb != null)
|
||||
return tb;
|
||||
ExtendedBolus eb = getExtendedBolusFromHistory(time);
|
||||
if (eb != null && ConfigBuilderPlugin.getPlugin().getActivePump().isFakingTempsByExtendedBoluses())
|
||||
if (eb != null && configBuilderPlugin.getActivePump().isFakingTempsByExtendedBoluses())
|
||||
return new TemporaryBasal(eb);
|
||||
return null;
|
||||
}
|
||||
|
@ -582,11 +600,11 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
boolean newRecordCreated = MainApp.getDbHelper().createOrUpdate(extendedBolus);
|
||||
if (newRecordCreated) {
|
||||
if (extendedBolus.durationInMinutes == 0) {
|
||||
if (ConfigBuilderPlugin.getPlugin().getActivePump().isFakingTempsByExtendedBoluses())
|
||||
if (configBuilderPlugin.getActivePump().isFakingTempsByExtendedBoluses())
|
||||
NSUpload.uploadTempBasalEnd(extendedBolus.date, true, extendedBolus.pumpId);
|
||||
else
|
||||
NSUpload.uploadExtendedBolusEnd(extendedBolus.date, extendedBolus.pumpId);
|
||||
} else if (ConfigBuilderPlugin.getPlugin().getActivePump().isFakingTempsByExtendedBoluses())
|
||||
} else if (configBuilderPlugin.getActivePump().isFakingTempsByExtendedBoluses())
|
||||
NSUpload.uploadTempBasalStartAbsolute(new TemporaryBasal(extendedBolus), extendedBolus.insulin);
|
||||
else
|
||||
NSUpload.uploadExtendedBolus(extendedBolus);
|
||||
|
@ -628,8 +646,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
public boolean addToHistoryTreatment(DetailedBolusInfo detailedBolusInfo, boolean allowUpdate) {
|
||||
boolean medtronicPump = MedtronicUtil.isMedtronicPump();
|
||||
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: addToHistoryTreatment::isMedtronicPump={}", medtronicPump);
|
||||
aapsLogger.debug(MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: addToHistoryTreatment::isMedtronicPump={} " + medtronicPump);
|
||||
|
||||
Treatment treatment = new Treatment();
|
||||
treatment.date = detailedBolusInfo.date;
|
||||
|
@ -640,13 +657,11 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
treatment.isSMB = detailedBolusInfo.isSMB;
|
||||
if (detailedBolusInfo.carbTime == 0)
|
||||
treatment.carbs = detailedBolusInfo.carbs;
|
||||
treatment.source = detailedBolusInfo.source;
|
||||
treatment.mealBolus = treatment.carbs > 0;
|
||||
treatment.boluscalc = detailedBolusInfo.boluscalc != null ? detailedBolusInfo.boluscalc.toString() : null;
|
||||
TreatmentService.UpdateReturn creatOrUpdateResult;
|
||||
|
||||
if (medtronicPump && MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: addToHistoryTreatment::treatment={}", treatment);
|
||||
aapsLogger.debug(medtronicPump && MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: addToHistoryTreatment::treatment={} " + treatment);
|
||||
|
||||
if (!medtronicPump)
|
||||
creatOrUpdateResult = getService().createOrUpdate(treatment);
|
||||
|
@ -662,10 +677,8 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
carbsTreatment.pumpId = detailedBolusInfo.pumpId; // but this should never happen
|
||||
carbsTreatment.date = detailedBolusInfo.date + detailedBolusInfo.carbTime * 60 * 1000L + 1000L; // add 1 sec to make them different records
|
||||
carbsTreatment.carbs = detailedBolusInfo.carbs;
|
||||
carbsTreatment.source = detailedBolusInfo.source;
|
||||
|
||||
if (medtronicPump && MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: carbTime!=0, creating second treatment. CarbsTreatment={}", carbsTreatment);
|
||||
aapsLogger.debug(medtronicPump && MedtronicHistoryData.doubleBolusDebug, LTag.DATATREATMENTS, "DoubleBolusDebug: carbTime!=0, creating second treatment. CarbsTreatment={}" + carbsTreatment);
|
||||
|
||||
if (!medtronicPump)
|
||||
getService().createOrUpdate(carbsTreatment);
|
||||
|
@ -677,16 +690,16 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
NSUpload.uploadTreatmentRecord(detailedBolusInfo);
|
||||
|
||||
if (!allowUpdate && !creatOrUpdateResult.success) {
|
||||
log.error("Treatment could not be added to DB", new Exception());
|
||||
aapsLogger.error("Treatment could not be added to DB", new Exception());
|
||||
|
||||
String status = String.format(MainApp.gs(R.string.error_adding_treatment_message), treatment.insulin, (int) treatment.carbs, DateUtil.dateAndTimeString(treatment.date));
|
||||
String status = String.format(resourceHelper.gs(R.string.error_adding_treatment_message), treatment.insulin, (int) treatment.carbs, DateUtil.dateAndTimeString(treatment.date));
|
||||
|
||||
Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class);
|
||||
Intent i = new Intent(mainApp, ErrorHelperActivity.class);
|
||||
i.putExtra("soundid", R.raw.error);
|
||||
i.putExtra("title", MainApp.gs(R.string.error_adding_treatment_title));
|
||||
i.putExtra("title", resourceHelper.gs(R.string.error_adding_treatment_title));
|
||||
i.putExtra("status", status);
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
mainApp.startActivity(i);
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "TreatmentClash");
|
||||
|
@ -769,5 +782,32 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
NSUpload.uploadProfileSwitch(profileSwitch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doProfileSwitch(@NotNull final ProfileStore profileStore, @NotNull final String profileName, final int duration, final int percentage, final int timeShift, final long date) {
|
||||
ProfileSwitch profileSwitch = profileFunction.prepareProfileSwitch(profileStore, profileName, duration, percentage, timeShift, date);
|
||||
TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch);
|
||||
if (percentage == 90 && duration == 10)
|
||||
SP.putBoolean(R.string.key_objectiveuseprofileswitch, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doProfileSwitch(final int duration, final int percentage, final int timeShift) {
|
||||
ProfileSwitch profileSwitch = TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(System.currentTimeMillis());
|
||||
if (profileSwitch != null) {
|
||||
profileSwitch = new ProfileSwitch();
|
||||
profileSwitch.date = System.currentTimeMillis();
|
||||
profileSwitch.source = Source.USER;
|
||||
profileSwitch.profileName = profileFunction.getProfileName(System.currentTimeMillis(), false, false);
|
||||
profileSwitch.profileJson = profileFunction.getProfile().getData().toString();
|
||||
profileSwitch.profilePlugin = ConfigBuilderPlugin.getPlugin().getActiveProfileInterface().getClass().getName();
|
||||
profileSwitch.durationInMinutes = duration;
|
||||
profileSwitch.isCPP = percentage != 100 || timeShift != 0;
|
||||
profileSwitch.timeshift = timeShift;
|
||||
profileSwitch.percentage = percentage;
|
||||
TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch);
|
||||
} else {
|
||||
aapsLogger.error(LTag.PROFILE, "No profile switch exists");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,13 +5,26 @@ import android.util.LongSparseArray
|
|||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.db.TDD
|
||||
import info.nightscout.androidaps.logging.L
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentService
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||
import org.slf4j.LoggerFactory
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import javax.inject.Inject
|
||||
|
||||
object TddCalculator : TreatmentsPlugin() {
|
||||
private val log = LoggerFactory.getLogger(L.DATATREATMENTS)
|
||||
class TddCalculator @Inject constructor(
|
||||
val aapsLogger: AAPSLogger,
|
||||
val resourceHelper: ResourceHelper,
|
||||
val mainApp: MainApp,
|
||||
val configBuilderPlugin: ConfigBuilderPlugin,
|
||||
val profileFunction: ProfileFunction
|
||||
) : TreatmentsPlugin(aapsLogger, resourceHelper, mainApp, configBuilderPlugin, profileFunction) {
|
||||
|
||||
init {
|
||||
service = TreatmentService() // plugin is not started
|
||||
}
|
||||
|
||||
fun calculate(days: Long): LongSparseArray<TDD> {
|
||||
val range = T.days(days + 1).msecs()
|
||||
|
@ -33,7 +46,7 @@ object TddCalculator : TreatmentsPlugin() {
|
|||
val midnight = MidnightTime.calc(t)
|
||||
val tdd = result[midnight] ?: TDD(midnight, 0.0, 0.0, 0.0)
|
||||
val tbr = getTempBasalFromHistory(t)
|
||||
val profile = ProfileFunctions.getInstance().getProfile(t) ?: continue
|
||||
val profile = profileFunction.getProfile(t) ?: continue
|
||||
val absoluteRate = tbr?.tempBasalConvertedToAbsolute(t, profile) ?: profile.getBasal(t)
|
||||
tdd.basal += absoluteRate / 60.0 * 5.0
|
||||
result.put(midnight, tdd)
|
||||
|
@ -42,11 +55,11 @@ object TddCalculator : TreatmentsPlugin() {
|
|||
val tdd = result.valueAt(i)
|
||||
tdd.total = tdd.bolus + tdd.basal
|
||||
}
|
||||
log.debug(result.toString())
|
||||
aapsLogger.debug(LTag.CORE, result.toString())
|
||||
return result
|
||||
}
|
||||
|
||||
fun averageTDD(tdds: LongSparseArray<TDD>): TDD {
|
||||
private fun averageTDD(tdds: LongSparseArray<TDD>): TDD {
|
||||
val totalTdd = TDD()
|
||||
for (i in 0 until tdds.size()) {
|
||||
val tdd = tdds.valueAt(i)
|
||||
|
@ -71,7 +84,7 @@ object TddCalculator : TreatmentsPlugin() {
|
|||
)
|
||||
}
|
||||
|
||||
fun toText(tdds: LongSparseArray<TDD>): String {
|
||||
private fun toText(tdds: LongSparseArray<TDD>): String {
|
||||
var t = ""
|
||||
for (i in 0 until tdds.size()) {
|
||||
t += "${tdds.valueAt(i).toText()}<br>"
|
||||
|
|
Loading…
Reference in a new issue