move ConfigBuilder

This commit is contained in:
Milos Kozak 2022-11-27 11:01:19 +01:00
parent 8b7ceabaf3
commit 3427820eda
40 changed files with 185 additions and 174 deletions

View file

@ -1,11 +1,9 @@
package info.nightscout.plugins.sync.nsShared.events package info.nightscout.rx.events
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.rx.events.Event
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
class EventNSClientNewLog(val action: String, val logText: String, val version: NsClient.Version) : Event() { class EventNSClientNewLog(val action: String, val logText: String) : Event() {
var date = System.currentTimeMillis() var date = System.currentTimeMillis()
private var timeFormat = SimpleDateFormat("HH:mm:ss", Locale.getDefault()) private var timeFormat = SimpleDateFormat("HH:mm:ss", Locale.getDefault())

View file

@ -54,6 +54,7 @@ import javax.inject.Singleton
AutomationModule::class, AutomationModule::class,
ApsModule::class, ApsModule::class,
ConfigurationModule::class, ConfigurationModule::class,
ConfigurationModule.Bindings::class,
CoreModule::class, CoreModule::class,
DatabaseModule::class, DatabaseModule::class,
ImplementationModule::class, ImplementationModule::class,

View file

@ -9,7 +9,7 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.MainApp import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.implementations.ActivityNamesImpl import info.nightscout.androidaps.implementations.ActivityNamesImpl
import info.nightscout.androidaps.implementations.ConfigImpl import info.nightscout.androidaps.implementations.ConfigImpl
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin import info.nightscout.configuration.configBuilder.ConfigBuilderPlugin
import info.nightscout.implementation.profile.ProfileFunctionImpl import info.nightscout.implementation.profile.ProfileFunctionImpl
import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefsImpl import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefsImpl
import info.nightscout.androidaps.workflow.CalculationWorkflowImpl import info.nightscout.androidaps.workflow.CalculationWorkflowImpl

View file

@ -3,7 +3,7 @@ package info.nightscout.androidaps.di
import dagger.Module import dagger.Module
import dagger.android.ContributesAndroidInjector import dagger.android.ContributesAndroidInjector
import info.nightscout.androidaps.activities.MyPreferenceFragment import info.nightscout.androidaps.activities.MyPreferenceFragment
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderFragment import info.nightscout.configuration.configBuilder.ConfigBuilderFragment
import info.nightscout.androidaps.plugins.general.maintenance.MaintenanceFragment import info.nightscout.androidaps.plugins.general.maintenance.MaintenanceFragment
import info.nightscout.androidaps.plugins.general.overview.OverviewFragment import info.nightscout.androidaps.plugins.general.overview.OverviewFragment
import info.nightscout.androidaps.plugins.general.overview.dialogs.EditQuickWizardDialog import info.nightscout.androidaps.plugins.general.overview.dialogs.EditQuickWizardDialog

View file

@ -8,7 +8,7 @@ import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin
import info.nightscout.androidaps.danaRv2.DanaRv2Plugin import info.nightscout.androidaps.danaRv2.DanaRv2Plugin
import info.nightscout.androidaps.danar.DanaRPlugin import info.nightscout.androidaps.danar.DanaRPlugin
import info.nightscout.androidaps.plugin.general.openhumans.OpenHumansUploaderPlugin import info.nightscout.androidaps.plugin.general.openhumans.OpenHumansUploaderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin import info.nightscout.configuration.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.general.maintenance.MaintenancePlugin import info.nightscout.androidaps.plugins.general.maintenance.MaintenancePlugin
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin
import info.nightscout.androidaps.plugins.general.persistentNotification.PersistentNotificationPlugin import info.nightscout.androidaps.plugins.general.persistentNotification.PersistentNotificationPlugin

View file

@ -28,7 +28,7 @@ import info.nightscout.interfaces.plugin.PluginBase
import info.nightscout.interfaces.profile.ProfileFunction import info.nightscout.interfaces.profile.ProfileFunction
import info.nightscout.interfaces.queue.Command import info.nightscout.interfaces.queue.Command
import info.nightscout.interfaces.queue.CommandQueue import info.nightscout.interfaces.queue.CommandQueue
import info.nightscout.plugins.configBuilder.RunningConfiguration import info.nightscout.interfaces.configBuilder.RunningConfiguration
import info.nightscout.plugins.sync.nsclient.extensions.buildDeviceStatus import info.nightscout.plugins.sync.nsclient.extensions.buildDeviceStatus
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventProfileSwitchChanged import info.nightscout.rx.events.EventProfileSwitchChanged

View file

@ -37,11 +37,9 @@
<string name="nav_resetdb">Reset Databases</string> <string name="nav_resetdb">Reset Databases</string>
<string name="reset_db_confirm">Do you really want to reset the databases?</string> <string name="reset_db_confirm">Do you really want to reset the databases?</string>
<string name="nav_exit">Exit</string> <string name="nav_exit">Exit</string>
<string name="description_config_builder">Used for configuring the active plugins</string>
<string name="description_overview">Displays the current state of your loop and buttons for most common actions</string> <string name="description_overview">Displays the current state of your loop and buttons for most common actions</string>
<string name="description_persistent_notification">Shows an ongoing notification with a short overview of what your loop is doing</string> <string name="description_persistent_notification">Shows an ongoing notification with a short overview of what your loop is doing</string>
<string name="delta">Delta</string> <string name="delta">Delta</string>
<string name="configbuilder">Config Builder</string>
<string name="overview">Overview</string> <string name="overview">Overview</string>
<string name="treatments">Treatments</string> <string name="treatments">Treatments</string>
<string name="constraints_violation">Constraints violation</string> <string name="constraints_violation">Constraints violation</string>
@ -82,7 +80,6 @@
<string name="wear">Wear</string> <string name="wear">Wear</string>
<string name="ongoingnotificaction">Ongoing Notification</string> <string name="ongoingnotificaction">Ongoing Notification</string>
<string name="old_data">OLD DATA</string> <string name="old_data">OLD DATA</string>
<string name="configbuilder_shortname">CONF</string>
<string name="overview_shortname">HOME</string> <string name="overview_shortname">HOME</string>
<string name="treatments_shortname">TREAT</string> <string name="treatments_shortname">TREAT</string>
<string name="short_tabtitles">Shorten tab titles</string> <string name="short_tabtitles">Shorten tab titles</string>
@ -173,7 +170,6 @@
<string name="key_keep_screen_on" translatable="false">keep_screen_on</string> <string name="key_keep_screen_on" translatable="false">keep_screen_on</string>
<string name="remove_items">Remove items</string> <string name="remove_items">Remove items</string>
<string name="sort_items">Sort items</string> <string name="sort_items">Sort items</string>
<string name="allow_hardware_pump_text">Attention: If you activate and connect to a hardware pump, AAPS will copy the basal settings from the profile to the pump, overwriting the existing basal rate stored on the pump. Make sure you have the correct basal setting in AAPS. If you are not sure or don\'t want to overwrite the basal settings on your pump, press cancel and repeat switching to the pump at a later time.</string>
<string name="error_adding_treatment_title">Treatment data incomplete</string> <string name="error_adding_treatment_title">Treatment data incomplete</string>
<string name="maintenance_settings">Maintenance Settings</string> <string name="maintenance_settings">Maintenance Settings</string>
<string name="maintenance_email">Email recipient</string> <string name="maintenance_email">Email recipient</string>
@ -229,7 +225,6 @@
<string name="count_selected">%1$d selected</string> <string name="count_selected">%1$d selected</string>
<string name="sort_label">Sort</string> <string name="sort_label">Sort</string>
<string name="graph_scale">Graph scale</string> <string name="graph_scale">Graph scale</string>
<string name="a11y_open_settings">open settings</string>
<string name="device_all">All</string> <string name="device_all">All</string>
<string name="device_phone">Phone</string> <string name="device_phone">Phone</string>
<string name="device_watch">Watch</string> <string name="device_watch">Watch</string>

View file

@ -21,7 +21,7 @@ import info.nightscout.interfaces.queue.CommandQueue
import info.nightscout.interfaces.ui.ActivityNames import info.nightscout.interfaces.ui.ActivityNames
import info.nightscout.plugins.aps.loop.LoopFragment import info.nightscout.plugins.aps.loop.LoopFragment
import info.nightscout.plugins.aps.loop.LoopPlugin import info.nightscout.plugins.aps.loop.LoopPlugin
import info.nightscout.plugins.configBuilder.RunningConfiguration import info.nightscout.interfaces.configBuilder.RunningConfiguration
import info.nightscout.plugins.pump.virtual.VirtualPumpPlugin import info.nightscout.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.interfaces.ResourceHelper

View file

@ -6,6 +6,7 @@ import info.nightscout.androidaps.TestBase
import info.nightscout.interfaces.logging.UserEntryLogger import info.nightscout.interfaces.logging.UserEntryLogger
import info.nightscout.interfaces.plugin.ActivePlugin import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.pump.PumpSync import info.nightscout.interfaces.pump.PumpSync
import info.nightscout.configuration.configBuilder.ConfigBuilderPlugin
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP import info.nightscout.shared.sharedPreferences.SP

View file

@ -23,6 +23,7 @@ dependencies {
// (ResourceHelper, AAPSLogger interface) // (ResourceHelper, AAPSLogger interface)
implementation project(':app-wear-shared:shared') implementation project(':app-wear-shared:shared')
implementation project(':database:entities') implementation project(':database:entities')
implementation project(':core:ns-sdk')
api "androidx.appcompat:appcompat:$appcompat_version" api "androidx.appcompat:appcompat:$appcompat_version"

View file

@ -0,0 +1,13 @@
package info.nightscout.interfaces.configBuilder
import info.nightscout.sdk.remotemodel.RemoteDeviceStatus
import org.json.JSONObject
interface RunningConfiguration {
// called in AAPS mode only
fun configuration(): JSONObject
// called in NSClient mode only
fun apply(configuration: RemoteDeviceStatus.Configuration)
}

View file

@ -110,4 +110,6 @@ interface ActivePlugin {
* List of all plugins of type * List of all plugins of type
*/ */
fun getSpecificPluginsList(type: PluginType): ArrayList<PluginBase> fun getSpecificPluginsList(type: PluginType): ArrayList<PluginBase>
fun loadDefaults()
} }

View file

@ -24,6 +24,8 @@
<string name="mmol">mmol/l</string> <string name="mmol">mmol/l</string>
<string name="save">Save</string> <string name="save">Save</string>
<string name="snooze">Snooze</string> <string name="snooze">Snooze</string>
<string name="virtual_pump">Virtual Pump</string>
<string name="constraints">Constraints</string>
<!-- Pumps --> <!-- Pumps -->
<string name="battery_label">Battery</string> <string name="battery_label">Battery</string>

View file

@ -37,7 +37,7 @@ class PluginStore @Inject constructor(
private var activeInsulinStore: Insulin? = null private var activeInsulinStore: Insulin? = null
private var activeSensitivityStore: Sensitivity? = null private var activeSensitivityStore: Sensitivity? = null
fun loadDefaults() { override fun loadDefaults() {
verifySelectionInCategories() verifySelectionInCategories()
} }

View file

@ -21,6 +21,7 @@ dependencies {
implementation project(':database:entities') implementation project(':database:entities')
implementation project(':core:core-main') implementation project(':core:core-main')
implementation project(':core:interfaces') implementation project(':core:interfaces')
implementation project(':core:ns-sdk')
implementation project(':core:utils') implementation project(':core:utils')
implementation project(':core:ui') implementation project(':core:ui')
} }

View file

@ -1,4 +1,4 @@
package info.nightscout.androidaps.plugins.configBuilder package info.nightscout.configuration.configBuilder
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@ -15,10 +15,9 @@ import android.widget.TextView
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import dagger.android.support.DaggerFragment import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R import info.nightscout.configuration.R
import info.nightscout.androidaps.activities.PreferencesActivity import info.nightscout.configuration.configBuilder.events.EventConfigBuilderUpdateGui
import info.nightscout.androidaps.databinding.ConfigbuilderFragmentBinding import info.nightscout.configuration.databinding.ConfigbuilderFragmentBinding
import info.nightscout.androidaps.plugins.configBuilder.events.EventConfigBuilderUpdateGui
import info.nightscout.core.utils.fabric.FabricPrivacy import info.nightscout.core.utils.fabric.FabricPrivacy
import info.nightscout.interfaces.Config import info.nightscout.interfaces.Config
import info.nightscout.interfaces.plugin.ActivePlugin import info.nightscout.interfaces.plugin.ActivePlugin
@ -26,12 +25,12 @@ import info.nightscout.interfaces.plugin.PluginBase
import info.nightscout.interfaces.plugin.PluginType import info.nightscout.interfaces.plugin.PluginType
import info.nightscout.interfaces.protection.ProtectionCheck import info.nightscout.interfaces.protection.ProtectionCheck
import info.nightscout.interfaces.protection.ProtectionCheck.Protection.PREFERENCES import info.nightscout.interfaces.protection.ProtectionCheck.Protection.PREFERENCES
import info.nightscout.interfaces.ui.ActivityNames
import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventRebuildTabs import info.nightscout.rx.events.EventRebuildTabs
import info.nightscout.shared.extensions.toVisibility import info.nightscout.shared.extensions.toVisibility
import info.nightscout.shared.interfaces.ResourceHelper import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.ui.activities.SingleFragmentActivity
import io.reactivex.rxjava3.disposables.CompositeDisposable import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.kotlin.plusAssign import io.reactivex.rxjava3.kotlin.plusAssign
import javax.inject.Inject import javax.inject.Inject
@ -47,6 +46,7 @@ class ConfigBuilderFragment : DaggerFragment() {
@Inject lateinit var protectionCheck: ProtectionCheck @Inject lateinit var protectionCheck: ProtectionCheck
@Inject lateinit var config: Config @Inject lateinit var config: Config
@Inject lateinit var ctx: Context @Inject lateinit var ctx: Context
@Inject lateinit var activityNames: ActivityNames
private var disposable: CompositeDisposable = CompositeDisposable() private var disposable: CompositeDisposable = CompositeDisposable()
private val pluginViewHolders = ArrayList<PluginViewHolder>() private val pluginViewHolders = ArrayList<PluginViewHolder>()
@ -65,7 +65,7 @@ class ConfigBuilderFragment : DaggerFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
val parentClass = this.activity?.let { it::class.java } val parentClass = this.activity?.let { it::class.java }
inMenu = parentClass == SingleFragmentActivity::class.java inMenu = parentClass == activityNames.singleFragmentActivity
updateProtectedUi() updateProtectedUi()
binding.unlock.setOnClickListener { queryProtection() } binding.unlock.setOnClickListener { queryProtection() }
} }
@ -166,7 +166,7 @@ class ConfigBuilderFragment : DaggerFragment() {
pluginPreferences.setOnClickListener { pluginPreferences.setOnClickListener {
fragment.activity?.let { activity -> fragment.activity?.let { activity ->
protectionCheck.queryProtection(activity, ProtectionCheck.Protection.PREFERENCES, { protectionCheck.queryProtection(activity, ProtectionCheck.Protection.PREFERENCES, {
val i = Intent(ctx, PreferencesActivity::class.java) val i = Intent(ctx, activityNames.preferencesActivity)
i.putExtra("id", plugin.preferencesId) i.putExtra("id", plugin.preferencesId)
fragment.startActivity(i) fragment.startActivity(i)
}, null) }, null)

View file

@ -1,14 +1,13 @@
package info.nightscout.androidaps.plugins.configBuilder package info.nightscout.configuration.configBuilder
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R import info.nightscout.configuration.R
import info.nightscout.androidaps.plugins.configBuilder.events.EventConfigBuilderUpdateGui import info.nightscout.configuration.configBuilder.events.EventConfigBuilderUpdateGui
import info.nightscout.core.ui.dialogs.OKDialog import info.nightscout.core.ui.dialogs.OKDialog
import info.nightscout.database.entities.UserEntry.Action import info.nightscout.database.entities.UserEntry.Action
import info.nightscout.database.entities.UserEntry.Sources import info.nightscout.database.entities.UserEntry.Sources
import info.nightscout.database.entities.ValueWithUnit import info.nightscout.database.entities.ValueWithUnit
import info.nightscout.implementation.plugin.PluginStore
import info.nightscout.interfaces.ConfigBuilder import info.nightscout.interfaces.ConfigBuilder
import info.nightscout.interfaces.aps.APS import info.nightscout.interfaces.aps.APS
import info.nightscout.interfaces.aps.Sensitivity import info.nightscout.interfaces.aps.Sensitivity
@ -52,14 +51,14 @@ class ConfigBuilderPlugin @Inject constructor(
.alwaysEnabled(true) .alwaysEnabled(true)
.alwaysVisible(false) .alwaysVisible(false)
.pluginIcon(R.drawable.ic_cogs) .pluginIcon(R.drawable.ic_cogs)
.pluginName(R.string.configbuilder) .pluginName(R.string.config_builder)
.shortName(R.string.configbuilder_shortname) .shortName(R.string.config_builder_shortname)
.description(R.string.description_config_builder), .description(R.string.description_config_builder),
aapsLogger, rh, injector aapsLogger, rh, injector
), ConfigBuilder { ), ConfigBuilder {
override fun initialize() { override fun initialize() {
(activePlugin as PluginStore).loadDefaults() activePlugin.loadDefaults()
loadSettings() loadSettings()
setAlwaysEnabledPluginsEnabled() setAlwaysEnabledPluginsEnabled()
rxBus.send(EventAppInitialized()) rxBus.send(EventAppInitialized())

View file

@ -1,19 +1,19 @@
package info.nightscout.plugins.configBuilder package info.nightscout.configuration.configBuilder
import info.nightscout.core.events.EventNewNotification import info.nightscout.core.events.EventNewNotification
import info.nightscout.core.main.R import info.nightscout.core.main.R
import info.nightscout.interfaces.Config import info.nightscout.interfaces.Config
import info.nightscout.interfaces.ConfigBuilder import info.nightscout.interfaces.ConfigBuilder
import info.nightscout.interfaces.aps.Sensitivity import info.nightscout.interfaces.aps.Sensitivity
import info.nightscout.interfaces.configBuilder.RunningConfiguration
import info.nightscout.interfaces.insulin.Insulin import info.nightscout.interfaces.insulin.Insulin
import info.nightscout.interfaces.notifications.Notification import info.nightscout.interfaces.notifications.Notification
import info.nightscout.interfaces.plugin.ActivePlugin import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.plugin.PluginType import info.nightscout.interfaces.plugin.PluginType
import info.nightscout.interfaces.pump.PumpSync import info.nightscout.interfaces.pump.PumpSync
import info.nightscout.interfaces.pump.defs.PumpType import info.nightscout.interfaces.pump.defs.PumpType
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag import info.nightscout.rx.logging.LTag
import info.nightscout.sdk.remotemodel.RemoteDeviceStatus import info.nightscout.sdk.remotemodel.RemoteDeviceStatus
@ -25,7 +25,7 @@ import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@Singleton @Singleton
class RunningConfiguration @Inject constructor( class RunningConfigurationImpl @Inject constructor(
private val activePlugin: ActivePlugin, private val activePlugin: ActivePlugin,
private val configBuilder: ConfigBuilder, private val configBuilder: ConfigBuilder,
private val sp: SP, private val sp: SP,
@ -34,13 +34,13 @@ class RunningConfiguration @Inject constructor(
private val rh: ResourceHelper, private val rh: ResourceHelper,
private val rxBus: RxBus, private val rxBus: RxBus,
private val pumpSync: PumpSync private val pumpSync: PumpSync
) { ) : RunningConfiguration {
private var counter = 0 private var counter = 0
private val every = 12 // Send only every 12 device status to save traffic private val every = 12 // Send only every 12 device status to save traffic
// called in AAPS mode only // called in AAPS mode only
fun configuration(): JSONObject { override fun configuration(): JSONObject {
val json = JSONObject() val json = JSONObject()
val pumpInterface = activePlugin.activePump val pumpInterface = activePlugin.activePump
@ -67,11 +67,11 @@ class RunningConfiguration @Inject constructor(
} }
// called in NSClient mode only // called in NSClient mode only
fun apply(configuration: RemoteDeviceStatus.Configuration, version: NsClient.Version) { override fun apply(configuration: RemoteDeviceStatus.Configuration) {
assert(config.NSCLIENT) assert(config.NSCLIENT)
configuration.version?.let { configuration.version?.let {
rxBus.send(EventNSClientNewLog("VERSION", "Received AndroidAPS version $it", version)) rxBus.send(EventNSClientNewLog("VERSION", "Received AndroidAPS version $it"))
if (config.VERSION_NAME.startsWith(it).not()) if (config.VERSION_NAME.startsWith(it).not())
rxBus.send(EventNewNotification(Notification(Notification.NSCLIENT_VERSION_DOES_NOT_MATCH, rh.gs(R.string.nsclient_version_does_not_match), Notification.NORMAL))) rxBus.send(EventNewNotification(Notification(Notification.NSCLIENT_VERSION_DOES_NOT_MATCH, rh.gs(R.string.nsclient_version_does_not_match), Notification.NORMAL)))
} }

View file

@ -1,4 +1,4 @@
package info.nightscout.androidaps.plugins.configBuilder.events package info.nightscout.configuration.configBuilder.events
import info.nightscout.rx.events.EventUpdateGui import info.nightscout.rx.events.EventUpdateGui

View file

@ -1,10 +1,20 @@
package info.nightscout.configuration.di package info.nightscout.configuration.di
import dagger.Binds
import dagger.Module import dagger.Module
import info.nightscout.configuration.configBuilder.RunningConfigurationImpl
import info.nightscout.interfaces.configBuilder.RunningConfiguration
@Module( @Module(
includes = [ includes = [
SetupWizardModule::class SetupWizardModule::class
] ]
) )
open class ConfigurationModule open class ConfigurationModule {
@Module
interface Bindings {
@Binds fun bindRunningConfiguration(runningConfigurationImpl: RunningConfigurationImpl): RunningConfiguration
}
}

View file

@ -55,6 +55,11 @@
<string name="summary_email_for_crash_report">This identification will attached to crash reports so we can contact you in urgent cases. It\'s optional.</string> <string name="summary_email_for_crash_report">This identification will attached to crash reports so we can contact you in urgent cases. It\'s optional.</string>
<string name="identification">Identification (email, FB or Discord nick etc)</string> <string name="identification">Identification (email, FB or Discord nick etc)</string>
<string name="apsmode_title">APS Mode</string>
<string name="setupwizard_preferred_aps_mode">Preferred APS mode</string>
<!-- ConfigBuilder-->
<string name="config_builder">Config Builder</string>
<string name="configbuilder_pump">Pump</string> <string name="configbuilder_pump">Pump</string>
<string name="configbuilder_pump_description">Which pump would you like to use with AAPS?</string> <string name="configbuilder_pump_description">Which pump would you like to use with AAPS?</string>
<string name="configbuilder_profile">Profile</string> <string name="configbuilder_profile">Profile</string>
@ -71,9 +76,12 @@
<string name="configbuilder_insulin_description">Which type of insulin are you using?</string> <string name="configbuilder_insulin_description">Which type of insulin are you using?</string>
<string name="configbuilder_bgsource">BG Source</string> <string name="configbuilder_bgsource">BG Source</string>
<string name="configbuilder_bgsource_description">Where should AAPS gain it\'s data from?</string> <string name="configbuilder_bgsource_description">Where should AAPS gain it\'s data from?</string>
<string name="apsmode_title">APS Mode</string>
<string name="setupwizard_preferred_aps_mode">Preferred APS mode</string>
<string name="configbuilder_sensitivity">Sensitivity detection</string> <string name="configbuilder_sensitivity">Sensitivity detection</string>
<string name="configbuilder_sensitivity_description">Which sensitivity algorithm should be used?</string> <string name="configbuilder_sensitivity_description">Which sensitivity algorithm should be used?</string>
<string name="config_builder_shortname">CONF</string>
<string name="description_config_builder">Used for configuring the active plugins</string>
<string name="allow_hardware_pump_text">Attention: If you activate and connect to a hardware pump, AAPS will copy the basal settings from the profile to the pump, overwriting the existing basal rate stored on the pump. Make sure you have the correct basal setting in AAPS. If you are not sure or don\'t want to overwrite the basal settings on your pump, press cancel and repeat switching to the pump at a later time.</string>
<string name="a11y_open_settings">open settings</string>
</resources> </resources>

View file

@ -55,7 +55,7 @@ import info.nightscout.plugins.R
import info.nightscout.plugins.aps.loop.events.EventLoopSetLastRunGui import info.nightscout.plugins.aps.loop.events.EventLoopSetLastRunGui
import info.nightscout.plugins.aps.loop.events.EventLoopUpdateGui import info.nightscout.plugins.aps.loop.events.EventLoopUpdateGui
import info.nightscout.plugins.aps.loop.events.EventNewOpenLoopNotification import info.nightscout.plugins.aps.loop.events.EventNewOpenLoopNotification
import info.nightscout.plugins.configBuilder.RunningConfiguration import info.nightscout.interfaces.configBuilder.RunningConfiguration
import info.nightscout.plugins.pump.virtual.VirtualPumpPlugin import info.nightscout.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.plugins.sync.nsclient.extensions.buildDeviceStatus import info.nightscout.plugins.sync.nsclient.extensions.buildDeviceStatus
import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.AapsSchedulers

View file

@ -36,13 +36,11 @@ import info.nightscout.interfaces.Constants
import info.nightscout.interfaces.XDripBroadcast import info.nightscout.interfaces.XDripBroadcast
import info.nightscout.interfaces.logging.UserEntryLogger import info.nightscout.interfaces.logging.UserEntryLogger
import info.nightscout.interfaces.notifications.Notification import info.nightscout.interfaces.notifications.Notification
import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.plugins.R import info.nightscout.plugins.R
import info.nightscout.plugins.pump.virtual.VirtualPumpPlugin import info.nightscout.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.plugins.source.NSClientSourcePlugin import info.nightscout.plugins.source.NSClientSourcePlugin
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag import info.nightscout.rx.logging.LTag
import info.nightscout.sdk.localmodel.treatment.NSBolus import info.nightscout.sdk.localmodel.treatment.NSBolus
@ -69,7 +67,6 @@ class StoreDataForDb @Inject constructor(
private val sp: SP, private val sp: SP,
private val uel: UserEntryLogger, private val uel: UserEntryLogger,
private val dateUtil: DateUtil, private val dateUtil: DateUtil,
private val activePlugin: ActivePlugin,
private val config: Config, private val config: Config,
private val nsClientSourcePlugin: NSClientSourcePlugin, private val nsClientSourcePlugin: NSClientSourcePlugin,
private val xDripBroadcast: XDripBroadcast, private val xDripBroadcast: XDripBroadcast,
@ -122,7 +119,7 @@ class StoreDataForDb @Inject constructor(
else put(key, 1) else put(key, 1)
private fun storeGlucoseValuesToDb() { private fun storeGlucoseValuesToDb() {
rxBus.send(EventNSClientNewLog("PROCESSING BG", "", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("PROCESSING BG", ""))
if (glucoseValues.isNotEmpty()) if (glucoseValues.isNotEmpty())
repository.runTransactionForResult(CgmSourceTransaction(glucoseValues, emptyList(), null)) repository.runTransactionForResult(CgmSourceTransaction(glucoseValues, emptyList(), null))
@ -154,11 +151,11 @@ class StoreDataForDb @Inject constructor(
sendLog("GlucoseValue", GlucoseValue::class.java.simpleName) sendLog("GlucoseValue", GlucoseValue::class.java.simpleName)
SystemClock.sleep(pause) SystemClock.sleep(pause)
rxBus.send(EventNSClientNewLog("DONE BG", "", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("DONE BG", ""))
} }
fun storeTreatmentsToDb() { fun storeTreatmentsToDb() {
rxBus.send(EventNSClientNewLog("PROCESSING TR", "", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("PROCESSING TR", ""))
if (boluses.isNotEmpty()) if (boluses.isNotEmpty())
repository.runTransactionForResult(SyncNsBolusTransaction(boluses)) repository.runTransactionForResult(SyncNsBolusTransaction(boluses))
@ -734,32 +731,32 @@ class StoreDataForDb @Inject constructor(
SystemClock.sleep(pause) SystemClock.sleep(pause)
uel.log(userEntries) uel.log(userEntries)
rxBus.send(EventNSClientNewLog("DONE TR", "", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("DONE TR", ""))
} }
private fun sendLog(item: String, clazz: String) { private fun sendLog(item: String, clazz: String) {
inserted[clazz]?.let { inserted[clazz]?.let {
rxBus.send(EventNSClientNewLog("INSERT", "$item $it", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("INSERT", "$item $it"))
} }
inserted.remove(clazz) inserted.remove(clazz)
updated[clazz]?.let { updated[clazz]?.let {
rxBus.send(EventNSClientNewLog("UPDATE", "$item $it", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("UPDATE", "$item $it"))
} }
updated.remove(clazz) updated.remove(clazz)
invalidated[clazz]?.let { invalidated[clazz]?.let {
rxBus.send(EventNSClientNewLog("INVALIDATE", "$item $it", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("INVALIDATE", "$item $it"))
} }
invalidated.remove(clazz) invalidated.remove(clazz)
nsIdUpdated[clazz]?.let { nsIdUpdated[clazz]?.let {
rxBus.send(EventNSClientNewLog("NS_ID", "$item $it", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("NS_ID", "$item $it"))
} }
nsIdUpdated.remove(clazz) nsIdUpdated.remove(clazz)
durationUpdated[clazz]?.let { durationUpdated[clazz]?.let {
rxBus.send(EventNSClientNewLog("DURATION", "$item $it", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("DURATION", "$item $it"))
} }
durationUpdated.remove(clazz) durationUpdated.remove(clazz)
ended[clazz]?.let { ended[clazz]?.let {
rxBus.send(EventNSClientNewLog("CUT", "$item $it", activePlugin.activeNsClient?.version ?: NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("CUT", "$item $it"))
} }
ended.remove(clazz) ended.remove(clazz)
} }

View file

@ -4,6 +4,6 @@ import android.content.Context
import info.nightscout.interfaces.sync.NsClient import info.nightscout.interfaces.sync.NsClient
import info.nightscout.rx.events.EventStatus import info.nightscout.rx.events.EventStatus
class EventNSClientStatus(var text: String, val version: NsClient.Version) : EventStatus() { class EventNSClientStatus(var text: String) : EventStatus() {
override fun getStatus(context: Context): String = text override fun getStatus(context: Context): String = text
} }

View file

@ -26,7 +26,6 @@ import info.nightscout.interfaces.sync.Sync
import info.nightscout.interfaces.utils.HtmlHelper.fromHtml import info.nightscout.interfaces.utils.HtmlHelper.fromHtml
import info.nightscout.plugins.R import info.nightscout.plugins.R
import info.nightscout.plugins.sync.nsShared.NSClientFragment import info.nightscout.plugins.sync.nsShared.NSClientFragment
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.plugins.sync.nsShared.events.EventNSClientResend import info.nightscout.plugins.sync.nsShared.events.EventNSClientResend
import info.nightscout.plugins.sync.nsShared.events.EventNSClientStatus import info.nightscout.plugins.sync.nsShared.events.EventNSClientStatus
import info.nightscout.plugins.sync.nsShared.events.EventNSClientUpdateGUI import info.nightscout.plugins.sync.nsShared.events.EventNSClientUpdateGUI
@ -37,6 +36,7 @@ import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventAppExit import info.nightscout.rx.events.EventAppExit
import info.nightscout.rx.events.EventChargingState import info.nightscout.rx.events.EventChargingState
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.events.EventNetworkChange import info.nightscout.rx.events.EventNetworkChange
import info.nightscout.rx.events.EventPreferenceChange import info.nightscout.rx.events.EventPreferenceChange
import info.nightscout.rx.events.EventSWSyncStatus import info.nightscout.rx.events.EventSWSyncStatus
@ -92,12 +92,10 @@ class NSClientPlugin @Inject constructor(
.toObservable(EventNSClientStatus::class.java) .toObservable(EventNSClientStatus::class.java)
.observeOn(aapsSchedulers.io) .observeOn(aapsSchedulers.io)
.subscribe({ event -> .subscribe({ event ->
if (event.version == NsClient.Version.V1) {
status = event.getStatus(context) status = event.getStatus(context)
rxBus.send(EventNSClientUpdateGUI()) rxBus.send(EventNSClientUpdateGUI())
// Pass to setup wizard // Pass to setup wizard
rxBus.send(EventSWSyncStatus(event.getStatus(context))) rxBus.send(EventSWSyncStatus(event.getStatus(context)))
}
}, fabricPrivacy::logException) }, fabricPrivacy::logException)
disposable += rxBus disposable += rxBus
.toObservable(EventNetworkChange::class.java) .toObservable(EventNetworkChange::class.java)
@ -115,7 +113,6 @@ class NSClientPlugin @Inject constructor(
.toObservable(EventNSClientNewLog::class.java) .toObservable(EventNSClientNewLog::class.java)
.observeOn(aapsSchedulers.io) .observeOn(aapsSchedulers.io)
.subscribe({ event: EventNSClientNewLog -> .subscribe({ event: EventNSClientNewLog ->
if (event.version != NsClient.Version.V1) return@subscribe
addToLog(event) addToLog(event)
aapsLogger.debug(LTag.NSCLIENT, event.action + " " + event.logText) aapsLogger.debug(LTag.NSCLIENT, event.action + " " + event.logText)
}, fabricPrivacy::logException) }, fabricPrivacy::logException)

View file

@ -1,12 +1,11 @@
package info.nightscout.plugins.sync.nsclient.data package info.nightscout.plugins.sync.nsclient.data
import info.nightscout.interfaces.Config import info.nightscout.interfaces.Config
import info.nightscout.interfaces.configBuilder.RunningConfiguration
import info.nightscout.interfaces.nsclient.ProcessedDeviceStatusData import info.nightscout.interfaces.nsclient.ProcessedDeviceStatusData
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.interfaces.utils.HtmlHelper import info.nightscout.interfaces.utils.HtmlHelper
import info.nightscout.interfaces.utils.JsonHelper import info.nightscout.interfaces.utils.JsonHelper
import info.nightscout.plugins.R import info.nightscout.plugins.R
import info.nightscout.plugins.configBuilder.RunningConfiguration
import info.nightscout.sdk.remotemodel.RemoteDeviceStatus import info.nightscout.sdk.remotemodel.RemoteDeviceStatus
import info.nightscout.shared.sharedPreferences.SP import info.nightscout.shared.sharedPreferences.SP
import info.nightscout.shared.utils.DateUtil import info.nightscout.shared.utils.DateUtil
@ -75,7 +74,7 @@ class NSDeviceStatusHandler @Inject constructor(
private val processedDeviceStatusData: ProcessedDeviceStatusData private val processedDeviceStatusData: ProcessedDeviceStatusData
) { ) {
fun handleNewData(deviceStatuses: Array<RemoteDeviceStatus>, version: NsClient.Version) { fun handleNewData(deviceStatuses: Array<RemoteDeviceStatus>) {
var configurationDetected = false var configurationDetected = false
for (i in deviceStatuses.size - 1 downTo 0) { for (i in deviceStatuses.size - 1 downTo 0) {
val nsDeviceStatus = deviceStatuses[i] val nsDeviceStatus = deviceStatuses[i]
@ -87,7 +86,7 @@ class NSDeviceStatusHandler @Inject constructor(
if (config.NSCLIENT && !configurationDetected) if (config.NSCLIENT && !configurationDetected)
nsDeviceStatus.configuration?.let { nsDeviceStatus.configuration?.let {
// copy configuration of Insulin and Sensitivity from main AAPS // copy configuration of Insulin and Sensitivity from main AAPS
runningConfiguration.apply(it, version) runningConfiguration.apply(it)
configurationDetected = true // pick only newest configurationDetected = true // pick only newest
} }
} }

View file

@ -8,7 +8,7 @@ import info.nightscout.interfaces.aps.Loop
import info.nightscout.interfaces.iob.IobCobCalculator import info.nightscout.interfaces.iob.IobCobCalculator
import info.nightscout.interfaces.profile.ProfileFunction import info.nightscout.interfaces.profile.ProfileFunction
import info.nightscout.interfaces.pump.Pump import info.nightscout.interfaces.pump.Pump
import info.nightscout.plugins.configBuilder.RunningConfiguration import info.nightscout.interfaces.configBuilder.RunningConfiguration
import info.nightscout.plugins.sync.nsShared.extensions.json import info.nightscout.plugins.sync.nsShared.extensions.json
import info.nightscout.shared.utils.DateUtil import info.nightscout.shared.utils.DateUtil
import org.json.JSONObject import org.json.JSONObject

View file

@ -32,7 +32,7 @@ import info.nightscout.plugins.general.overview.notifications.NotificationWithAc
import info.nightscout.plugins.profile.ProfilePlugin import info.nightscout.plugins.profile.ProfilePlugin
import info.nightscout.plugins.source.NSClientSourcePlugin import info.nightscout.plugins.source.NSClientSourcePlugin
import info.nightscout.plugins.sync.nsShared.StoreDataForDb import info.nightscout.plugins.sync.nsShared.StoreDataForDb
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.plugins.sync.nsShared.events.EventNSClientStatus import info.nightscout.plugins.sync.nsShared.events.EventNSClientStatus
import info.nightscout.plugins.sync.nsShared.events.EventNSClientUpdateGUI import info.nightscout.plugins.sync.nsShared.events.EventNSClientUpdateGUI
import info.nightscout.plugins.sync.nsclient.NSClientPlugin import info.nightscout.plugins.sync.nsclient.NSClientPlugin
@ -210,13 +210,13 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
connectionStatus += ')' connectionStatus += ')'
isConnected = true isConnected = true
hasWriteAuth = ack.write && ack.writeTreatment hasWriteAuth = ack.write && ack.writeTreatment
rxBus.send(EventNSClientStatus(connectionStatus, NsClient.Version.V1)) rxBus.send(EventNSClientStatus(connectionStatus))
rxBus.send(EventNSClientNewLog("AUTH", connectionStatus, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("AUTH", connectionStatus))
if (!ack.write) { if (!ack.write) {
rxBus.send(EventNSClientNewLog("ERROR", "Write permission not granted ", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("ERROR", "Write permission not granted "))
} }
if (!ack.writeTreatment) { if (!ack.writeTreatment) {
rxBus.send(EventNSClientNewLog("ERROR", "Write treatment permission not granted ", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("ERROR", "Write treatment permission not granted "))
} }
if (!hasWriteAuth) { if (!hasWriteAuth) {
val noWritePerm = Notification(Notification.NSCLIENT_NO_WRITE_PERMISSION, rh.gs(R.string.no_write_permission), Notification.URGENT) val noWritePerm = Notification(Notification.NSCLIENT_NO_WRITE_PERMISSION, rh.gs(R.string.no_write_permission), Notification.URGENT)
@ -241,19 +241,19 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
readPreferences() readPreferences()
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
if (nsAPISecret != "") nsApiHashCode = Hashing.sha1().hashString(nsAPISecret, Charsets.UTF_8).toString() if (nsAPISecret != "") nsApiHashCode = Hashing.sha1().hashString(nsAPISecret, Charsets.UTF_8).toString()
rxBus.send(EventNSClientStatus("Initializing", NsClient.Version.V1)) rxBus.send(EventNSClientStatus("Initializing"))
if (!nsClientPlugin.isAllowed) { if (!nsClientPlugin.isAllowed) {
rxBus.send(EventNSClientNewLog("NSCLIENT", nsClientPlugin.blockingReason, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", nsClientPlugin.blockingReason))
rxBus.send(EventNSClientStatus(nsClientPlugin.blockingReason, NsClient.Version.V1)) rxBus.send(EventNSClientStatus(nsClientPlugin.blockingReason))
} else if (sp.getBoolean(R.string.key_ns_client_paused, false)) { } else if (sp.getBoolean(R.string.key_ns_client_paused, false)) {
rxBus.send(EventNSClientNewLog("NSCLIENT", "paused", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "paused"))
rxBus.send(EventNSClientStatus("Paused", NsClient.Version.V1)) rxBus.send(EventNSClientStatus("Paused"))
} else if (!nsEnabled) { } else if (!nsEnabled) {
rxBus.send(EventNSClientNewLog("NSCLIENT", "disabled", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "disabled"))
rxBus.send(EventNSClientStatus("Disabled", NsClient.Version.V1)) rxBus.send(EventNSClientStatus("Disabled"))
} else if (nsURL != "" && (config.isEngineeringMode() || nsURL.lowercase(Locale.getDefault()).startsWith("https://"))) { } else if (nsURL != "" && (config.isEngineeringMode() || nsURL.lowercase(Locale.getDefault()).startsWith("https://"))) {
try { try {
rxBus.send(EventNSClientStatus("Connecting ...", NsClient.Version.V1)) rxBus.send(EventNSClientStatus("Connecting ..."))
val opt = IO.Options() val opt = IO.Options()
opt.forceNew = true opt.forceNew = true
opt.reconnection = true opt.reconnection = true
@ -264,7 +264,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
socket.on(Socket.EVENT_CONNECT_ERROR, onError) socket.on(Socket.EVENT_CONNECT_ERROR, onError)
socket.on(Socket.EVENT_CONNECT_TIMEOUT, onError) socket.on(Socket.EVENT_CONNECT_TIMEOUT, onError)
socket.on(Socket.EVENT_PING, onPing) socket.on(Socket.EVENT_PING, onPing)
rxBus.send(EventNSClientNewLog("NSCLIENT", "do connect", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "do connect"))
socket.connect() socket.connect()
socket.on("dataUpdate", onDataUpdate) socket.on("dataUpdate", onDataUpdate)
socket.on("announcement", onAnnouncement) socket.on("announcement", onAnnouncement)
@ -273,25 +273,25 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
socket.on("clear_alarm", onClearAlarm) socket.on("clear_alarm", onClearAlarm)
} }
} catch (e: URISyntaxException) { } catch (e: URISyntaxException) {
rxBus.send(EventNSClientNewLog("NSCLIENT", "Wrong URL syntax", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "Wrong URL syntax"))
rxBus.send(EventNSClientStatus("Wrong URL syntax", NsClient.Version.V1)) rxBus.send(EventNSClientStatus("Wrong URL syntax"))
} catch (e: RuntimeException) { } catch (e: RuntimeException) {
rxBus.send(EventNSClientNewLog("NSCLIENT", "Wrong URL syntax", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "Wrong URL syntax"))
rxBus.send(EventNSClientStatus("Wrong URL syntax", NsClient.Version.V1)) rxBus.send(EventNSClientStatus("Wrong URL syntax"))
} }
} else if (nsURL.lowercase(Locale.getDefault()).startsWith("http://")) { } else if (nsURL.lowercase(Locale.getDefault()).startsWith("http://")) {
rxBus.send(EventNSClientNewLog("NSCLIENT", "NS URL not encrypted", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "NS URL not encrypted"))
rxBus.send(EventNSClientStatus("Not encrypted", NsClient.Version.V1)) rxBus.send(EventNSClientStatus("Not encrypted"))
} else { } else {
rxBus.send(EventNSClientNewLog("NSCLIENT", "No NS URL specified", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "No NS URL specified"))
rxBus.send(EventNSClientStatus("Not configured", NsClient.Version.V1)) rxBus.send(EventNSClientStatus("Not configured"))
} }
} }
private val onConnect = Emitter.Listener { private val onConnect = Emitter.Listener {
connectCounter++ connectCounter++
val socketId = socket?.id() ?: "NULL" val socketId = socket?.id() ?: "NULL"
rxBus.send(EventNSClientNewLog("NSCLIENT", "connect #$connectCounter event. ID: $socketId", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "connect #$connectCounter event. ID: $socketId"))
if (socket != null) sendAuthMessage(NSAuthAck(rxBus)) if (socket != null) sendAuthMessage(NSAuthAck(rxBus))
watchdog() watchdog()
} }
@ -305,16 +305,16 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
reconnections.remove(r) reconnections.remove(r)
} }
} }
rxBus.send(EventNSClientNewLog("WATCHDOG", "connections in last " + WATCHDOG_INTERVAL_MINUTES + " minutes: " + reconnections.size + "/" + WATCHDOG_MAX_CONNECTIONS, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("WATCHDOG", "connections in last " + WATCHDOG_INTERVAL_MINUTES + " minutes: " + reconnections.size + "/" + WATCHDOG_MAX_CONNECTIONS))
if (reconnections.size >= WATCHDOG_MAX_CONNECTIONS) { if (reconnections.size >= WATCHDOG_MAX_CONNECTIONS) {
val n = Notification(Notification.NS_MALFUNCTION, rh.gs(R.string.ns_malfunction), Notification.URGENT) val n = Notification(Notification.NS_MALFUNCTION, rh.gs(R.string.ns_malfunction), Notification.URGENT)
rxBus.send(EventNewNotification(n)) rxBus.send(EventNewNotification(n))
rxBus.send(EventNSClientNewLog("WATCHDOG", "pausing for $WATCHDOG_RECONNECT_IN minutes", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("WATCHDOG", "pausing for $WATCHDOG_RECONNECT_IN minutes"))
nsClientPlugin.pause(true) nsClientPlugin.pause(true)
rxBus.send(EventNSClientUpdateGUI()) rxBus.send(EventNSClientUpdateGUI())
Thread { Thread {
SystemClock.sleep(mins(WATCHDOG_RECONNECT_IN.toLong()).msecs()) SystemClock.sleep(mins(WATCHDOG_RECONNECT_IN.toLong()).msecs())
rxBus.send(EventNSClientNewLog("WATCHDOG", "re-enabling NSClient", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("WATCHDOG", "re-enabling NSClient"))
nsClientPlugin.pause(false) nsClientPlugin.pause(false)
}.start() }.start()
} }
@ -323,7 +323,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
private val onDisconnect = Emitter.Listener { args -> private val onDisconnect = Emitter.Listener { args ->
aapsLogger.debug(LTag.NSCLIENT, "disconnect reason: {}", *args) aapsLogger.debug(LTag.NSCLIENT, "disconnect reason: {}", *args)
rxBus.send(EventNSClientNewLog("NSCLIENT", "disconnect event", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "disconnect event"))
} }
@Synchronized fun destroy() { @Synchronized fun destroy() {
@ -335,7 +335,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
socket?.off("alarm") socket?.off("alarm")
socket?.off("urgent_alarm") socket?.off("urgent_alarm")
socket?.off("clear_alarm") socket?.off("clear_alarm")
rxBus.send(EventNSClientNewLog("NSCLIENT", "destroy", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("NSCLIENT", "destroy"))
isConnected = false isConnected = false
hasWriteAuth = false hasWriteAuth = false
socket?.disconnect() socket?.disconnect()
@ -354,7 +354,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
aapsLogger.error("Unhandled exception", e) aapsLogger.error("Unhandled exception", e)
return return
} }
rxBus.send(EventNSClientNewLog("AUTH", "requesting auth", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("AUTH", "requesting auth"))
socket?.emit("authorize", authMessage, ack) socket?.emit("authorize", authMessage, ack)
} }
@ -370,10 +370,10 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
if (args.isNotEmpty() && args[0] != null) { if (args.isNotEmpty() && args[0] != null) {
msg = args[0].toString() msg = args[0].toString()
} }
rxBus.send(EventNSClientNewLog("ERROR", msg, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("ERROR", msg))
} }
private val onPing = Emitter.Listener { private val onPing = Emitter.Listener {
rxBus.send(EventNSClientNewLog("PING", "received", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("PING", "received"))
// send data if there is something waiting // send data if there is something waiting
resend("Ping received") resend("Ping received")
} }
@ -443,7 +443,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
val data: JSONObject val data: JSONObject
try { try {
data = args[0] as JSONObject data = args[0] as JSONObject
rxBus.send(EventNSClientNewLog("CLEARALARM", "received", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("CLEARALARM", "received"))
rxBus.send(EventDismissNotification(Notification.NS_ALARM)) rxBus.send(EventDismissNotification(Notification.NS_ALARM))
rxBus.send(EventDismissNotification(Notification.NS_URGENT_ALARM)) rxBus.send(EventDismissNotification(Notification.NS_URGENT_ALARM))
aapsLogger.debug(LTag.NSCLIENT, data.toString()) aapsLogger.debug(LTag.NSCLIENT, data.toString())
@ -462,19 +462,19 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
try { try {
// delta means only increment/changes are coming // delta means only increment/changes are coming
val isDelta = data.has("delta") val isDelta = data.has("delta")
rxBus.send(EventNSClientNewLog("DATA", "Data packet #" + dataCounter++ + if (isDelta) " delta" else " full", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DATA", "Data packet #" + dataCounter++ + if (isDelta) " delta" else " full"))
if (data.has("status")) { if (data.has("status")) {
val status = data.getJSONObject("status") val status = data.getJSONObject("status")
nsSettingsStatus.handleNewData(status) nsSettingsStatus.handleNewData(status)
} else if (!isDelta) { } else if (!isDelta) {
rxBus.send(EventNSClientNewLog("ERROR", "Unsupported Nightscout version ", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("ERROR", "Unsupported Nightscout version "))
} }
if (data.has("profiles")) { if (data.has("profiles")) {
val profiles = data.getJSONArray("profiles") val profiles = data.getJSONArray("profiles")
if (profiles.length() > 0) { if (profiles.length() > 0) {
// take the newest // take the newest
val profileStoreJson = profiles[profiles.length() - 1] as JSONObject val profileStoreJson = profiles[profiles.length() - 1] as JSONObject
rxBus.send(EventNSClientNewLog("PROFILE", "profile received", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("PROFILE", "profile received"))
dataWorkerStorage.enqueue( dataWorkerStorage.enqueue(
OneTimeWorkRequest.Builder(ProfilePlugin.NSProfileWorker::class.java) OneTimeWorkRequest.Builder(ProfilePlugin.NSProfileWorker::class.java)
.setInputData(dataWorkerStorage.storeInputData(profileStoreJson)) .setInputData(dataWorkerStorage.storeInputData(profileStoreJson))
@ -485,7 +485,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
if (data.has("treatments")) { if (data.has("treatments")) {
val treatments = data.getJSONArray("treatments") val treatments = data.getJSONArray("treatments")
val addedOrUpdatedTreatments = JSONArray() val addedOrUpdatedTreatments = JSONArray()
if (treatments.length() > 0) rxBus.send(EventNSClientNewLog("DATA", "received " + treatments.length() + " treatments", NsClient.Version.V1)) if (treatments.length() > 0) rxBus.send(EventNSClientNewLog("DATA", "received " + treatments.length() + " treatments"))
for (index in 0 until treatments.length()) { for (index in 0 until treatments.length()) {
val jsonTreatment = treatments.getJSONObject(index) val jsonTreatment = treatments.getJSONObject(index)
val action = safeGetStringAllowNull(jsonTreatment, "action", null) val action = safeGetStringAllowNull(jsonTreatment, "action", null)
@ -510,13 +510,13 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
}.create() }.create()
val devicestatuses = gson.fromJson(data.getString("devicestatus"), Array<RemoteDeviceStatus>::class.java) val devicestatuses = gson.fromJson(data.getString("devicestatus"), Array<RemoteDeviceStatus>::class.java)
if (devicestatuses.isNotEmpty()) { if (devicestatuses.isNotEmpty()) {
rxBus.send(EventNSClientNewLog("DATA", "received " + devicestatuses.size + " device statuses", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DATA", "received " + devicestatuses.size + " device statuses"))
nsDeviceStatusHandler.handleNewData(devicestatuses, NsClient.Version.V1) nsDeviceStatusHandler.handleNewData(devicestatuses)
} }
} }
if (data.has("food")) { if (data.has("food")) {
val foods = data.getJSONArray("food") val foods = data.getJSONArray("food")
if (foods.length() > 0) rxBus.send(EventNSClientNewLog("DATA", "received " + foods.length() + " foods", NsClient.Version.V1)) if (foods.length() > 0) rxBus.send(EventNSClientNewLog("DATA", "received " + foods.length() + " foods"))
dataWorkerStorage.enqueue( dataWorkerStorage.enqueue(
OneTimeWorkRequest.Builder(FoodPlugin.FoodWorker::class.java) OneTimeWorkRequest.Builder(FoodPlugin.FoodWorker::class.java)
.setInputData(dataWorkerStorage.storeInputData(foods)) .setInputData(dataWorkerStorage.storeInputData(foods))
@ -525,7 +525,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
} }
if (data.has("mbgs")) { if (data.has("mbgs")) {
val mbgArray = data.getJSONArray("mbgs") val mbgArray = data.getJSONArray("mbgs")
if (mbgArray.length() > 0) rxBus.send(EventNSClientNewLog("DATA", "received " + mbgArray.length() + " mbgs", NsClient.Version.V1)) if (mbgArray.length() > 0) rxBus.send(EventNSClientNewLog("DATA", "received " + mbgArray.length() + " mbgs"))
dataWorkerStorage.enqueue( dataWorkerStorage.enqueue(
OneTimeWorkRequest.Builder(NSClientMbgWorker::class.java) OneTimeWorkRequest.Builder(NSClientMbgWorker::class.java)
.setInputData(dataWorkerStorage.storeInputData(mbgArray)) .setInputData(dataWorkerStorage.storeInputData(mbgArray))
@ -534,13 +534,13 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
} }
if (data.has("cals")) { if (data.has("cals")) {
val cals = data.getJSONArray("cals") val cals = data.getJSONArray("cals")
if (cals.length() > 0) rxBus.send(EventNSClientNewLog("DATA", "received " + cals.length() + " cals", NsClient.Version.V1)) if (cals.length() > 0) rxBus.send(EventNSClientNewLog("DATA", "received " + cals.length() + " cals"))
// Calibrations ignored // Calibrations ignored
} }
if (data.has("sgvs")) { if (data.has("sgvs")) {
val sgvs = data.getJSONArray("sgvs") val sgvs = data.getJSONArray("sgvs")
if (sgvs.length() > 0) { if (sgvs.length() > 0) {
rxBus.send(EventNSClientNewLog("DATA", "received " + sgvs.length() + " sgvs", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DATA", "received " + sgvs.length() + " sgvs"))
// Objective0 // Objective0
sp.putBoolean(R.string.key_objectives_bg_is_available_in_ns, true) sp.putBoolean(R.string.key_objectives_bg_is_available_in_ns, true)
dataWorkerStorage dataWorkerStorage
@ -553,7 +553,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
.enqueue() .enqueue()
} }
} }
rxBus.send(EventNSClientNewLog("LAST", dateUtil.dateAndTimeString(latestDateInReceivedData), NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("LAST", dateUtil.dateAndTimeString(latestDateInReceivedData)))
} catch (e: JSONException) { } catch (e: JSONException) {
aapsLogger.error("Unhandled exception", e) aapsLogger.error("Unhandled exception", e)
} }
@ -576,7 +576,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
rxBus.send( rxBus.send(
EventNSClientNewLog( EventNSClientNewLog(
"DBUPDATE $collection", "Sent " + originalObject.javaClass.simpleName + " " + "DBUPDATE $collection", "Sent " + originalObject.javaClass.simpleName + " " +
"" + _id + " " + data + progress, NsClient.Version.V1 "" + _id + " " + data + progress
) )
) )
} catch (e: JSONException) { } catch (e: JSONException) {
@ -591,7 +591,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
message.put("collection", collection) message.put("collection", collection)
message.put("data", data) message.put("data", data)
socket?.emit("dbAdd", message, NSAddAck(aapsLogger, rxBus, originalObject)) socket?.emit("dbAdd", message, NSAddAck(aapsLogger, rxBus, originalObject))
rxBus.send(EventNSClientNewLog("DBADD $collection", "Sent " + originalObject.javaClass.simpleName + " " + data + " " + progress, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD $collection", "Sent " + originalObject.javaClass.simpleName + " " + data + " " + progress))
} catch (e: JSONException) { } catch (e: JSONException) {
aapsLogger.error("Unhandled exception", e) aapsLogger.error("Unhandled exception", e)
} }
@ -600,7 +600,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
fun sendAlarmAck(alarmAck: AlarmAck) { fun sendAlarmAck(alarmAck: AlarmAck) {
if (!isConnected || !hasWriteAuth) return if (!isConnected || !hasWriteAuth) return
socket?.emit("ack", alarmAck.level, alarmAck.group, alarmAck.silenceTime) socket?.emit("ack", alarmAck.level, alarmAck.group, alarmAck.silenceTime)
rxBus.send(EventNSClientNewLog("ALARMACK ", alarmAck.level.toString() + " " + alarmAck.group + " " + alarmAck.silenceTime, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("ALARMACK ", alarmAck.level.toString() + " " + alarmAck.group + " " + alarmAck.silenceTime))
} }
fun resend(reason: String) { fun resend(reason: String) {
@ -616,9 +616,9 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
// "AndroidAPS:NSClientService_onDataUpdate") // "AndroidAPS:NSClientService_onDataUpdate")
// wakeLock.acquire(mins(10).msecs()) // wakeLock.acquire(mins(10).msecs())
try { try {
rxBus.send(EventNSClientNewLog("QUEUE", "Resend started: $reason", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("QUEUE", "Resend started: $reason"))
dataSyncSelector.doUpload() dataSyncSelector.doUpload()
rxBus.send(EventNSClientNewLog("QUEUE", "Resend ended: $reason", NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("QUEUE", "Resend ended: $reason"))
} finally { } finally {
// if (wakeLock.isHeld) wakeLock.release() // if (wakeLock.isHeld) wakeLock.release()
} }
@ -636,7 +636,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
val nsAlarm = NSAlarm(announcement) val nsAlarm = NSAlarm(announcement)
val notification: Notification = NotificationWithAction(injector, nsAlarm) val notification: Notification = NotificationWithAction(injector, nsAlarm)
rxBus.send(EventNewNotification(notification)) rxBus.send(EventNewNotification(notification))
rxBus.send(EventNSClientNewLog("ANNOUNCEMENT", safeGetString(announcement, "message", "received"), NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("ANNOUNCEMENT", safeGetString(announcement, "message", "received")))
aapsLogger.debug(LTag.NSCLIENT, announcement.toString()) aapsLogger.debug(LTag.NSCLIENT, announcement.toString())
} }
} }
@ -650,7 +650,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
val notification: Notification = NotificationWithAction(injector, nsAlarm) val notification: Notification = NotificationWithAction(injector, nsAlarm)
rxBus.send(EventNewNotification(notification)) rxBus.send(EventNewNotification(notification))
} }
rxBus.send(EventNSClientNewLog("ALARM", safeGetString(alarm, "message", "received"), NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("ALARM", safeGetString(alarm, "message", "received")))
aapsLogger.debug(LTag.NSCLIENT, alarm.toString()) aapsLogger.debug(LTag.NSCLIENT, alarm.toString())
} }
} }
@ -664,7 +664,7 @@ class NSClientService : DaggerService(), NsClient.NSClientService {
val notification: Notification = NotificationWithAction(injector, nsAlarm) val notification: Notification = NotificationWithAction(injector, nsAlarm)
rxBus.send(EventNewNotification(notification)) rxBus.send(EventNewNotification(notification))
} }
rxBus.send(EventNSClientNewLog("URGENTALARM", safeGetString(alarm, "message", "received"), NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("URGENTALARM", safeGetString(alarm, "message", "received")))
aapsLogger.debug(LTag.NSCLIENT, alarm.toString()) aapsLogger.debug(LTag.NSCLIENT, alarm.toString())
} }
} }

View file

@ -36,12 +36,11 @@ import info.nightscout.interfaces.sync.DataSyncSelector.PairProfileSwitch
import info.nightscout.interfaces.sync.DataSyncSelector.PairTemporaryBasal import info.nightscout.interfaces.sync.DataSyncSelector.PairTemporaryBasal
import info.nightscout.interfaces.sync.DataSyncSelector.PairTemporaryTarget import info.nightscout.interfaces.sync.DataSyncSelector.PairTemporaryTarget
import info.nightscout.interfaces.sync.DataSyncSelector.PairTherapyEvent import info.nightscout.interfaces.sync.DataSyncSelector.PairTherapyEvent
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.plugins.R import info.nightscout.plugins.R
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.plugins.sync.nsclient.acks.NSAddAck import info.nightscout.plugins.sync.nsclient.acks.NSAddAck
import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag import info.nightscout.rx.logging.LTag
import info.nightscout.shared.sharedPreferences.SP import info.nightscout.shared.sharedPreferences.SP
@ -83,7 +82,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastTempTargetsIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastTempTargetsIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked TemporaryTarget " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked TemporaryTarget " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedTempTargetsCompat() dataSyncSelector.processChangedTempTargetsCompat()
} }
@ -102,7 +101,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastGlucoseValueIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastGlucoseValueIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked GlucoseValue " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked GlucoseValue " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedGlucoseValuesCompat() dataSyncSelector.processChangedGlucoseValuesCompat()
} }
@ -121,7 +120,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastFoodIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastFoodIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked Food " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked Food " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedFoodsCompat() dataSyncSelector.processChangedFoodsCompat()
} }
@ -140,7 +139,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastTherapyEventIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastTherapyEventIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked TherapyEvent " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked TherapyEvent " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedTherapyEventsCompat() dataSyncSelector.processChangedTherapyEventsCompat()
} }
@ -159,7 +158,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastBolusIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastBolusIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked Bolus " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked Bolus " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedBolusesCompat() dataSyncSelector.processChangedBolusesCompat()
} }
@ -178,7 +177,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastCarbsIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastCarbsIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked Carbs " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked Carbs " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedCarbsCompat() dataSyncSelector.processChangedCarbsCompat()
} }
@ -197,7 +196,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastBolusCalculatorResultsIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastBolusCalculatorResultsIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked BolusCalculatorResult " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked BolusCalculatorResult " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedBolusCalculatorResultsCompat() dataSyncSelector.processChangedBolusCalculatorResultsCompat()
} }
@ -216,7 +215,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastTemporaryBasalIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastTemporaryBasalIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked TemporaryBasal " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked TemporaryBasal " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedTemporaryBasalsCompat() dataSyncSelector.processChangedTemporaryBasalsCompat()
} }
@ -235,7 +234,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastExtendedBolusIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastExtendedBolusIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked ExtendedBolus " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked ExtendedBolus " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedExtendedBolusesCompat() dataSyncSelector.processChangedExtendedBolusesCompat()
} }
@ -254,7 +253,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastProfileSwitchIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastProfileSwitchIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked ProfileSwitch " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked ProfileSwitch " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedProfileSwitchesCompat() dataSyncSelector.processChangedProfileSwitchesCompat()
} }
@ -273,7 +272,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastEffectiveProfileSwitchIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastEffectiveProfileSwitchIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked EffectiveProfileSwitch " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked EffectiveProfileSwitch " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedEffectiveProfileSwitchesCompat() dataSyncSelector.processChangedEffectiveProfileSwitchesCompat()
} }
@ -292,14 +291,14 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastDeviceStatusIdIfGreater(deviceStatus.id) dataSyncSelector.confirmLastDeviceStatusIdIfGreater(deviceStatus.id)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked DeviceStatus " + deviceStatus.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked DeviceStatus " + deviceStatus.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedDeviceStatusesCompat() dataSyncSelector.processChangedDeviceStatusesCompat()
} }
is PairProfileStore -> { is PairProfileStore -> {
dataSyncSelector.confirmLastProfileStore(ack.originalObject.timestampSync) dataSyncSelector.confirmLastProfileStore(ack.originalObject.timestampSync)
rxBus.send(EventNSClientNewLog("DBADD", "Acked ProfileStore " + ack.id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked ProfileStore " + ack.id))
} }
is PairOfflineEvent -> { is PairOfflineEvent -> {
@ -316,7 +315,7 @@ class NSClientAddAckWorker(
dataSyncSelector.confirmLastOfflineEventIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastOfflineEventIdIfGreater(pair.updateRecordId)
} }
.blockingGet() .blockingGet()
rxBus.send(EventNSClientNewLog("DBADD", "Acked OfflineEvent " + pair.value.interfaceIDs.nightscoutId, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBADD", "Acked OfflineEvent " + pair.value.interfaceIDs.nightscoutId))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedOfflineEventsCompat() dataSyncSelector.processChangedOfflineEventsCompat()
} }

View file

@ -20,11 +20,10 @@ import info.nightscout.interfaces.sync.DataSyncSelector.PairProfileSwitch
import info.nightscout.interfaces.sync.DataSyncSelector.PairTemporaryBasal import info.nightscout.interfaces.sync.DataSyncSelector.PairTemporaryBasal
import info.nightscout.interfaces.sync.DataSyncSelector.PairTemporaryTarget import info.nightscout.interfaces.sync.DataSyncSelector.PairTemporaryTarget
import info.nightscout.interfaces.sync.DataSyncSelector.PairTherapyEvent import info.nightscout.interfaces.sync.DataSyncSelector.PairTherapyEvent
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.plugins.sync.nsclient.acks.NSUpdateAck import info.nightscout.plugins.sync.nsclient.acks.NSUpdateAck
import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.AAPSLogger
import javax.inject.Inject import javax.inject.Inject
@ -51,7 +50,7 @@ class NSClientUpdateRemoveAckWorker(
is PairTemporaryTarget -> { is PairTemporaryTarget -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastTempTargetsIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastTempTargetsIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked TemporaryTarget" + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked TemporaryTarget" + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedTempTargetsCompat() dataSyncSelector.processChangedTempTargetsCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -60,7 +59,7 @@ class NSClientUpdateRemoveAckWorker(
is PairGlucoseValue -> { is PairGlucoseValue -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastGlucoseValueIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastGlucoseValueIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked GlucoseValue " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked GlucoseValue " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedGlucoseValuesCompat() dataSyncSelector.processChangedGlucoseValuesCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -69,7 +68,7 @@ class NSClientUpdateRemoveAckWorker(
is PairFood -> { is PairFood -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastFoodIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastFoodIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked Food " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked Food " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedFoodsCompat() dataSyncSelector.processChangedFoodsCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -78,7 +77,7 @@ class NSClientUpdateRemoveAckWorker(
is PairTherapyEvent -> { is PairTherapyEvent -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastTherapyEventIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastTherapyEventIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked TherapyEvent " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked TherapyEvent " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedTherapyEventsCompat() dataSyncSelector.processChangedTherapyEventsCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -87,7 +86,7 @@ class NSClientUpdateRemoveAckWorker(
is PairBolus -> { is PairBolus -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastBolusIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastBolusIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked Bolus " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked Bolus " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedBolusesCompat() dataSyncSelector.processChangedBolusesCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -96,7 +95,7 @@ class NSClientUpdateRemoveAckWorker(
is PairCarbs -> { is PairCarbs -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastCarbsIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastCarbsIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked Carbs " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked Carbs " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedCarbsCompat() dataSyncSelector.processChangedCarbsCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -105,7 +104,7 @@ class NSClientUpdateRemoveAckWorker(
is PairBolusCalculatorResult -> { is PairBolusCalculatorResult -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastBolusCalculatorResultsIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastBolusCalculatorResultsIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked BolusCalculatorResult " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked BolusCalculatorResult " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedBolusCalculatorResultsCompat() dataSyncSelector.processChangedBolusCalculatorResultsCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -114,7 +113,7 @@ class NSClientUpdateRemoveAckWorker(
is PairTemporaryBasal -> { is PairTemporaryBasal -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastTemporaryBasalIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastTemporaryBasalIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked TemporaryBasal " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked TemporaryBasal " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedTemporaryBasalsCompat() dataSyncSelector.processChangedTemporaryBasalsCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -123,7 +122,7 @@ class NSClientUpdateRemoveAckWorker(
is PairExtendedBolus -> { is PairExtendedBolus -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastExtendedBolusIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastExtendedBolusIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked ExtendedBolus " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked ExtendedBolus " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedExtendedBolusesCompat() dataSyncSelector.processChangedExtendedBolusesCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -132,7 +131,7 @@ class NSClientUpdateRemoveAckWorker(
is PairProfileSwitch -> { is PairProfileSwitch -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastProfileSwitchIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastProfileSwitchIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked ProfileSwitch " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked ProfileSwitch " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedProfileSwitchesCompat() dataSyncSelector.processChangedProfileSwitchesCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -141,7 +140,7 @@ class NSClientUpdateRemoveAckWorker(
is PairEffectiveProfileSwitch -> { is PairEffectiveProfileSwitch -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastEffectiveProfileSwitchIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastEffectiveProfileSwitchIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked EffectiveProfileSwitch " + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked EffectiveProfileSwitch " + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedEffectiveProfileSwitchesCompat() dataSyncSelector.processChangedEffectiveProfileSwitchesCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))
@ -150,7 +149,7 @@ class NSClientUpdateRemoveAckWorker(
is PairOfflineEvent -> { is PairOfflineEvent -> {
val pair = ack.originalObject val pair = ack.originalObject
dataSyncSelector.confirmLastOfflineEventIdIfGreater(pair.updateRecordId) dataSyncSelector.confirmLastOfflineEventIdIfGreater(pair.updateRecordId)
rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked OfflineEvent" + ack._id, NsClient.Version.V1)) rxBus.send(EventNSClientNewLog("DBUPDATE", "Acked OfflineEvent" + ack._id))
// Send new if waiting // Send new if waiting
dataSyncSelector.processChangedOfflineEventsCompat() dataSyncSelector.processChangedOfflineEventsCompat()
ret = Result.success(workDataOf("ProcessedData" to pair.toString())) ret = Result.success(workDataOf("ProcessedData" to pair.toString()))

View file

@ -25,7 +25,6 @@ import info.nightscout.interfaces.sync.Sync
import info.nightscout.interfaces.utils.HtmlHelper import info.nightscout.interfaces.utils.HtmlHelper
import info.nightscout.plugins.R import info.nightscout.plugins.R
import info.nightscout.plugins.sync.nsShared.NSClientFragment import info.nightscout.plugins.sync.nsShared.NSClientFragment
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.plugins.sync.nsShared.events.EventNSClientResend import info.nightscout.plugins.sync.nsShared.events.EventNSClientResend
import info.nightscout.plugins.sync.nsShared.events.EventNSClientStatus import info.nightscout.plugins.sync.nsShared.events.EventNSClientStatus
import info.nightscout.plugins.sync.nsShared.events.EventNSClientUpdateGUI import info.nightscout.plugins.sync.nsShared.events.EventNSClientUpdateGUI
@ -39,6 +38,7 @@ import info.nightscout.plugins.sync.nsclientV3.workers.LoadStatusWorker
import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventChargingState import info.nightscout.rx.events.EventChargingState
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.events.EventNetworkChange import info.nightscout.rx.events.EventNetworkChange
import info.nightscout.rx.events.EventPreferenceChange import info.nightscout.rx.events.EventPreferenceChange
import info.nightscout.rx.events.EventSWSyncStatus import info.nightscout.rx.events.EventSWSyncStatus
@ -145,12 +145,10 @@ class NSClientV3Plugin @Inject constructor(
.toObservable(EventNSClientStatus::class.java) .toObservable(EventNSClientStatus::class.java)
.observeOn(aapsSchedulers.io) .observeOn(aapsSchedulers.io)
.subscribe({ event -> .subscribe({ event ->
if (event.version == NsClient.Version.V3) {
status = event.getStatus(context) status = event.getStatus(context)
rxBus.send(EventNSClientUpdateGUI()) rxBus.send(EventNSClientUpdateGUI())
// Pass to setup wizard // Pass to setup wizard
rxBus.send(EventSWSyncStatus(event.getStatus(context))) rxBus.send(EventSWSyncStatus(event.getStatus(context)))
}
}, fabricPrivacy::logException) }, fabricPrivacy::logException)
disposable += rxBus disposable += rxBus
.toObservable(EventNetworkChange::class.java) .toObservable(EventNetworkChange::class.java)
@ -168,7 +166,6 @@ class NSClientV3Plugin @Inject constructor(
.toObservable(EventNSClientNewLog::class.java) .toObservable(EventNSClientNewLog::class.java)
.observeOn(aapsSchedulers.io) .observeOn(aapsSchedulers.io)
.subscribe({ event -> .subscribe({ event ->
if (event.version != NsClient.Version.V3) return@subscribe
addToLog(event) addToLog(event)
aapsLogger.debug(LTag.NSCLIENT, event.action + " " + event.logText) aapsLogger.debug(LTag.NSCLIENT, event.action + " " + event.logText)
}, fabricPrivacy::logException) }, fabricPrivacy::logException)
@ -291,9 +288,9 @@ class NSClientV3Plugin @Inject constructor(
fun test() { fun test() {
if (workIsRunning(arrayOf(JOB_NAME))) if (workIsRunning(arrayOf(JOB_NAME)))
rxBus.send(EventNSClientNewLog("RUN", "Already running", NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("RUN", "Already running"))
else { else {
rxBus.send(EventNSClientNewLog("RUN", "Starting next round", NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("RUN", "Starting next round"))
WorkManager.getInstance(context) WorkManager.getInstance(context)
.beginUniqueWork( .beginUniqueWork(
"NSCv3Load", "NSCv3Load",

View file

@ -9,13 +9,12 @@ import androidx.work.WorkerParameters
import androidx.work.workDataOf import androidx.work.workDataOf
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.core.utils.receivers.DataWorkerStorage import info.nightscout.core.utils.receivers.DataWorkerStorage
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.plugins.R import info.nightscout.plugins.R
import info.nightscout.plugins.source.NSClientSourcePlugin import info.nightscout.plugins.source.NSClientSourcePlugin
import info.nightscout.plugins.sync.nsShared.StoreDataForDb import info.nightscout.plugins.sync.nsShared.StoreDataForDb
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.plugins.sync.nsclientV3.NSClientV3Plugin import info.nightscout.plugins.sync.nsclientV3.NSClientV3Plugin
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.shared.sharedPreferences.SP import info.nightscout.shared.sharedPreferences.SP
import info.nightscout.shared.utils.DateUtil import info.nightscout.shared.utils.DateUtil
@ -52,8 +51,7 @@ class LoadBgWorker(
rxBus.send( rxBus.send(
EventNSClientNewLog( EventNSClientNewLog(
"RCV", "RCV",
"${sgvs.size} SVGs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.entries)}", "${sgvs.size} SVGs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.entries)}"
NsClient.Version.V3
) )
) )
// Objective0 // Objective0
@ -65,7 +63,7 @@ class LoadBgWorker(
OneTimeWorkRequest.Builder(NSClientSourcePlugin.NSClientSourceWorker::class.java).setInputData(dataWorkerStorage.storeInputData(sgvs)).build() OneTimeWorkRequest.Builder(NSClientSourcePlugin.NSClientSourceWorker::class.java).setInputData(dataWorkerStorage.storeInputData(sgvs)).build()
).then(OneTimeWorkRequest.Builder(LoadBgWorker::class.java).build()).enqueue() ).then(OneTimeWorkRequest.Builder(LoadBgWorker::class.java).build()).enqueue()
} else { } else {
rxBus.send(EventNSClientNewLog("END", "No SGVs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.entries)}", NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("END", "No SGVs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.entries)}"))
WorkManager.getInstance(context) WorkManager.getInstance(context)
.beginUniqueWork( .beginUniqueWork(
NSClientV3Plugin.JOB_NAME, NSClientV3Plugin.JOB_NAME,
@ -80,7 +78,7 @@ class LoadBgWorker(
ret = Result.failure(workDataOf("Error" to error.toString())) ret = Result.failure(workDataOf("Error" to error.toString()))
} }
else { else {
rxBus.send(EventNSClientNewLog("END", "No new SGVs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.entries)}", NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("END", "No new SGVs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.entries)}"))
WorkManager.getInstance(context) WorkManager.getInstance(context)
.beginUniqueWork( .beginUniqueWork(
NSClientV3Plugin.JOB_NAME, NSClientV3Plugin.JOB_NAME,

View file

@ -6,11 +6,10 @@ import androidx.work.WorkerParameters
import androidx.work.workDataOf import androidx.work.workDataOf
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.core.utils.receivers.DataWorkerStorage import info.nightscout.core.utils.receivers.DataWorkerStorage
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.plugins.sync.nsclient.data.NSDeviceStatusHandler import info.nightscout.plugins.sync.nsclient.data.NSDeviceStatusHandler
import info.nightscout.plugins.sync.nsclientV3.NSClientV3Plugin import info.nightscout.plugins.sync.nsclientV3.NSClientV3Plugin
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.shared.utils.DateUtil import info.nightscout.shared.utils.DateUtil
import info.nightscout.shared.utils.T import info.nightscout.shared.utils.T
@ -39,10 +38,10 @@ class LoadDeviceStatusWorker(
val deviceStatuses = nsClientV3Plugin.nsAndroidClient.getDeviceStatusModifiedSince(from) val deviceStatuses = nsClientV3Plugin.nsAndroidClient.getDeviceStatusModifiedSince(from)
aapsLogger.debug("DEVICESTATUSES: $deviceStatuses") aapsLogger.debug("DEVICESTATUSES: $deviceStatuses")
if (deviceStatuses.isNotEmpty()) { if (deviceStatuses.isNotEmpty()) {
rxBus.send(EventNSClientNewLog("RCV", "${deviceStatuses.size} DSs from ${dateUtil.dateAndTimeAndSecondsString(from)}", NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("RCV", "${deviceStatuses.size} DSs from ${dateUtil.dateAndTimeAndSecondsString(from)}"))
nsDeviceStatusHandler.handleNewData(deviceStatuses.toTypedArray(), NsClient.Version.V3) nsDeviceStatusHandler.handleNewData(deviceStatuses.toTypedArray())
} else { } else {
rxBus.send(EventNSClientNewLog("END", "No DSs from ${dateUtil.dateAndTimeAndSecondsString(from)}", NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("END", "No DSs from ${dateUtil.dateAndTimeAndSecondsString(from)}"))
} }
} catch (error: Exception) { } catch (error: Exception) {
aapsLogger.error("Error: ", error) aapsLogger.error("Error: ", error)

View file

@ -9,11 +9,10 @@ import androidx.work.WorkerParameters
import androidx.work.workDataOf import androidx.work.workDataOf
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.core.utils.receivers.DataWorkerStorage import info.nightscout.core.utils.receivers.DataWorkerStorage
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.plugins.sync.nsShared.StoreDataForDb import info.nightscout.plugins.sync.nsShared.StoreDataForDb
import info.nightscout.plugins.sync.nsShared.events.EventNSClientNewLog
import info.nightscout.plugins.sync.nsclientV3.NSClientV3Plugin import info.nightscout.plugins.sync.nsclientV3.NSClientV3Plugin
import info.nightscout.rx.bus.RxBus import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventNSClientNewLog
import info.nightscout.rx.logging.AAPSLogger import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.shared.utils.DateUtil import info.nightscout.shared.utils.DateUtil
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
@ -44,8 +43,7 @@ class LoadTreatmentsWorker(
rxBus.send( rxBus.send(
EventNSClientNewLog( EventNSClientNewLog(
"RCV", "RCV",
"${treatments.size} TRs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.treatments)}", "${treatments.size} TRs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.treatments)}"
NsClient.Version.V3
) )
) )
// Schedule processing of fetched data and continue of loading // Schedule processing of fetched data and continue of loading
@ -61,8 +59,7 @@ class LoadTreatmentsWorker(
} else { } else {
rxBus.send( rxBus.send(
EventNSClientNewLog( EventNSClientNewLog(
"END", "No TRs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.treatments)}", "END", "No TRs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.treatments)}"
NsClient.Version.V3
) )
) )
storeDataForDb.storeTreatmentsToDb() storeDataForDb.storeTreatmentsToDb()
@ -78,7 +75,7 @@ class LoadTreatmentsWorker(
ret = Result.failure(workDataOf("Error" to error.toString())) ret = Result.failure(workDataOf("Error" to error.toString()))
} }
else { else {
rxBus.send(EventNSClientNewLog("END", "No new TRs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.treatments)}", NsClient.Version.V3)) rxBus.send(EventNSClientNewLog("END", "No new TRs from ${dateUtil.dateAndTimeAndSecondsString(nsClientV3Plugin.lastFetched.collections.treatments)}"))
storeDataForDb.storeTreatmentsToDb() storeDataForDb.storeTreatmentsToDb()
WorkManager.getInstance(context) WorkManager.getInstance(context)
.enqueueUniqueWork( .enqueueUniqueWork(

View file

@ -409,7 +409,6 @@
<string name="virtual_pump_definition">Pump Definition</string> <string name="virtual_pump_definition">Pump Definition</string>
<string name="virtual_pump_pump_def">Bolus: Step=%1$s\nExtended Bolus: [Step=%2$s, Duration=%3$smin-%4$sh]\nBasal: Step=%5$s\nTBR: %6$s (by %7$s), Duration=%8$smin-%9$sh\n%10$s</string> <string name="virtual_pump_pump_def">Bolus: Step=%1$s\nExtended Bolus: [Step=%2$s, Duration=%3$smin-%4$sh]\nBasal: Step=%5$s\nTBR: %6$s (by %7$s), Duration=%8$smin-%9$sh\n%10$s</string>
<string name="virtual_pump">Virtual Pump</string>
<string name="virtual_pump_shortname">VPUMP</string> <string name="virtual_pump_shortname">VPUMP</string>
<string name="description_pump_virtual">Pump integration for pumps which don\'t have any driver yet (Open Loop)</string> <string name="description_pump_virtual">Pump integration for pumps which don\'t have any driver yet (Open Loop)</string>
<string name="virtual_pump_label">VIRTUAL PUMP</string> <string name="virtual_pump_label">VIRTUAL PUMP</string>
@ -537,7 +536,6 @@
<string name="loop_aps_label">APS</string> <string name="loop_aps_label">APS</string>
<string name="request_label">Request</string> <string name="request_label">Request</string>
<string name="loop_constraints_processed_label">After processed constraints</string> <string name="loop_constraints_processed_label">After processed constraints</string>
<string name="constraints">Constraints</string>
<string name="loop_tbr_request_time_label">Temp basal request time</string> <string name="loop_tbr_request_time_label">Temp basal request time</string>
<string name="loop_tbr_execution_time_label">Temp basal execution time</string> <string name="loop_tbr_execution_time_label">Temp basal execution time</string>
<string name="loop_tbr_set_by_pump_label">Temp basal set by pump</string> <string name="loop_tbr_set_by_pump_label">Temp basal set by pump</string>