139 lines
7.1 KiB
Kotlin
139 lines
7.1 KiB
Kotlin
package info.nightscout.androidaps.dependencyInjection
|
|
|
|
import android.app.Application
|
|
import android.content.Context
|
|
import androidx.preference.PreferenceManager
|
|
import dagger.Binds
|
|
import dagger.Lazy
|
|
import dagger.Module
|
|
import dagger.Provides
|
|
import dagger.android.ContributesAndroidInjector
|
|
import dagger.android.HasAndroidInjector
|
|
import info.nightscout.androidaps.Config
|
|
import info.nightscout.androidaps.MainApp
|
|
import info.nightscout.androidaps.data.Profile
|
|
import info.nightscout.androidaps.data.ProfileStore
|
|
import info.nightscout.androidaps.data.PumpEnactResult
|
|
import info.nightscout.androidaps.db.BgReading
|
|
import info.nightscout.androidaps.db.CareportalEvent
|
|
import info.nightscout.androidaps.db.ProfileSwitch
|
|
import info.nightscout.androidaps.db.TemporaryBasal
|
|
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
|
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
|
import info.nightscout.androidaps.interfaces.PluginBase
|
|
import info.nightscout.androidaps.logging.AAPSLogger
|
|
import info.nightscout.androidaps.logging.AAPSLoggerProduction
|
|
import info.nightscout.androidaps.plugins.aps.loop.APSResult
|
|
import info.nightscout.androidaps.plugins.aps.openAPSAMA.DetermineBasalResultAMA
|
|
import info.nightscout.androidaps.plugins.aps.logger.LoggerCallback
|
|
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalAdapterSMBJS
|
|
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalResultSMB
|
|
import info.nightscout.androidaps.plugins.configBuilder.PluginStore
|
|
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
|
|
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation
|
|
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.*
|
|
import info.nightscout.androidaps.plugins.general.automation.AutomationEvent
|
|
import info.nightscout.androidaps.plugins.general.automation.actions.*
|
|
import info.nightscout.androidaps.plugins.general.automation.elements.*
|
|
import info.nightscout.androidaps.plugins.general.automation.triggers.*
|
|
import info.nightscout.androidaps.plugins.general.overview.graphData.GraphData
|
|
import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefs
|
|
import info.nightscout.androidaps.plugins.general.maintenance.formats.ClassicPrefsFormat
|
|
import info.nightscout.androidaps.plugins.general.maintenance.formats.EncryptedPrefsFormat
|
|
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
|
|
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationWithAction
|
|
import info.nightscout.androidaps.plugins.general.smsCommunicator.AuthRequest
|
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData
|
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
|
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobOref1Thread
|
|
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobThread
|
|
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager
|
|
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy
|
|
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkBLE
|
|
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SendAndListen
|
|
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SetPreamble
|
|
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioPacket
|
|
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioResponse
|
|
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.*
|
|
import info.nightscout.androidaps.plugins.pump.medtronic.comm.MedtronicCommunicationManager
|
|
import info.nightscout.androidaps.plugins.pump.medtronic.comm.ui.MedtronicUITask
|
|
import info.nightscout.androidaps.plugins.treatments.Treatment
|
|
import info.nightscout.androidaps.queue.CommandQueue
|
|
import info.nightscout.androidaps.queue.commands.*
|
|
import info.nightscout.androidaps.setupwizard.SWEventListener
|
|
import info.nightscout.androidaps.setupwizard.SWScreen
|
|
import info.nightscout.androidaps.setupwizard.elements.*
|
|
import info.nightscout.androidaps.utils.CryptoUtil
|
|
import info.nightscout.androidaps.utils.FabricPrivacy
|
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
|
import info.nightscout.androidaps.utils.resources.ResourceHelperImplementation
|
|
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
|
import info.nightscout.androidaps.utils.sharedPreferences.SPImplementation
|
|
import info.nightscout.androidaps.utils.storage.FileStorage
|
|
import info.nightscout.androidaps.utils.storage.Storage
|
|
import info.nightscout.androidaps.utils.wizard.BolusWizard
|
|
import info.nightscout.androidaps.utils.wizard.QuickWizardEntry
|
|
import javax.inject.Singleton
|
|
|
|
@Module(includes = [AppModule.AppBindings::class, PluginsModule::class])
|
|
open class AppModule {
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideSharedPreferences(context: Context, resourceHelper: ResourceHelper): SP {
|
|
return SPImplementation(PreferenceManager.getDefaultSharedPreferences(context), resourceHelper)
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideProfileFunction(injector: HasAndroidInjector, aapsLogger: AAPSLogger, sp: SP, resourceHelper: ResourceHelper, activePlugin: ActivePluginProvider, fabricPrivacy: FabricPrivacy): ProfileFunction {
|
|
return ProfileFunctionImplementation(injector, aapsLogger, sp, resourceHelper, activePlugin, fabricPrivacy)
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideAAPSLogger(): AAPSLogger {
|
|
return AAPSLoggerProduction()
|
|
/* if (BuildConfig.DEBUG) {
|
|
AAPSLoggerDebug()
|
|
} else {
|
|
AAPSLoggerProduction()
|
|
}
|
|
*/
|
|
}
|
|
|
|
@Provides
|
|
fun providesPlugins(@PluginsModule.AllConfigs allConfigs: Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>,
|
|
@PluginsModule.PumpDriver pumpDrivers: Lazy<Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>>,
|
|
@PluginsModule.NotNSClient notNsClient: Lazy<Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>>,
|
|
@PluginsModule.NSClient nsClient: Lazy<Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>>,
|
|
@PluginsModule.APS aps: Lazy<Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>>)
|
|
: List<@JvmSuppressWildcards PluginBase> {
|
|
val plugins = allConfigs.toMutableMap()
|
|
if (Config.PUMPDRIVERS) plugins += pumpDrivers.get()
|
|
if (Config.APS) plugins += aps.get()
|
|
if (!Config.NSCLIENT) plugins += notNsClient.get()
|
|
if (Config.NSCLIENT) plugins += nsClient.get()
|
|
return plugins.toList().sortedBy { it.first }.map { it.second }
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
fun provideStorage(): Storage {
|
|
return FileStorage()
|
|
}
|
|
|
|
@Module
|
|
interface AppBindings {
|
|
|
|
@Binds fun bindContext(mainApp: MainApp): Context
|
|
@Binds fun bindInjector(mainApp: MainApp): HasAndroidInjector
|
|
|
|
@Binds
|
|
fun bindActivePluginProvider(pluginStore: PluginStore): ActivePluginProvider
|
|
|
|
@Binds fun commandQueueProvider(commandQueue: CommandQueue): CommandQueueProvider
|
|
|
|
}
|
|
}
|