RS -> danaRS finished

This commit is contained in:
Milos Kozak 2020-05-09 10:52:20 +02:00
parent 040c76d839
commit 7fc631a729
104 changed files with 666 additions and 407 deletions

View file

@ -23,6 +23,7 @@ import javax.inject.Inject;
import dagger.android.AndroidInjector; import dagger.android.AndroidInjector;
import dagger.android.DaggerApplication; import dagger.android.DaggerApplication;
import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.BgReading;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.db.DatabaseHelper; import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.db.StaticInjector; import info.nightscout.androidaps.db.StaticInjector;
import info.nightscout.androidaps.dependencyInjection.DaggerAppComponent; import info.nightscout.androidaps.dependencyInjection.DaggerAppComponent;
@ -45,7 +46,7 @@ import info.nightscout.androidaps.utils.ActivityMonitor;
import info.nightscout.androidaps.utils.LocaleHelper; import info.nightscout.androidaps.utils.LocaleHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP; import info.nightscout.androidaps.utils.sharedPreferences.SP;
public class MainApp extends DaggerApplication implements DatabaseHelperInterface { public class MainApp extends DaggerApplication {
static MainApp sInstance; static MainApp sInstance;
private static Resources sResources; private static Resources sResources;
@ -57,6 +58,7 @@ public class MainApp extends DaggerApplication implements DatabaseHelperInterfac
@Inject ActivityMonitor activityMonitor; @Inject ActivityMonitor activityMonitor;
@Inject VersionCheckerUtils versionCheckersUtils; @Inject VersionCheckerUtils versionCheckersUtils;
@Inject SP sp; @Inject SP sp;
@Inject NSUpload nsUpload;
@Inject ConfigBuilderPlugin configBuilderPlugin; @Inject ConfigBuilderPlugin configBuilderPlugin;
@Inject KeepAliveReceiver.KeepAliveManager keepAliveManager; @Inject KeepAliveReceiver.KeepAliveManager keepAliveManager;
@ -99,7 +101,7 @@ public class MainApp extends DaggerApplication implements DatabaseHelperInterfac
pluginStore.setPlugins(plugins); pluginStore.setPlugins(plugins);
configBuilderPlugin.initialize(); configBuilderPlugin.initialize();
NSUpload.uploadAppStart(); nsUpload.uploadAppStart();
new Thread(() -> keepAliveManager.setAlarm(this)).start(); new Thread(() -> keepAliveManager.setAlarm(this)).start();
doMigrations(); doMigrations();
@ -173,8 +175,4 @@ public class MainApp extends DaggerApplication implements DatabaseHelperInterfac
keepAliveManager.cancelAlarm(this); keepAliveManager.cancelAlarm(this);
super.onTerminate(); super.onTerminate();
} }
@NotNull @Override public List<BgReading> getAllBgreadingsDataFromTime(long mills, boolean ascending) {
return getDbHelper().getAllBgreadingsDataFromTime(mills, ascending);
}
} }

View file

@ -1733,7 +1733,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
} }
*/ */
public void createProfileSwitchFromJsonIfNotExists(ActivePluginProvider activePluginProvider, JSONObject trJson) { public void createProfileSwitchFromJsonIfNotExists(ActivePluginProvider activePluginProvider, NSUpload nsUpload, JSONObject trJson) {
try { try {
ProfileSwitch profileSwitch = new ProfileSwitch(MainApp.instance()); ProfileSwitch profileSwitch = new ProfileSwitch(MainApp.instance());
profileSwitch.date = trJson.getLong("mills"); profileSwitch.date = trJson.getLong("mills");
@ -1759,7 +1759,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
if (L.isEnabled(LTag.DATABASE)) if (L.isEnabled(LTag.DATABASE))
log.debug("Profile switch prefilled with JSON from local store"); log.debug("Profile switch prefilled with JSON from local store");
// Update data in NS // Update data in NS
NSUpload.updateProfileSwitch(profileSwitch); nsUpload.updateProfileSwitch(profileSwitch);
} else { } else {
if (L.isEnabled(LTag.DATABASE)) if (L.isEnabled(LTag.DATABASE))
log.debug("JSON for profile switch doesn't exist. Ignoring: " + trJson.toString()); log.debug("JSON for profile switch doesn't exist. Ignoring: " + trJson.toString());

View file

@ -0,0 +1,68 @@
package info.nightscout.androidaps.db;
import com.j256.ormlite.dao.CloseableIterator;
import org.jetbrains.annotations.NotNull;
import java.sql.SQLException;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
@Singleton
public class DatabaseHelperProvider implements DatabaseHelperInterface {
@Inject DatabaseHelperProvider() {}
@NotNull @Override public List<BgReading> getAllBgreadingsDataFromTime(long mills, boolean ascending) {
return MainApp.getDbHelper().getAllBgreadingsDataFromTime(mills, ascending);
}
@Override public void createOrUpdate(@NotNull CareportalEvent careportalEvent) {
MainApp.getDbHelper().createOrUpdate(careportalEvent);
}
@Override public void createOrUpdate(@NotNull DanaRHistoryRecord record) {
MainApp.getDbHelper().createOrUpdate(record);
}
@NotNull @Override public List<DanaRHistoryRecord> getDanaRHistoryRecordsByType(byte type) {
return MainApp.getDbHelper().getDanaRHistoryRecordsByType(type);
}
@NotNull @Override public List<TDD> getTDDs() {
return MainApp.getDbHelper().getTDDs();
}
@Override public long size(@NotNull String table) {
return MainApp.getDbHelper().size(table);
}
@Override public void create(@NotNull DbRequest record) {
try {
MainApp.getDbHelper().create(record);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override public void deleteAllDbRequests() {
MainApp.getDbHelper().deleteAllDbRequests();
}
@Override public int deleteDbRequest(@NotNull String id) {
return MainApp.getDbHelper().deleteDbRequest(id);
}
@Override public void deleteDbRequestbyMongoId(@NotNull String action, @NotNull String _id) {
MainApp.getDbHelper().deleteDbRequestbyMongoId(action, _id);
}
@NotNull @Override public CloseableIterator<DbRequest> getDbRequestInterator() {
return MainApp.getDbHelper().getDbRequestInterator();
}
}

View file

@ -8,13 +8,16 @@ import dagger.Provides
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Config import info.nightscout.androidaps.Config
import info.nightscout.androidaps.MainApp import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.db.DatabaseHelperProvider
import info.nightscout.androidaps.interfaces.* import info.nightscout.androidaps.interfaces.*
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.configBuilder.PluginStore import info.nightscout.androidaps.plugins.configBuilder.PluginStore
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation
import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.queue.CommandQueue import info.nightscout.androidaps.queue.CommandQueue
import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.androidNotification.NotificationHolder
import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP import info.nightscout.androidaps.utils.sharedPreferences.SP
import info.nightscout.androidaps.utils.storage.FileStorage import info.nightscout.androidaps.utils.storage.FileStorage
@ -61,11 +64,12 @@ open class AppModule {
@Binds fun bindContext(mainApp: MainApp): Context @Binds fun bindContext(mainApp: MainApp): Context
@Binds fun bindInjector(mainApp: MainApp): HasAndroidInjector @Binds fun bindInjector(mainApp: MainApp): HasAndroidInjector
@Binds fun bindDatabaseHelperInterface(mainApp: MainApp): DatabaseHelperInterface
@Binds fun bindActivePluginProvider(pluginStore: PluginStore): ActivePluginProvider @Binds fun bindActivePluginProvider(pluginStore: PluginStore): ActivePluginProvider
@Binds fun commandQueueProvider(commandQueue: CommandQueue): CommandQueueProvider @Binds fun commandQueueProvider(commandQueue: CommandQueue): CommandQueueProvider
@Binds fun configInterfaceProvider(config: Config): ConfigInterface @Binds fun configInterfaceProvider(config: Config): ConfigInterface
@Binds fun treatmentInterfaceProvider(treatmentsPlugin: TreatmentsPlugin): TreatmentsInterface @Binds fun treatmentInterfaceProvider(treatmentsPlugin: TreatmentsPlugin): TreatmentsInterface
@Binds fun provideDatabaseHelperInterface(databaseHelperProvider: DatabaseHelperProvider): DatabaseHelperInterface
@Binds fun provideUploadQueueInterface(uploadQueue: UploadQueue): UploadQueueInterface
@Binds fun provideNotificationHolderInterface(notificationHolder: NotificationHolder): NotificationHolderInterface
} }
} }

View file

@ -10,7 +10,7 @@ import info.nightscout.androidaps.plugins.aps.openAPSSMB.OpenAPSSMBFragment
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderFragment import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderFragment
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesFragment import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesFragment
import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog
import info.nightscout.androidaps.plugins.constraints.objectives.dialogs.NtpProgressDialog import info.nightscout.androidaps.dialogs.NtpProgressDialog
import info.nightscout.androidaps.plugins.general.actions.ActionsFragment import info.nightscout.androidaps.plugins.general.actions.ActionsFragment
import info.nightscout.androidaps.plugins.general.automation.AutomationFragment import info.nightscout.androidaps.plugins.general.automation.AutomationFragment
import info.nightscout.androidaps.plugins.general.automation.dialogs.ChooseActionDialog import info.nightscout.androidaps.plugins.general.automation.dialogs.ChooseActionDialog

View file

@ -40,6 +40,7 @@ class CarbsDialog : DialogFragmentWithDate() {
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin @Inject lateinit var treatmentsPlugin: TreatmentsPlugin
@Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin @Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var carbsGenerator: CarbsGenerator @Inject lateinit var carbsGenerator: CarbsGenerator
companion object { companion object {
@ -233,7 +234,7 @@ class CarbsDialog : DialogFragmentWithDate() {
} else { } else {
aapsLogger.debug("USER ENTRY: CARBS $carbsAfterConstraints time: $time duration: $duration") aapsLogger.debug("USER ENTRY: CARBS $carbsAfterConstraints time: $time duration: $duration")
carbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes) carbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes)
NSUpload.uploadEvent(CareportalEvent.NOTE, DateUtil.now() - 2000, resourceHelper.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset)) nsUpload.uploadEvent(CareportalEvent.NOTE, DateUtil.now() - 2000, resourceHelper.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset))
} }
} }
}, null) }, null)

View file

@ -36,6 +36,7 @@ class CareDialog : DialogFragmentWithDate() {
@Inject lateinit var mainApp: MainApp @Inject lateinit var mainApp: MainApp
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var translator: Translator @Inject lateinit var translator: Translator
enum class EventType { enum class EventType {
@ -197,7 +198,7 @@ class CareDialog : DialogFragmentWithDate() {
careportalEvent.json = json.toString() careportalEvent.json = json.toString()
aapsLogger.debug("USER ENTRY: CAREPORTAL ${careportalEvent.eventType} json: ${careportalEvent.json}") aapsLogger.debug("USER ENTRY: CAREPORTAL ${careportalEvent.eventType} json: ${careportalEvent.json}")
MainApp.getDbHelper().createOrUpdate(careportalEvent) MainApp.getDbHelper().createOrUpdate(careportalEvent)
NSUpload.uploadCareportalEntryToNS(json) nsUpload.uploadCareportalEntryToNS(json)
}, null) }, null)
} }
return true return true

View file

@ -40,9 +40,9 @@ class FillDialog : DialogFragmentWithDate() {
@Inject lateinit var constraintChecker: ConstraintChecker @Inject lateinit var constraintChecker: ConstraintChecker
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var ctx: Context @Inject lateinit var ctx: Context
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var activePlugin: ActivePluginProvider @Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var injector: HasAndroidInjector
override fun onSaveInstanceState(savedInstanceState: Bundle) { override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState) super.onSaveInstanceState(savedInstanceState)
@ -124,12 +124,12 @@ class FillDialog : DialogFragmentWithDate() {
} }
if (siteChange) { if (siteChange) {
aapsLogger.debug("USER ENTRY: SITE CHANGE") aapsLogger.debug("USER ENTRY: SITE CHANGE")
generateCareportalEvent(CareportalEvent.SITECHANGE, eventTime, notes, resourceHelper, sp, injector) nsUpload.generateCareportalEvent(CareportalEvent.SITECHANGE, eventTime, notes)
} }
if (insulinChange) { if (insulinChange) {
// add a second for case of both checked // add a second for case of both checked
aapsLogger.debug("USER ENTRY: INSULIN CHANGE") aapsLogger.debug("USER ENTRY: INSULIN CHANGE")
generateCareportalEvent(CareportalEvent.INSULINCHANGE, eventTime + 1000, notes, resourceHelper, sp, injector) nsUpload.generateCareportalEvent(CareportalEvent.INSULINCHANGE, eventTime + 1000, notes)
} }
}, null) }, null)
} }
@ -162,29 +162,4 @@ class FillDialog : DialogFragmentWithDate() {
} }
}) })
} }
companion object {
fun generateCareportalEvent(eventType: String, time: Long, notes: String, resourceHelper: ResourceHelper, sp: SP, injector: HasAndroidInjector) {
val careportalEvent = CareportalEvent(injector)
careportalEvent.source = Source.USER
careportalEvent.date = time
careportalEvent.json = generateJson(eventType, time, notes, resourceHelper, sp).toString()
careportalEvent.eventType = eventType
MainApp.getDbHelper().createOrUpdate(careportalEvent)
NSUpload.uploadEvent(eventType, time, notes)
}
private fun generateJson(careportalEvent: String, time: Long, notes: String, resourceHelper: ResourceHelper, sp: SP): JSONObject {
val data = JSONObject()
try {
data.put("eventType", careportalEvent)
data.put("created_at", DateUtil.toISOString(time))
data.put("mills", time)
data.put("enteredBy", sp.getString("careportal_enteredby", resourceHelper.gs(R.string.app_name)))
if (notes.isNotEmpty()) data.put("notes", notes)
} catch (ignored: JSONException) {
}
return data
}
}
} }

View file

@ -22,6 +22,7 @@ import javax.inject.Singleton;
import dagger.Lazy; import dagger.Lazy;
import dagger.android.HasAndroidInjector; import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.BuildConfig;
import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainActivity; import info.nightscout.androidaps.MainActivity;
import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.MainApp;
@ -103,7 +104,7 @@ public class LoopPlugin extends PluginBase implements LoopInterface {
private boolean isSuperBolus; private boolean isSuperBolus;
private boolean isDisconnected; private boolean isDisconnected;
@Nullable public LastRun lastRun = null; @Nullable private LastRun lastRun = null;
@Nullable @Override public LastRun getLastRun() { @Nullable @Override public LastRun getLastRun() {
return lastRun; return lastRun;
@ -412,7 +413,7 @@ public class LoopPlugin extends PluginBase implements LoopInterface {
lastRun.setLastSMBEnact(0); lastRun.setLastSMBEnact(0);
lastRun.setLastSMBRequest(0); lastRun.setLastSMBRequest(0);
nsUpload.uploadDeviceStatus(this, iobCobCalculatorPlugin, profileFunction, activePlugin.getActivePump(), receiverStatusStore); nsUpload.uploadDeviceStatus(this, iobCobCalculatorPlugin, profileFunction, activePlugin.getActivePump(), receiverStatusStore, BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION);
if (isSuspended()) { if (isSuspended()) {
getAapsLogger().debug(LTag.APS, resourceHelper.gs(R.string.loopsuspended)); getAapsLogger().debug(LTag.APS, resourceHelper.gs(R.string.loopsuspended));
@ -537,7 +538,7 @@ public class LoopPlugin extends PluginBase implements LoopInterface {
lastRun.setLastTBRRequest(lastRun.getLastAPSRun()); lastRun.setLastTBRRequest(lastRun.getLastAPSRun());
lastRun.setLastTBREnact(DateUtil.now()); lastRun.setLastTBREnact(DateUtil.now());
lastRun.setLastOpenModeAccept(DateUtil.now()); lastRun.setLastOpenModeAccept(DateUtil.now());
nsUpload.uploadDeviceStatus(lp, iobCobCalculatorPlugin, profileFunction, activePlugin.getActivePump(), receiverStatusStore); nsUpload.uploadDeviceStatus(lp, iobCobCalculatorPlugin, profileFunction, activePlugin.getActivePump(), receiverStatusStore, BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION);
sp.incInt(R.string.key_ObjectivesmanualEnacts); sp.incInt(R.string.key_ObjectivesmanualEnacts);
} }
rxBus.send(new EventAcceptOpenLoopChange()); rxBus.send(new EventAcceptOpenLoopChange());

View file

@ -22,8 +22,8 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog
import info.nightscout.androidaps.plugins.constraints.objectives.dialogs.NtpProgressDialog import info.nightscout.androidaps.dialogs.NtpProgressDialog
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventNtpStatus import info.nightscout.androidaps.events.EventNtpStatus
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesUpdateGui import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesUpdateGui
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.ExamTask import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.ExamTask
import info.nightscout.androidaps.receivers.ReceiverStatusStore import info.nightscout.androidaps.receivers.ReceiverStatusStore

View file

@ -22,6 +22,7 @@ import javax.inject.Inject
class ActionNotification(injector: HasAndroidInjector) : Action(injector) { class ActionNotification(injector: HasAndroidInjector) : Action(injector) {
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var nsUpload: NSUpload
var text = InputString(injector) var text = InputString(injector)
@ -32,7 +33,7 @@ class ActionNotification(injector: HasAndroidInjector) : Action(injector) {
override fun doAction(callback: Callback) { override fun doAction(callback: Callback) {
val notification = NotificationUserMessage(text.value) val notification = NotificationUserMessage(text.value)
rxBus.send(EventNewNotification(notification)) rxBus.send(EventNewNotification(notification))
NSUpload.uploadError(text.value) nsUpload.uploadError(text.value)
rxBus.send(EventRefreshOverview("ActionNotification")) rxBus.send(EventRefreshOverview("ActionNotification"))
callback.result(PumpEnactResult(injector).success(true).comment(R.string.ok))?.run() callback.result(PumpEnactResult(injector).success(true).comment(R.string.ok))?.run()
} }

View file

@ -78,6 +78,7 @@ public class NewNSTreatmentDialog extends DaggerDialogFragment implements View.O
@Inject ActivePluginProvider activePlugin; @Inject ActivePluginProvider activePlugin;
@Inject TreatmentsPlugin treatmentsPlugin; @Inject TreatmentsPlugin treatmentsPlugin;
@Inject HardLimits hardLimits; @Inject HardLimits hardLimits;
@Inject NSUpload nsUpload;
@Inject Translator translator; @Inject Translator translator;
@Inject DateUtil dateUtil; @Inject DateUtil dateUtil;
@ -714,7 +715,7 @@ public class NewNSTreatmentDialog extends DaggerDialogFragment implements View.O
private void confirmNSTreatmentCreation() { private void confirmNSTreatmentCreation() {
final JSONObject data = gatherData(); final JSONObject data = gatherData();
OKDialog.showConfirmation(getContext(), translator.translate(JsonHelper.safeGetString(data, "eventType", resourceHelper.gs(R.string.overview_treatment_label))), buildConfirmText(data), () -> NSUpload.createNSTreatment(data, profileStore, profileFunction, eventTime.getTime())); OKDialog.showConfirmation(getContext(), translator.translate(JsonHelper.safeGetString(data, "eventType", resourceHelper.gs(R.string.overview_treatment_label))), buildConfirmText(data), () -> nsUpload.createNSTreatment(data, profileStore, profileFunction, eventTime.getTime()));
} }

View file

@ -35,6 +35,7 @@ class FoodFragment : DaggerFragment() {
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var foodPlugin: FoodPlugin @Inject lateinit var foodPlugin: FoodPlugin
@Inject lateinit var nsUpload: NSUpload
private val disposable = CompositeDisposable() private val disposable = CompositeDisposable()
private lateinit var unfiltered: List<Food> private lateinit var unfiltered: List<Food>
@ -200,7 +201,7 @@ class FoodFragment : DaggerFragment() {
activity?.let { activity -> activity?.let { activity ->
showConfirmation(activity, resourceHelper.gs(R.string.confirmation), resourceHelper.gs(R.string.removerecord) + "\n" + food.name, DialogInterface.OnClickListener { _: DialogInterface?, _: Int -> showConfirmation(activity, resourceHelper.gs(R.string.confirmation), resourceHelper.gs(R.string.removerecord) + "\n" + food.name, DialogInterface.OnClickListener { _: DialogInterface?, _: Int ->
if (food._id != null && food._id != "") { if (food._id != null && food._id != "") {
NSUpload.removeFoodFromNS(food._id) nsUpload.removeFoodFromNS(food._id)
} }
foodPlugin.service?.delete(food) foodPlugin.service?.delete(food)
}, null) }, null)

View file

@ -33,6 +33,7 @@ public class NSClientFragment extends DaggerFragment implements View.OnClickList
@Inject SP sp; @Inject SP sp;
@Inject ResourceHelper resourceHelper; @Inject ResourceHelper resourceHelper;
@Inject RxBusWrapper rxBus; @Inject RxBusWrapper rxBus;
@Inject UploadQueue uploadQueue;
@Inject FabricPrivacy fabricPrivacy; @Inject FabricPrivacy fabricPrivacy;
private CompositeDisposable disposable = new CompositeDisposable(); private CompositeDisposable disposable = new CompositeDisposable();
@ -119,13 +120,13 @@ public class NSClientFragment extends DaggerFragment implements View.OnClickList
break; break;
case R.id.nsclientinternal_clearqueue: case R.id.nsclientinternal_clearqueue:
OKDialog.showConfirmation(getContext(), resourceHelper.gs(R.string.nsclientinternal), resourceHelper.gs(R.string.clearqueueconfirm), () -> { OKDialog.showConfirmation(getContext(), resourceHelper.gs(R.string.nsclientinternal), resourceHelper.gs(R.string.clearqueueconfirm), () -> {
UploadQueue.clearQueue(); uploadQueue.clearQueue();
updateGui(); updateGui();
fabricPrivacy.logCustom("NSClientClearQueue"); fabricPrivacy.logCustom("NSClientClearQueue");
}); });
break; break;
case R.id.nsclientinternal_showqueue: case R.id.nsclientinternal_showqueue:
rxBus.send(new EventNSClientNewLog("QUEUE", nsClientPlugin.queue().textList())); rxBus.send(new EventNSClientNewLog("QUEUE", uploadQueue.textList()));
break; break;
} }
} }
@ -154,7 +155,7 @@ public class NSClientFragment extends DaggerFragment implements View.OnClickList
logScrollview.fullScroll(ScrollView.FOCUS_DOWN); logScrollview.fullScroll(ScrollView.FOCUS_DOWN);
} }
urlTextView.setText(nsClientPlugin.url()); urlTextView.setText(nsClientPlugin.url());
Spanned queuetext = Html.fromHtml(resourceHelper.gs(R.string.queue) + " <b>" + UploadQueue.size() + "</b>"); Spanned queuetext = Html.fromHtml(resourceHelper.gs(R.string.queue) + " <b>" + uploadQueue.size() + "</b>");
queueTextView.setText(queuetext); queueTextView.setText(queuetext);
statusTextView.setText(nsClientPlugin.status); statusTextView.setText(nsClientPlugin.status);
} }

View file

@ -253,10 +253,6 @@ public class NSClientPlugin extends PluginBase {
rxBus.send(new EventPreferenceChange(resourceHelper, R.string.key_nsclientinternal_paused)); rxBus.send(new EventPreferenceChange(resourceHelper, R.string.key_nsclientinternal_paused));
} }
public UploadQueue queue() {
return NSClientService.uploadQueue;
}
public String url() { public String url() {
return NSClientService.nsURL; return NSClientService.nsURL;
} }

View file

@ -8,71 +8,86 @@ import com.j256.ormlite.dao.CloseableIterator;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import org.slf4j.Logger;
import java.sql.SQLException; import java.sql.SQLException;
import info.nightscout.androidaps.MainApp; import javax.inject.Inject;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
import info.nightscout.androidaps.db.DatabaseHelper; import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.db.DbRequest; import info.nightscout.androidaps.db.DbRequest;
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
import info.nightscout.androidaps.interfaces.UploadQueueInterface; import info.nightscout.androidaps.interfaces.UploadQueueInterface;
import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.bus.RxBus;
import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientResend; import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientResend;
import info.nightscout.androidaps.plugins.general.nsclient.services.NSClientService; import info.nightscout.androidaps.plugins.general.nsclient.services.NSClientService;
import info.nightscout.androidaps.utils.SP; import info.nightscout.androidaps.utils.sharedPreferences.SP;
/** /**
* Created by mike on 21.02.2016. * Created by mike on 21.02.2016.
*/ */
public class UploadQueue implements UploadQueueInterface { public class UploadQueue implements UploadQueueInterface {
private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.NSCLIENT); private final AAPSLogger aapsLogger;
private final DatabaseHelperInterface databaseHelper;
private final Context context;
private final SP sp;
private final RxBusWrapper rxBus;
public static String status() { @Inject
return "QUEUE: " + MainApp.getDbHelper().size(DatabaseHelper.DATABASE_DBREQUESTS); public UploadQueue(
AAPSLogger aapsLogger,
DatabaseHelperInterface databaseHelper,
Context context,
SP sp,
RxBusWrapper rxBus
) {
this.aapsLogger = aapsLogger;
this.databaseHelper = databaseHelper;
this.context = context;
this.sp = sp;
this.rxBus = rxBus;
} }
public static long size() { public String status() {
return MainApp.getDbHelper().size(DatabaseHelper.DATABASE_DBREQUESTS); return "QUEUE: " + databaseHelper.size(DatabaseHelper.DATABASE_DBREQUESTS);
} }
private static void startService() { public long size() {
return databaseHelper.size(DatabaseHelper.DATABASE_DBREQUESTS);
}
private void startService() {
if (NSClientService.handler == null) { if (NSClientService.handler == null) {
Context context = MainApp.instance();
context.startService(new Intent(context, NSClientService.class)); context.startService(new Intent(context, NSClientService.class));
SystemClock.sleep(2000); SystemClock.sleep(2000);
} }
} }
public static void add(final DbRequest dbr) { public void add(final DbRequest dbr) {
if (SP.getBoolean(R.string.key_ns_noupload, false)) return; if (sp.getBoolean(R.string.key_ns_noupload, false)) return;
if (L.isEnabled(LTag.NSCLIENT)) aapsLogger.debug(LTag.NSCLIENT, "Adding to queue: " + dbr.log());
log.debug("Adding to queue: " + dbr.log());
try { try {
MainApp.getDbHelper().create(dbr); databaseHelper.create(dbr);
} catch (Exception e) { } catch (Exception e) {
log.error("Unhandled exception", e); aapsLogger.error("Unhandled exception", e);
} }
RxBus.getINSTANCE().send(new EventNSClientResend("newdata")); rxBus.send(new EventNSClientResend("newdata"));
} }
static void clearQueue() { void clearQueue() {
startService(); startService();
if (NSClientService.handler != null) { if (NSClientService.handler != null) {
NSClientService.handler.post(() -> { NSClientService.handler.post(() -> {
if (L.isEnabled(LTag.NSCLIENT)) aapsLogger.debug(LTag.NSCLIENT, "ClearQueue");
log.debug("ClearQueue"); databaseHelper.deleteAllDbRequests();
MainApp.getDbHelper().deleteAllDbRequests(); aapsLogger.debug(LTag.NSCLIENT, status());
if (L.isEnabled(LTag.NSCLIENT))
log.debug(status());
}); });
} }
} }
public static void removeID(final JSONObject record) { public void removeID(final JSONObject record) {
startService(); startService();
if (NSClientService.handler != null) { if (NSClientService.handler != null) {
NSClientService.handler.post(() -> { NSClientService.handler.post(() -> {
@ -83,26 +98,24 @@ public class UploadQueue implements UploadQueueInterface {
} else { } else {
return; return;
} }
if (MainApp.getDbHelper().deleteDbRequest(id) == 1) { if (databaseHelper.deleteDbRequest(id) == 1) {
if (L.isEnabled(LTag.NSCLIENT)) aapsLogger.debug(LTag.NSCLIENT, "Removed item from UploadQueue. " + status());
log.debug("Removed item from UploadQueue. " + UploadQueue.status());
} }
} catch (JSONException e) { } catch (JSONException e) {
log.error("Unhandled exception", e); aapsLogger.error("Unhandled exception", e);
} }
}); });
} }
} }
public static void removeID(final String action, final String _id) { public void removeID(final String action, final String _id) {
if (_id == null || _id.equals("")) if (_id == null || _id.equals(""))
return; return;
startService(); startService();
if (NSClientService.handler != null) { if (NSClientService.handler != null) {
NSClientService.handler.post(() -> { NSClientService.handler.post(() -> {
MainApp.getDbHelper().deleteDbRequestbyMongoId(action, _id); databaseHelper.deleteDbRequestbyMongoId(action, _id);
if (L.isEnabled(LTag.NSCLIENT)) aapsLogger.debug(LTag.NSCLIENT, "Removing " + _id + " from UploadQueue. " + status());
log.debug("Removing " + _id + " from UploadQueue. " + UploadQueue.status());
}); });
} }
} }
@ -111,7 +124,7 @@ public class UploadQueue implements UploadQueueInterface {
String result = ""; String result = "";
CloseableIterator<DbRequest> iterator; CloseableIterator<DbRequest> iterator;
try { try {
iterator = MainApp.getDbHelper().getDbRequestInterator(); iterator = databaseHelper.getDbRequestInterator();
try { try {
while (iterator.hasNext()) { while (iterator.hasNext()) {
DbRequest dbr = iterator.next(); DbRequest dbr = iterator.next();
@ -124,7 +137,7 @@ public class UploadQueue implements UploadQueueInterface {
iterator.close(); iterator.close();
} }
} catch (SQLException e) { } catch (SQLException e) {
log.error("Unhandled exception", e); aapsLogger.error("Unhandled exception", e);
} }
return result; return result;
} }

View file

@ -31,15 +31,15 @@ import javax.inject.Inject;
import dagger.android.DaggerService; import dagger.android.DaggerService;
import dagger.android.HasAndroidInjector; import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Config; import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.ProfileStore;
import info.nightscout.androidaps.db.DbRequest; import info.nightscout.androidaps.db.DbRequest;
import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventConfigBuilderChange; import info.nightscout.androidaps.events.EventConfigBuilderChange;
import info.nightscout.androidaps.events.EventNsFood; import info.nightscout.androidaps.events.EventNsFood;
import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.interfaces.ProfileStore;
import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.L; import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.logging.LTag;
@ -83,7 +83,7 @@ public class NSClientService extends DaggerService {
@Inject AAPSLogger aapsLogger; @Inject AAPSLogger aapsLogger;
@Inject NSSettingsStatus nsSettingsStatus; @Inject NSSettingsStatus nsSettingsStatus;
@Inject NSDeviceStatus nsDeviceStatus; @Inject NSDeviceStatus nsDeviceStatus;
@Inject MainApp mainApp; @Inject DatabaseHelperInterface databaseHelper;
@Inject RxBusWrapper rxBus; @Inject RxBusWrapper rxBus;
@Inject ResourceHelper resourceHelper; @Inject ResourceHelper resourceHelper;
@Inject SP sp; @Inject SP sp;
@ -91,6 +91,7 @@ public class NSClientService extends DaggerService {
@Inject BuildHelper buildHelper; @Inject BuildHelper buildHelper;
@Inject Config config; @Inject Config config;
@Inject DateUtil dateUtil; @Inject DateUtil dateUtil;
@Inject UploadQueue uploadQueue;
private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.NSCLIENT); private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.NSCLIENT);
private CompositeDisposable disposable = new CompositeDisposable(); private CompositeDisposable disposable = new CompositeDisposable();
@ -124,8 +125,6 @@ public class NSClientService extends DaggerService {
private String nsAPIhashCode = ""; private String nsAPIhashCode = "";
public static UploadQueue uploadQueue = new UploadQueue();
private final ArrayList<Long> reconnections = new ArrayList<>(); private final ArrayList<Long> reconnections = new ArrayList<>();
private int WATCHDOG_INTERVAL_MINUTES = 2; private int WATCHDOG_INTERVAL_MINUTES = 2;
private int WATCHDOG_RECONNECT_IN = 15; private int WATCHDOG_RECONNECT_IN = 15;
@ -143,7 +142,7 @@ public class NSClientService extends DaggerService {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
PowerManager powerManager = (PowerManager) mainApp.getApplicationContext().getSystemService(Context.POWER_SERVICE); PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AndroidAPS:NSClientService"); mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AndroidAPS:NSClientService");
mWakeLock.acquire(); mWakeLock.acquire();
@ -528,7 +527,7 @@ public class NSClientService extends DaggerService {
@Override @Override
public void call(final Object... args) { public void call(final Object... args) {
NSClientService.handler.post(() -> { NSClientService.handler.post(() -> {
PowerManager powerManager = (PowerManager) mainApp.getApplicationContext().getSystemService(Context.POWER_SERVICE); PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"AndroidAPS:NSClientService_onDataUpdate"); "AndroidAPS:NSClientService_onDataUpdate");
wakeLock.acquire(); wakeLock.acquire();
@ -604,7 +603,7 @@ public class NSClientService extends DaggerService {
NSTreatment treatment = new NSTreatment(jsonTreatment); NSTreatment treatment = new NSTreatment(jsonTreatment);
// remove from upload queue if Ack is failing // remove from upload queue if Ack is failing
UploadQueue.removeID(jsonTreatment); uploadQueue.removeID(jsonTreatment);
//Find latest date in treatment //Find latest date in treatment
if (treatment.getMills() != null && treatment.getMills() < System.currentTimeMillis()) if (treatment.getMills() != null && treatment.getMills() < System.currentTimeMillis())
if (treatment.getMills() > latestDateInReceivedData) if (treatment.getMills() > latestDateInReceivedData)
@ -636,7 +635,7 @@ public class NSClientService extends DaggerService {
for (Integer index = 0; index < devicestatuses.length(); index++) { for (Integer index = 0; index < devicestatuses.length(); index++) {
JSONObject jsonStatus = devicestatuses.getJSONObject(index); JSONObject jsonStatus = devicestatuses.getJSONObject(index);
// remove from upload queue if Ack is failing // remove from upload queue if Ack is failing
UploadQueue.removeID(jsonStatus); uploadQueue.removeID(jsonStatus);
} }
nsDeviceStatus.handleNewData(devicestatuses); nsDeviceStatus.handleNewData(devicestatuses);
} }
@ -652,7 +651,7 @@ public class NSClientService extends DaggerService {
JSONObject jsonFood = foods.getJSONObject(index); JSONObject jsonFood = foods.getJSONObject(index);
// remove from upload queue if Ack is failing // remove from upload queue if Ack is failing
UploadQueue.removeID(jsonFood); uploadQueue.removeID(jsonFood);
String action = JsonHelper.safeGetString(jsonFood, "action"); String action = JsonHelper.safeGetString(jsonFood, "action");
@ -684,7 +683,7 @@ public class NSClientService extends DaggerService {
for (Integer index = 0; index < mbgs.length(); index++) { for (Integer index = 0; index < mbgs.length(); index++) {
JSONObject jsonMbg = mbgs.getJSONObject(index); JSONObject jsonMbg = mbgs.getJSONObject(index);
// remove from upload queue if Ack is failing // remove from upload queue if Ack is failing
UploadQueue.removeID(jsonMbg); uploadQueue.removeID(jsonMbg);
} }
handleNewMbg(mbgs, isDelta); handleNewMbg(mbgs, isDelta);
} }
@ -695,7 +694,7 @@ public class NSClientService extends DaggerService {
// Retreive actual calibration // Retreive actual calibration
for (Integer index = 0; index < cals.length(); index++) { for (Integer index = 0; index < cals.length(); index++) {
// remove from upload queue if Ack is failing // remove from upload queue if Ack is failing
UploadQueue.removeID(cals.optJSONObject(index)); uploadQueue.removeID(cals.optJSONObject(index));
} }
handleNewCal(cals, isDelta); handleNewCal(cals, isDelta);
} }
@ -709,7 +708,7 @@ public class NSClientService extends DaggerService {
NSSgv sgv = new NSSgv(jsonSgv); NSSgv sgv = new NSSgv(jsonSgv);
// Handle new sgv here // Handle new sgv here
// remove from upload queue if Ack is failing // remove from upload queue if Ack is failing
UploadQueue.removeID(jsonSgv); uploadQueue.removeID(jsonSgv);
//Find latest date in sgv //Find latest date in sgv
if (sgv.getMills() != null && sgv.getMills() < System.currentTimeMillis()) if (sgv.getMills() != null && sgv.getMills() < System.currentTimeMillis())
if (sgv.getMills() > latestDateInReceivedData) if (sgv.getMills() > latestDateInReceivedData)
@ -795,7 +794,7 @@ public class NSClientService extends DaggerService {
} }
public void resend(final String reason) { public void resend(final String reason) {
if (UploadQueue.size() == 0) if (uploadQueue.size() == 0)
return; return;
if (!isConnected || !hasWriteAuth) return; if (!isConnected || !hasWriteAuth) return;
@ -804,8 +803,7 @@ public class NSClientService extends DaggerService {
if (mSocket == null || !mSocket.connected()) return; if (mSocket == null || !mSocket.connected()) return;
if (lastResendTime > System.currentTimeMillis() - 10 * 1000L) { if (lastResendTime > System.currentTimeMillis() - 10 * 1000L) {
if (L.isEnabled(LTag.NSCLIENT)) aapsLogger.debug(LTag.NSCLIENT, "Skipping resend by lastResendTime: " + ((System.currentTimeMillis() - lastResendTime) / 1000L) + " sec");
log.debug("Skipping resend by lastResendTime: " + ((System.currentTimeMillis() - lastResendTime) / 1000L) + " sec");
return; return;
} }
lastResendTime = System.currentTimeMillis(); lastResendTime = System.currentTimeMillis();
@ -815,7 +813,7 @@ public class NSClientService extends DaggerService {
CloseableIterator<DbRequest> iterator; CloseableIterator<DbRequest> iterator;
int maxcount = 30; int maxcount = 30;
try { try {
iterator = mainApp.getDbHelper().getDbRequestInterator(); iterator = databaseHelper.getDbRequestInterator();
try { try {
while (iterator.hasNext() && maxcount > 0) { while (iterator.hasNext() && maxcount > 0) {
DbRequest dbr = iterator.next(); DbRequest dbr = iterator.next();
@ -852,7 +850,7 @@ public class NSClientService extends DaggerService {
private void handleAnnouncement(JSONObject announcement) { private void handleAnnouncement(JSONObject announcement) {
NSAlarm nsAlarm = new NSAlarm(announcement); NSAlarm nsAlarm = new NSAlarm(announcement);
Notification notification = new NotificationWithAction(mainApp, nsAlarm); Notification notification = new NotificationWithAction(injector, nsAlarm);
rxBus.send(new EventNewNotification(notification)); rxBus.send(new EventNewNotification(notification));
rxBus.send(new EventNSClientNewLog("ANNOUNCEMENT", JsonHelper.safeGetString(announcement, "message", "received"))); rxBus.send(new EventNSClientNewLog("ANNOUNCEMENT", JsonHelper.safeGetString(announcement, "message", "received")));
aapsLogger.debug(LTag.NSCLIENT, announcement.toString()); aapsLogger.debug(LTag.NSCLIENT, announcement.toString());
@ -862,7 +860,7 @@ public class NSClientService extends DaggerService {
long snoozedTo = sp.getLong(R.string.key_snoozedTo, 0L); long snoozedTo = sp.getLong(R.string.key_snoozedTo, 0L);
if (snoozedTo == 0L || System.currentTimeMillis() > snoozedTo) { if (snoozedTo == 0L || System.currentTimeMillis() > snoozedTo) {
NSAlarm nsAlarm = new NSAlarm(alarm); NSAlarm nsAlarm = new NSAlarm(alarm);
Notification notification = new NotificationWithAction(mainApp, nsAlarm); Notification notification = new NotificationWithAction(injector, nsAlarm);
rxBus.send(new EventNewNotification(notification)); rxBus.send(new EventNewNotification(notification));
} }
rxBus.send(new EventNSClientNewLog("ALARM", JsonHelper.safeGetString(alarm, "message", "received"))); rxBus.send(new EventNSClientNewLog("ALARM", JsonHelper.safeGetString(alarm, "message", "received")));
@ -873,7 +871,7 @@ public class NSClientService extends DaggerService {
long snoozedTo = sp.getLong(R.string.key_snoozedTo, 0L); long snoozedTo = sp.getLong(R.string.key_snoozedTo, 0L);
if (snoozedTo == 0L || System.currentTimeMillis() > snoozedTo) { if (snoozedTo == 0L || System.currentTimeMillis() > snoozedTo) {
NSAlarm nsAlarm = new NSAlarm(alarm); NSAlarm nsAlarm = new NSAlarm(alarm);
Notification notification = new NotificationWithAction(mainApp, nsAlarm); Notification notification = new NotificationWithAction(injector, nsAlarm);
rxBus.send(new EventNewNotification(notification)); rxBus.send(new EventNewNotification(notification));
} }
rxBus.send(new EventNSClientNewLog("URGENTALARM", JsonHelper.safeGetString(alarm, "message", "received"))); rxBus.send(new EventNSClientNewLog("URGENTALARM", JsonHelper.safeGetString(alarm, "message", "received")));
@ -887,7 +885,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_NEW_CAL); Intent intent = new Intent(Intents.ACTION_NEW_CAL);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
LocalBroadcastManager.getInstance(mainApp).sendBroadcast(intent); LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
} }
public void handleNewMbg(JSONArray mbgs, boolean isDelta) { public void handleNewMbg(JSONArray mbgs, boolean isDelta) {
@ -897,7 +895,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_NEW_MBG); Intent intent = new Intent(Intents.ACTION_NEW_MBG);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
LocalBroadcastManager.getInstance(mainApp).sendBroadcast(intent); LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
} }
public void handleNewProfile(ProfileStore profile, boolean isDelta) { public void handleNewProfile(ProfileStore profile, boolean isDelta) {
@ -907,7 +905,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_NEW_PROFILE); Intent intent = new Intent(Intents.ACTION_NEW_PROFILE);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
LocalBroadcastManager.getInstance(mainApp).sendBroadcast(intent); LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) { if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) {
bundle = new Bundle(); bundle = new Bundle();
@ -916,7 +914,7 @@ public class NSClientService extends DaggerService {
intent = new Intent(Intents.ACTION_NEW_PROFILE); intent = new Intent(Intents.ACTION_NEW_PROFILE);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
mainApp.sendBroadcast(intent); this.sendBroadcast(intent);
} }
} }
@ -929,7 +927,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_NEW_SGV); Intent intent = new Intent(Intents.ACTION_NEW_SGV);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
LocalBroadcastManager.getInstance(mainApp).sendBroadcast(intent); LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
} }
if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) { if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) {
@ -940,7 +938,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_NEW_SGV); Intent intent = new Intent(Intents.ACTION_NEW_SGV);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
mainApp.sendBroadcast(intent); this.sendBroadcast(intent);
} }
} }
} }
@ -954,7 +952,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_NEW_TREATMENT); Intent intent = new Intent(Intents.ACTION_NEW_TREATMENT);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
LocalBroadcastManager.getInstance(mainApp).sendBroadcast(intent); LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
} }
if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) { if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) {
@ -966,7 +964,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_NEW_TREATMENT); Intent intent = new Intent(Intents.ACTION_NEW_TREATMENT);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
mainApp.getApplicationContext().sendBroadcast(intent); this.getApplicationContext().sendBroadcast(intent);
} }
} }
} }
@ -980,7 +978,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_CHANGED_TREATMENT); Intent intent = new Intent(Intents.ACTION_CHANGED_TREATMENT);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
LocalBroadcastManager.getInstance(mainApp).sendBroadcast(intent); LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
} }
if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) { if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) {
@ -992,7 +990,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_CHANGED_TREATMENT); Intent intent = new Intent(Intents.ACTION_CHANGED_TREATMENT);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
mainApp.getApplicationContext().sendBroadcast(intent); this.getApplicationContext().sendBroadcast(intent);
} }
} }
} }
@ -1004,7 +1002,7 @@ public class NSClientService extends DaggerService {
Intent intent = new Intent(Intents.ACTION_REMOVED_TREATMENT); Intent intent = new Intent(Intents.ACTION_REMOVED_TREATMENT);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
LocalBroadcastManager.getInstance(mainApp).sendBroadcast(intent); LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) { if (sp.getBoolean(R.string.key_nsclient_localbroadcasts, false)) {
@ -1014,7 +1012,7 @@ public class NSClientService extends DaggerService {
intent = new Intent(Intents.ACTION_REMOVED_TREATMENT); intent = new Intent(Intents.ACTION_REMOVED_TREATMENT);
intent.putExtras(bundle); intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
mainApp.getApplicationContext().sendBroadcast(intent); this.getApplicationContext().sendBroadcast(intent);
} }
} }

View file

@ -20,6 +20,7 @@ import android.view.View.OnLongClickListener
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import androidx.core.text.toSpanned
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.jjoe64.graphview.GraphView import com.jjoe64.graphview.GraphView
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
@ -344,8 +345,9 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
if (loopPlugin.isEnabled(PluginType.LOOP)) { if (loopPlugin.isEnabled(PluginType.LOOP)) {
val lastRun = loopPlugin.lastRun val lastRun = loopPlugin.lastRun
loopPlugin.invoke("Accept temp button", false) loopPlugin.invoke("Accept temp button", false)
if (lastRun?.lastAPSRun != null && lastRun.constraintsProcessed.isChangeRequested) { if (lastRun?.lastAPSRun != null && lastRun.constraintsProcessed?.isChangeRequested == true) {
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.pump_tempbasal_label), lastRun.constraintsProcessed.toSpanned(), Runnable { OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.pump_tempbasal_label), lastRun.constraintsProcessed?.toSpanned()
?: "".toSpanned(), Runnable {
aapsLogger.debug("USER ENTRY: ACCEPT TEMP BASAL") aapsLogger.debug("USER ENTRY: ACCEPT TEMP BASAL")
overview_accepttempbutton?.visibility = View.GONE overview_accepttempbutton?.visibility = View.GONE
(context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).cancel(Constants.notificationID) (context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).cancel(Constants.notificationID)
@ -442,7 +444,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
val showAcceptButton = !closedLoopEnabled.value() && // Open mode needed val showAcceptButton = !closedLoopEnabled.value() && // Open mode needed
lastRun != null && lastRun != null &&
(lastRun.lastOpenModeAccept == 0L || lastRun.lastOpenModeAccept < lastRun.lastAPSRun) &&// never accepted or before last result (lastRun.lastOpenModeAccept == 0L || lastRun.lastOpenModeAccept < lastRun.lastAPSRun) &&// never accepted or before last result
lastRun.constraintsProcessed.isChangeRequested // change is requested lastRun.constraintsProcessed?.isChangeRequested == true // change is requested
if (showAcceptButton && pump.isInitialized && !pump.isSuspended && loopPlugin.isEnabled(PluginType.LOOP)) { if (showAcceptButton && pump.isInitialized && !pump.isSuspended && loopPlugin.isEnabled(PluginType.LOOP)) {
overview_accepttempbutton?.visibility = View.VISIBLE overview_accepttempbutton?.visibility = View.VISIBLE

View file

@ -16,10 +16,10 @@ import info.nightscout.androidaps.data.IobTotal
import info.nightscout.androidaps.data.Profile import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.db.BgReading import info.nightscout.androidaps.db.BgReading
import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.LoopInterface
import info.nightscout.androidaps.interfaces.TreatmentsInterface import info.nightscout.androidaps.interfaces.TreatmentsInterface
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin.LastRun
import info.nightscout.androidaps.plugins.aps.openAPSSMB.SMBDefaults import info.nightscout.androidaps.plugins.aps.openAPSSMB.SMBDefaults
import info.nightscout.androidaps.interfaces.ProfileFunction import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.* import info.nightscout.androidaps.plugins.general.overview.graphExtensions.*
@ -197,7 +197,7 @@ class GraphData(injector: HasAndroidInjector, private val graph: GraphView, priv
basalScale.setMultiplier(maxY * scale / maxBasalValueFound) basalScale.setMultiplier(maxY * scale / maxBasalValueFound)
} }
fun addTargetLine(fromTime: Long, toTimeParam: Long, profile: Profile, lastRun: LastRun?) { fun addTargetLine(fromTime: Long, toTimeParam: Long, profile: Profile, lastRun: LoopInterface.LastRun?) {
var toTime = toTimeParam var toTime = toTimeParam
val targetsSeriesArray: MutableList<DataPoint> = ArrayList() val targetsSeriesArray: MutableList<DataPoint> = ArrayList()
var lastTarget = -1.0 var lastTarget = -1.0

View file

@ -104,7 +104,7 @@ class WearPlugin @Inject constructor(
.observeOn(Schedulers.io()) .observeOn(Schedulers.io())
.subscribe({ event: EventDismissBolusProgressIfRunning -> .subscribe({ event: EventDismissBolusProgressIfRunning ->
if (event.result == null) return@subscribe if (event.result == null) return@subscribe
val status: String = if (event.result.success) { val status: String = if (event.result!!.success) {
resourceHelper.gs(R.string.success) resourceHelper.gs(R.string.success)
} else { } else {
resourceHelper.gs(R.string.nosuccess) resourceHelper.gs(R.string.nosuccess)

View file

@ -531,9 +531,9 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
} }
final LoopPlugin.LastRun finalLastRun = loopPlugin.lastRun; final LoopPlugin.LastRun finalLastRun = loopPlugin.getLastRun();
if (sp.getBoolean("wear_predictions", true) && finalLastRun != null && finalLastRun.request.hasPredictions && finalLastRun.constraintsProcessed != null) { if (sp.getBoolean("wear_predictions", true) && finalLastRun != null && finalLastRun.getRequest().hasPredictions && finalLastRun.getConstraintsProcessed() != null) {
List<BgReading> predArray = finalLastRun.constraintsProcessed.getPredictions(); List<BgReading> predArray = finalLastRun.getConstraintsProcessed().getPredictions();
if (!predArray.isEmpty()) { if (!predArray.isEmpty()) {
for (BgReading bg : predArray) { for (BgReading bg : predArray) {
@ -715,7 +715,7 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
//OpenAPS status //OpenAPS status
if (config.getAPS()) { if (config.getAPS()) {
//we are AndroidAPS //we are AndroidAPS
openApsStatus = loopPlugin.lastRun != null && loopPlugin.lastRun.lastTBREnact != 0 ? loopPlugin.lastRun.lastTBREnact : -1; openApsStatus = loopPlugin.getLastRun() != null && loopPlugin.getLastRun().getLastTBREnact() != 0 ? loopPlugin.getLastRun().getLastTBREnact() : -1;
} else { } else {
//NSClient or remote //NSClient or remote
openApsStatus = NSDeviceStatus.getOpenApsTimestamp(); openApsStatus = NSDeviceStatus.getOpenApsTimestamp();

View file

@ -37,7 +37,8 @@ class LocalProfilePlugin @Inject constructor(
private val rxBus: RxBusWrapper, private val rxBus: RxBusWrapper,
resourceHelper: ResourceHelper, resourceHelper: ResourceHelper,
private val sp: SP, private val sp: SP,
private val profileFunction: ProfileFunction private val profileFunction: ProfileFunction,
private val nsUpload: NSUpload
) : PluginBase(PluginDescription() ) : PluginBase(PluginDescription()
.mainType(PluginType.PROFILE) .mainType(PluginType.PROFILE)
.fragmentClass(LocalProfileFragment::class.java.name) .fragmentClass(LocalProfileFragment::class.java.name)
@ -140,7 +141,7 @@ class LocalProfilePlugin @Inject constructor(
if (name.contains(".")) namesOK = false if (name.contains(".")) namesOK = false
} }
if (namesOK) if (namesOK)
rawProfile?.let { NSUpload.uploadProfileStore(it.data) } rawProfile?.let { nsUpload.uploadProfileStore(it.data) }
else else
activity?.let { activity?.let {
OKDialog.show(it, "", resourceHelper.gs(R.string.profilenamecontainsdot)) OKDialog.show(it, "", resourceHelper.gs(R.string.profilenamecontainsdot))

View file

@ -1259,7 +1259,7 @@ public class ComboPlugin extends PumpPluginBase implements PumpInterface, Constr
} }
@NonNull @Override @NonNull @Override
public JSONObject getJSONStatus(Profile profile, String profileName) { public JSONObject getJSONStatus(Profile profile, String profileName, String version) {
if (!pump.initialized) { if (!pump.initialized) {
return null; return null;
} }
@ -1281,7 +1281,7 @@ public class ComboPlugin extends PumpPluginBase implements PumpInterface, Constr
pumpJson.put("status", statusJson); pumpJson.put("status", statusJson);
JSONObject extendedJson = new JSONObject(); JSONObject extendedJson = new JSONObject();
extendedJson.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION); extendedJson.put("Version", version);
extendedJson.put("ActiveProfile", profileFunction.getProfileName()); extendedJson.put("ActiveProfile", profileFunction.getProfileName());
PumpState ps = pump.state; PumpState ps = pump.state;
if (ps.tbrActive) { if (ps.tbrActive) {

View file

@ -324,7 +324,7 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
@NonNull @Override @NonNull @Override
public JSONObject getJSONStatus(Profile profile, String profileName) { public JSONObject getJSONStatus(Profile profile, String profileName, String version) {
if ((getPumpStatusData().lastConnection + 5 * 60 * 1000L) < System.currentTimeMillis()) { if ((getPumpStatusData().lastConnection + 5 * 60 * 1000L) < System.currentTimeMillis()) {
return new JSONObject(); return new JSONObject();
@ -337,7 +337,7 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
try { try {
battery.put("percent", getPumpStatusData().batteryRemaining); battery.put("percent", getPumpStatusData().batteryRemaining);
status.put("status", getPumpStatusData().pumpStatusType != null ? getPumpStatusData().pumpStatusType.getStatus() : "normal"); status.put("status", getPumpStatusData().pumpStatusType != null ? getPumpStatusData().pumpStatusType.getStatus() : "normal");
extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION); extended.put("Version", version);
try { try {
extended.put("ActiveProfile", profileName); extended.put("ActiveProfile", profileName);
} catch (Exception ignored) { } catch (Exception ignored) {

View file

@ -366,7 +366,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
} }
@NonNull @Override @NonNull @Override
public JSONObject getJSONStatus(Profile profile, String profilename) { public JSONObject getJSONStatus(Profile profile, String profilename, String version) {
DanaRPump pump = danaRPump; DanaRPump pump = danaRPump;
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (pump.getLastConnection() + 5 * 60 * 1000L < System.currentTimeMillis()) { if (pump.getLastConnection() + 5 * 60 * 1000L < System.currentTimeMillis()) {
@ -380,7 +380,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
battery.put("percent", pump.getBatteryRemaining()); battery.put("percent", pump.getBatteryRemaining());
status.put("status", pump.getPumpSuspended() ? "suspended" : "normal"); status.put("status", pump.getPumpSuspended() ? "suspended" : "normal");
status.put("timestamp", DateUtil.toISOString(pump.getLastConnection())); status.put("timestamp", DateUtil.toISOString(pump.getLastConnection()));
extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION); extended.put("Version", version);
if (pump.getLastBolusTime() != 0) { if (pump.getLastBolusTime() != 0) {
extended.put("LastBolus", dateUtil.dateAndTimeString(pump.getLastBolusTime())); extended.put("LastBolus", dateUtil.dateAndTimeString(pump.getLastBolusTime()));
extended.put("LastBolusAmount", pump.getLastBolusAmount()); extended.put("LastBolusAmount", pump.getLastBolusAmount());

View file

@ -7,6 +7,7 @@ import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
@ -28,6 +29,7 @@ class MessageHashTableR @Inject constructor(
configBuilderPlugin: ConfigBuilderPlugin, configBuilderPlugin: ConfigBuilderPlugin,
commandQueue: CommandQueueProvider, commandQueue: CommandQueueProvider,
activePlugin: ActivePluginProvider, activePlugin: ActivePluginProvider,
nsUpload: NSUpload,
injector: HasAndroidInjector, injector: HasAndroidInjector,
dateUtil: DateUtil dateUtil: DateUtil
) : MessageHashTableBase { ) : MessageHashTableBase {
@ -54,7 +56,7 @@ class MessageHashTableR @Inject constructor(
put(MsgSetTempBasalStop(aapsLogger)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP put(MsgSetTempBasalStop(aapsLogger)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(MsgSetExtendedBolusStop(aapsLogger)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP put(MsgSetExtendedBolusStop(aapsLogger)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(MsgSetExtendedBolusStart(aapsLogger, constraintChecker, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S put(MsgSetExtendedBolusStart(aapsLogger, constraintChecker, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(MsgError(aapsLogger, rxBus, resourceHelper, danaRPump)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS put(MsgError(aapsLogger, rxBus, resourceHelper, danaRPump, nsUpload)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(MsgPCCommStart(aapsLogger)) // 0x3001 CMD_CONNECT put(MsgPCCommStart(aapsLogger)) // 0x3001 CMD_CONNECT
put(MsgPCCommStop(aapsLogger)) // 0x3002 CMD_DISCONNECT put(MsgPCCommStop(aapsLogger)) // 0x3002 CMD_DISCONNECT
put(MsgHistoryBolus(aapsLogger, rxBus, dateUtil)) // 0x3101 CMD_HISTORY_MEAL_INS put(MsgHistoryBolus(aapsLogger, rxBus, dateUtil)) // 0x3101 CMD_HISTORY_MEAL_INS

View file

@ -13,7 +13,8 @@ class MsgError(
private val aapsLogger: AAPSLogger, private val aapsLogger: AAPSLogger,
private val rxBus: RxBusWrapper, private val rxBus: RxBusWrapper,
private val resourceHelper: ResourceHelper, private val resourceHelper: ResourceHelper,
private val danaRPump: DanaRPump private val danaRPump: DanaRPump,
private val nsUpload: NSUpload
) : MessageBase() { ) : MessageBase() {
init { init {
@ -41,6 +42,6 @@ class MsgError(
failed = false failed = false
} }
aapsLogger.debug(LTag.PUMPCOMM, "Error detected: $errorString") aapsLogger.debug(LTag.PUMPCOMM, "Error detected: $errorString")
NSUpload.uploadError(errorString) nsUpload.uploadError(errorString)
} }
} }

View file

@ -5,7 +5,7 @@ import info.nightscout.androidaps.db.DanaRHistoryRecord
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus import info.nightscout.androidaps.events.EventDanaRSyncStatus
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
open class MsgHistoryAll( open class MsgHistoryAll(

View file

@ -83,6 +83,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
@Inject MessageHashTableR messageHashTableR; @Inject MessageHashTableR messageHashTableR;
@Inject ActivePluginProvider activePlugin; @Inject ActivePluginProvider activePlugin;
@Inject ProfileFunction profileFunction; @Inject ProfileFunction profileFunction;
@Inject NSUpload nsUpload;
@Inject SP sp; @Inject SP sp;
@Inject HasAndroidInjector injector; @Inject HasAndroidInjector injector;
@ -214,7 +215,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) { if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT); Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT);
rxBus.send(new EventNewNotification(reportFail)); rxBus.send(new EventNewNotification(reportFail));
NSUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U"); nsUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U");
lastApproachingDailyLimit = System.currentTimeMillis(); lastApproachingDailyLimit = System.currentTimeMillis();
} }
} }

View file

@ -7,6 +7,7 @@ import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
import info.nightscout.androidaps.plugins.pump.danaR.comm.* import info.nightscout.androidaps.plugins.pump.danaR.comm.*
@ -30,6 +31,7 @@ class MessageHashTableRKorean @Inject constructor(
commandQueue: CommandQueueProvider, commandQueue: CommandQueueProvider,
activePlugin: ActivePluginProvider, activePlugin: ActivePluginProvider,
dateUtil: DateUtil, dateUtil: DateUtil,
nsUpload: NSUpload,
injector: HasAndroidInjector injector: HasAndroidInjector
) : MessageHashTableBase { ) : MessageHashTableBase {
@ -52,7 +54,7 @@ class MessageHashTableRKorean @Inject constructor(
put(MsgSetTempBasalStop(aapsLogger)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP put(MsgSetTempBasalStop(aapsLogger)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(MsgSetExtendedBolusStop(aapsLogger)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP put(MsgSetExtendedBolusStop(aapsLogger)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(MsgSetExtendedBolusStart(aapsLogger, constraintChecker, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S put(MsgSetExtendedBolusStart(aapsLogger, constraintChecker, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(MsgError(aapsLogger, rxBus, resourceHelper, danaRPump)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS put(MsgError(aapsLogger, rxBus, resourceHelper, danaRPump, nsUpload)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(MsgPCCommStart(aapsLogger)) // 0x3001 CMD_CONNECT put(MsgPCCommStart(aapsLogger)) // 0x3001 CMD_CONNECT
put(MsgPCCommStop(aapsLogger)) // 0x3002 CMD_DISCONNECT put(MsgPCCommStop(aapsLogger)) // 0x3002 CMD_DISCONNECT
put(MsgHistoryBolus(aapsLogger, rxBus, dateUtil)) // 0x3101 CMD_HISTORY_MEAL_INS put(MsgHistoryBolus(aapsLogger, rxBus, dateUtil)) // 0x3101 CMD_HISTORY_MEAL_INS

View file

@ -75,6 +75,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
@Inject MessageHashTableRKorean messageHashTableRKorean; @Inject MessageHashTableRKorean messageHashTableRKorean;
@Inject ActivePluginProvider activePlugin; @Inject ActivePluginProvider activePlugin;
@Inject ProfileFunction profileFunction; @Inject ProfileFunction profileFunction;
@Inject NSUpload nsUpload;
@Inject DateUtil dateUtil; @Inject DateUtil dateUtil;
public DanaRKoreanExecutionService() { public DanaRKoreanExecutionService() {
@ -203,7 +204,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) { if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT); Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT);
rxBus.send(new EventNewNotification(reportFail)); rxBus.send(new EventNewNotification(reportFail));
NSUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U"); nsUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U");
lastApproachingDailyLimit = System.currentTimeMillis(); lastApproachingDailyLimit = System.currentTimeMillis();
} }
} }

View file

@ -7,6 +7,7 @@ import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
@ -35,6 +36,7 @@ class MessageHashTableRv2 @Inject constructor(
activePlugin: ActivePluginProvider, activePlugin: ActivePluginProvider,
detailedBolusInfoStorage: DetailedBolusInfoStorage, detailedBolusInfoStorage: DetailedBolusInfoStorage,
treatmentsPlugin: TreatmentsPlugin, treatmentsPlugin: TreatmentsPlugin,
nsUpload: NSUpload,
injector: HasAndroidInjector, injector: HasAndroidInjector,
dateUtil: DateUtil dateUtil: DateUtil
) : MessageHashTableBase { ) : MessageHashTableBase {
@ -60,7 +62,7 @@ class MessageHashTableRv2 @Inject constructor(
put(MsgSetTempBasalStop(aapsLogger)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP put(MsgSetTempBasalStop(aapsLogger)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(MsgSetExtendedBolusStop(aapsLogger)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP put(MsgSetExtendedBolusStop(aapsLogger)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(MsgSetExtendedBolusStart(aapsLogger, constraintChecker, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S put(MsgSetExtendedBolusStart(aapsLogger, constraintChecker, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(MsgError(aapsLogger, rxBus, resourceHelper, danaRPump)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS put(MsgError(aapsLogger, rxBus, resourceHelper, danaRPump, nsUpload)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(MsgPCCommStart(aapsLogger)) // 0x3001 CMD_CONNECT put(MsgPCCommStart(aapsLogger)) // 0x3001 CMD_CONNECT
put(MsgPCCommStop(aapsLogger)) // 0x3002 CMD_DISCONNECT put(MsgPCCommStop(aapsLogger)) // 0x3002 CMD_DISCONNECT
put(MsgHistoryBolus(aapsLogger, rxBus, dateUtil)) // 0x3101 CMD_HISTORY_MEAL_INS put(MsgHistoryBolus(aapsLogger, rxBus, dateUtil)) // 0x3101 CMD_HISTORY_MEAL_INS

View file

@ -99,6 +99,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
@Inject DetailedBolusInfoStorage detailedBolusInfoStorage; @Inject DetailedBolusInfoStorage detailedBolusInfoStorage;
@Inject TreatmentsPlugin treatmentsPlugin; @Inject TreatmentsPlugin treatmentsPlugin;
@Inject ProfileFunction profileFunction; @Inject ProfileFunction profileFunction;
@Inject NSUpload nsUpload;
@Inject SP sp; @Inject SP sp;
@Inject DateUtil dateUtil; @Inject DateUtil dateUtil;
@ -255,7 +256,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) { if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT); Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT);
rxBus.send(new EventNewNotification(reportFail)); rxBus.send(new EventNewNotification(reportFail));
NSUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U"); nsUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U");
lastApproachingDailyLimit = System.currentTimeMillis(); lastApproachingDailyLimit = System.currentTimeMillis();
} }
} }

View file

@ -27,7 +27,6 @@ import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.android.HasAndroidInjector; import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.BuildConfig;
import info.nightscout.androidaps.Config; import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
@ -39,6 +38,7 @@ import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.Source; import info.nightscout.androidaps.db.Source;
import info.nightscout.androidaps.db.TDD; import info.nightscout.androidaps.db.TDD;
import info.nightscout.androidaps.db.TemporaryBasal; import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventInitializationChanged;
import info.nightscout.androidaps.events.EventRefreshOverview; import info.nightscout.androidaps.events.EventRefreshOverview;
import info.nightscout.androidaps.interfaces.CommandQueueProvider; import info.nightscout.androidaps.interfaces.CommandQueueProvider;
@ -46,6 +46,7 @@ import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.interfaces.ConstraintsInterface; import info.nightscout.androidaps.interfaces.ConstraintsInterface;
import info.nightscout.androidaps.interfaces.PluginDescription; import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpDescription;
import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.interfaces.PumpPluginBase; import info.nightscout.androidaps.interfaces.PumpPluginBase;
@ -53,7 +54,6 @@ import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.common.ManufacturerType;
import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction; import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction;
import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload; import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
@ -132,7 +132,6 @@ import info.nightscout.androidaps.plugins.pump.insight.exceptions.app_layer_erro
import info.nightscout.androidaps.plugins.pump.insight.exceptions.app_layer_errors.NoActiveTBRToCanceLException; import info.nightscout.androidaps.plugins.pump.insight.exceptions.app_layer_errors.NoActiveTBRToCanceLException;
import info.nightscout.androidaps.plugins.pump.insight.utils.ExceptionTranslator; import info.nightscout.androidaps.plugins.pump.insight.utils.ExceptionTranslator;
import info.nightscout.androidaps.plugins.pump.insight.utils.ParameterBlockUtil; import info.nightscout.androidaps.plugins.pump.insight.utils.ParameterBlockUtil;
import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.TimeChangeType; import info.nightscout.androidaps.utils.TimeChangeType;
@ -149,7 +148,9 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
private final SP sp; private final SP sp;
private final CommandQueueProvider commandQueue; private final CommandQueueProvider commandQueue;
private final ProfileFunction profileFunction; private final ProfileFunction profileFunction;
private final NSUpload nsUpload;
private final Context context; private final Context context;
private final UploadQueue uploadQueue;
private final DateUtil dateUtil; private final DateUtil dateUtil;
public static final String ALERT_CHANNEL_ID = "AndroidAPS-InsightAlert"; public static final String ALERT_CHANNEL_ID = "AndroidAPS-InsightAlert";
@ -209,7 +210,9 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
SP sp, SP sp,
CommandQueueProvider commandQueue, CommandQueueProvider commandQueue,
ProfileFunction profileFunction, ProfileFunction profileFunction,
NSUpload nsUpload,
Context context, Context context,
UploadQueue uploadQueue,
Config config, Config config,
DateUtil dateUtil DateUtil dateUtil
) { ) {
@ -230,7 +233,9 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
this.sp = sp; this.sp = sp;
this.commandQueue = commandQueue; this.commandQueue = commandQueue;
this.profileFunction = profileFunction; this.profileFunction = profileFunction;
this.nsUpload = nsUpload;
this.context = context; this.context = context;
this.uploadQueue = uploadQueue;
this.dateUtil = dateUtil; this.dateUtil = dateUtil;
pumpDescription = new PumpDescription(); pumpDescription = new PumpDescription();
@ -929,8 +934,8 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
if (extendedBolus.durationInMinutes <= 0) { if (extendedBolus.durationInMinutes <= 0) {
final String _id = extendedBolus._id; final String _id = extendedBolus._id;
if (NSUpload.isIdValid(_id)) if (NSUpload.isIdValid(_id))
NSUpload.removeCareportalEntryFromNS(_id); nsUpload.removeCareportalEntryFromNS(_id);
else UploadQueue.removeID("dbAdd", _id); else uploadQueue.removeID("dbAdd", _id);
MainApp.getDbHelper().delete(extendedBolus); MainApp.getDbHelper().delete(extendedBolus);
} else } else
treatmentsPlugin.addToHistoryExtendedBolus(extendedBolus); treatmentsPlugin.addToHistoryExtendedBolus(extendedBolus);
@ -978,7 +983,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
} }
@NonNull @Override @NonNull @Override
public JSONObject getJSONStatus(Profile profile, String profileName) { public JSONObject getJSONStatus(Profile profile, String profileName, String version) {
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (connectionService == null) return null; if (connectionService == null) return null;
if (System.currentTimeMillis() - connectionService.getLastConnected() > (60 * 60 * 1000)) { if (System.currentTimeMillis() - connectionService.getLastConnected() > (60 * 60 * 1000)) {
@ -991,7 +996,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
final JSONObject extended = new JSONObject(); final JSONObject extended = new JSONObject();
try { try {
status.put("timestamp", DateUtil.toISOString(connectionService.getLastConnected())); status.put("timestamp", DateUtil.toISOString(connectionService.getLastConnected()));
extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION); extended.put("Version", version);
try { try {
extended.put("ActiveProfile", profileFunction.getProfileName()); extended.put("ActiveProfile", profileFunction.getProfileName());
} catch (Exception e) { } catch (Exception e) {
@ -1451,8 +1456,8 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
ExtendedBolus extendedBolus = MainApp.getDbHelper().getExtendedBolusByPumpId(bolusID.id); ExtendedBolus extendedBolus = MainApp.getDbHelper().getExtendedBolusByPumpId(bolusID.id);
if (extendedBolus != null) { if (extendedBolus != null) {
final String _id = extendedBolus._id; final String _id = extendedBolus._id;
if (NSUpload.isIdValid(_id)) NSUpload.removeCareportalEntryFromNS(_id); if (NSUpload.isIdValid(_id)) nsUpload.removeCareportalEntryFromNS(_id);
else UploadQueue.removeID("dbAdd", _id); else uploadQueue.removeID("dbAdd", _id);
MainApp.getDbHelper().delete(extendedBolus); MainApp.getDbHelper().delete(extendedBolus);
} }
} else { } else {
@ -1583,7 +1588,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
careportalEvent.eventType = CareportalEvent.NOTE; careportalEvent.eventType = CareportalEvent.NOTE;
careportalEvent.json = data.toString(); careportalEvent.json = data.toString();
MainApp.getDbHelper().createOrUpdate(careportalEvent); MainApp.getDbHelper().createOrUpdate(careportalEvent);
NSUpload.uploadCareportalEntryToNS(data); nsUpload.uploadCareportalEntryToNS(data);
} catch (JSONException e) { } catch (JSONException e) {
aapsLogger.error("Unhandled exception", e); aapsLogger.error("Unhandled exception", e);
} }
@ -1617,7 +1622,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
careportalEvent.eventType = event; careportalEvent.eventType = event;
careportalEvent.json = data.toString(); careportalEvent.json = data.toString();
MainApp.getDbHelper().createOrUpdate(careportalEvent); MainApp.getDbHelper().createOrUpdate(careportalEvent);
NSUpload.uploadCareportalEntryToNS(data); nsUpload.uploadCareportalEntryToNS(data);
} catch (JSONException e) { } catch (JSONException e) {
aapsLogger.error("Unhandled exception", e); aapsLogger.error("Unhandled exception", e);
} }

View file

@ -227,14 +227,14 @@ public class MDIPlugin extends PumpPluginBase implements PumpInterface {
} }
@NonNull @Override @NonNull @Override
public JSONObject getJSONStatus(Profile profile, String profileName) { public JSONObject getJSONStatus(Profile profile, String profileName, String version) {
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
JSONObject pump = new JSONObject(); JSONObject pump = new JSONObject();
JSONObject status = new JSONObject(); JSONObject status = new JSONObject();
JSONObject extended = new JSONObject(); JSONObject extended = new JSONObject();
try { try {
status.put("status", "normal"); status.put("status", "normal");
extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION); extended.put("Version", version);
try { try {
extended.put("ActiveProfile", profileName); extended.put("ActiveProfile", profileName);
} catch (Exception e) { } catch (Exception e) {

View file

@ -78,6 +78,7 @@ public class MedtronicHistoryData {
private final AAPSLogger aapsLogger; private final AAPSLogger aapsLogger;
private final SP sp; private final SP sp;
private final ActivePluginProvider activePlugin; private final ActivePluginProvider activePlugin;
private final NSUpload nsUpload;
private final MedtronicUtil medtronicUtil; private final MedtronicUtil medtronicUtil;
private final MedtronicPumpHistoryDecoder medtronicPumpHistoryDecoder; private final MedtronicPumpHistoryDecoder medtronicPumpHistoryDecoder;
@ -106,6 +107,7 @@ public class MedtronicHistoryData {
AAPSLogger aapsLogger, AAPSLogger aapsLogger,
SP sp, SP sp,
ActivePluginProvider activePlugin, ActivePluginProvider activePlugin,
NSUpload nsUpload,
MedtronicUtil medtronicUtil, MedtronicUtil medtronicUtil,
MedtronicPumpHistoryDecoder medtronicPumpHistoryDecoder MedtronicPumpHistoryDecoder medtronicPumpHistoryDecoder
) { ) {
@ -115,6 +117,7 @@ public class MedtronicHistoryData {
this.aapsLogger = aapsLogger; this.aapsLogger = aapsLogger;
this.sp = sp; this.sp = sp;
this.activePlugin = activePlugin; this.activePlugin = activePlugin;
this.nsUpload = nsUpload;
this.medtronicUtil = medtronicUtil; this.medtronicUtil = medtronicUtil;
this.medtronicPumpHistoryDecoder = medtronicPumpHistoryDecoder; this.medtronicPumpHistoryDecoder = medtronicPumpHistoryDecoder;
} }
@ -543,7 +546,7 @@ public class MedtronicHistoryData {
careportalEvent.eventType = event; careportalEvent.eventType = event;
careportalEvent.json = data.toString(); careportalEvent.json = data.toString();
MainApp.getDbHelper().createOrUpdate(careportalEvent); MainApp.getDbHelper().createOrUpdate(careportalEvent);
NSUpload.uploadCareportalEntryToNS(data); nsUpload.uploadCareportalEntryToNS(data);
} catch (JSONException e) { } catch (JSONException e) {
aapsLogger.error("Unhandled exception", e); aapsLogger.error("Unhandled exception", e);
} }

View file

@ -35,6 +35,7 @@ public class InitPodRefreshAction extends AbstractCancelAction implements Finish
@Inject OmnipodUtil omnipodUtil; @Inject OmnipodUtil omnipodUtil;
@Inject AAPSLogger aapsLogger; @Inject AAPSLogger aapsLogger;
@Inject SP sp; @Inject SP sp;
@Inject NSUpload nsUpload;
public InitPodRefreshAction(HasAndroidInjector injector, PodManagementActivity podManagementActivity, PodActionType actionType) { public InitPodRefreshAction(HasAndroidInjector injector, PodManagementActivity podManagementActivity, PodActionType actionType) {
injector.androidInjector().inject(this); injector.androidInjector().inject(this);
@ -86,7 +87,7 @@ public class InitPodRefreshAction extends AbstractCancelAction implements Finish
careportalEvent.eventType = event; careportalEvent.eventType = event;
careportalEvent.json = data.toString(); careportalEvent.json = data.toString();
MainApp.getDbHelper().createOrUpdate(careportalEvent); MainApp.getDbHelper().createOrUpdate(careportalEvent);
NSUpload.uploadCareportalEntryToNS(data); nsUpload.uploadCareportalEntryToNS(data);
} catch (JSONException e) { } catch (JSONException e) {
aapsLogger.error(LTag.PUMPCOMM, "Unhandled exception when uploading SiteChange event.", e); aapsLogger.error(LTag.PUMPCOMM, "Unhandled exception when uploading SiteChange event.", e);
} }

View file

@ -337,7 +337,7 @@ class VirtualPumpPlugin @Inject constructor(
return result return result
} }
override fun getJSONStatus(profile: Profile, profileName: String): JSONObject { override fun getJSONStatus(profile: Profile, profileName: String, version: String): JSONObject {
val now = System.currentTimeMillis() val now = System.currentTimeMillis()
if (!sp.getBoolean("virtualpump_uploadstatus", false)) { if (!sp.getBoolean("virtualpump_uploadstatus", false)) {
return JSONObject() return JSONObject()
@ -349,7 +349,7 @@ class VirtualPumpPlugin @Inject constructor(
try { try {
battery.put("percent", batteryPercent) battery.put("percent", batteryPercent)
status.put("status", "normal") status.put("status", "normal")
extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION) extended.put("Version", version)
try { try {
extended.put("ActiveProfile", profileName) extended.put("ActiveProfile", profileName)
} catch (ignored: Exception) { } catch (ignored: Exception) {

View file

@ -31,7 +31,8 @@ class DexcomPlugin @Inject constructor(
private val sp: SP, private val sp: SP,
private val mainApp: MainApp, private val mainApp: MainApp,
resourceHelper: ResourceHelper, resourceHelper: ResourceHelper,
aapsLogger: AAPSLogger aapsLogger: AAPSLogger,
private val nsUpload: NSUpload
) : PluginBase(PluginDescription() ) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE) .mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name) .fragmentClass(BGSourceFragment::class.java.name)
@ -78,10 +79,10 @@ class DexcomPlugin @Inject constructor(
bgReading.raw = 0.0 bgReading.raw = 0.0
if (MainApp.getDbHelper().createIfNotExists(bgReading, "Dexcom$sensorType")) { if (MainApp.getDbHelper().createIfNotExists(bgReading, "Dexcom$sensorType")) {
if (sp.getBoolean(R.string.key_dexcomg5_nsupload, false)) { if (sp.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
NSUpload.uploadBg(bgReading, "AndroidAPS-Dexcom$sensorType") nsUpload.uploadBg(bgReading, "AndroidAPS-Dexcom$sensorType")
} }
if (sp.getBoolean(R.string.key_dexcomg5_xdripupload, false)) { if (sp.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
NSUpload.sendToXdrip(bgReading) nsUpload.sendToXdrip(bgReading)
} }
} }
} }
@ -108,7 +109,7 @@ class DexcomPlugin @Inject constructor(
careportalEvent.eventType = CareportalEvent.BGCHECK careportalEvent.eventType = CareportalEvent.BGCHECK
careportalEvent.json = jsonObject.toString() careportalEvent.json = jsonObject.toString()
MainApp.getDbHelper().createOrUpdate(careportalEvent) MainApp.getDbHelper().createOrUpdate(careportalEvent)
NSUpload.uploadCareportalEntryToNS(jsonObject) nsUpload.uploadCareportalEntryToNS(jsonObject)
} }
} }
} }
@ -128,7 +129,7 @@ class DexcomPlugin @Inject constructor(
careportalEvent.eventType = CareportalEvent.SENSORCHANGE careportalEvent.eventType = CareportalEvent.SENSORCHANGE
careportalEvent.json = jsonObject.toString() careportalEvent.json = jsonObject.toString()
MainApp.getDbHelper().createOrUpdate(careportalEvent) MainApp.getDbHelper().createOrUpdate(careportalEvent)
NSUpload.uploadCareportalEntryToNS(jsonObject) nsUpload.uploadCareportalEntryToNS(jsonObject)
} }
} }
} }

View file

@ -29,7 +29,8 @@ class EversensePlugin @Inject constructor(
private val sp: SP, private val sp: SP,
resourceHelper: ResourceHelper, resourceHelper: ResourceHelper,
aapsLogger: AAPSLogger, aapsLogger: AAPSLogger,
private val dateUtil: DateUtil private val dateUtil: DateUtil,
private val nsUpload: NSUpload
) : PluginBase(PluginDescription() ) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE) .mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name) .fragmentClass(BGSourceFragment::class.java.name)
@ -77,10 +78,10 @@ class EversensePlugin @Inject constructor(
bgReading.raw = 0.0 bgReading.raw = 0.0
val isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Eversense") val isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Eversense")
if (isNew && sp.getBoolean(R.string.key_dexcomg5_nsupload, false)) { if (isNew && sp.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
NSUpload.uploadBg(bgReading, "AndroidAPS-Eversense") nsUpload.uploadBg(bgReading, "AndroidAPS-Eversense")
} }
if (isNew && sp.getBoolean(R.string.key_dexcomg5_xdripupload, false)) { if (isNew && sp.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
NSUpload.sendToXdrip(bgReading) nsUpload.sendToXdrip(bgReading)
} }
} }
} }
@ -103,7 +104,7 @@ class EversensePlugin @Inject constructor(
data.put("glucoseType", "Finger") data.put("glucoseType", "Finger")
data.put("glucose", calibrationGlucoseLevels[i]) data.put("glucose", calibrationGlucoseLevels[i])
data.put("units", Constants.MGDL) data.put("units", Constants.MGDL)
NSUpload.uploadCareportalEntryToNS(data) nsUpload.uploadCareportalEntryToNS(data)
} }
} catch (e: JSONException) { } catch (e: JSONException) {
aapsLogger.error("Unhandled exception", e) aapsLogger.error("Unhandled exception", e)

View file

@ -26,7 +26,8 @@ class PoctechPlugin @Inject constructor(
injector: HasAndroidInjector, injector: HasAndroidInjector,
resourceHelper: ResourceHelper, resourceHelper: ResourceHelper,
aapsLogger: AAPSLogger, aapsLogger: AAPSLogger,
private val sp: SP private val sp: SP,
private val nsUpload: NSUpload
) : PluginBase(PluginDescription() ) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE) .mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name) .fragmentClass(BGSourceFragment::class.java.name)
@ -58,10 +59,10 @@ class PoctechPlugin @Inject constructor(
if (safeGetString(json, "units", Constants.MGDL) == "mmol/L") bgReading.value = bgReading.value * Constants.MMOLL_TO_MGDL if (safeGetString(json, "units", Constants.MGDL) == "mmol/L") bgReading.value = bgReading.value * Constants.MMOLL_TO_MGDL
val isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Poctech") val isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Poctech")
if (isNew && sp.getBoolean(R.string.key_dexcomg5_nsupload, false)) { if (isNew && sp.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
NSUpload.uploadBg(bgReading, "AndroidAPS-Poctech") nsUpload.uploadBg(bgReading, "AndroidAPS-Poctech")
} }
if (isNew && sp.getBoolean(R.string.key_dexcomg5_xdripupload, false)) { if (isNew && sp.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
NSUpload.sendToXdrip(bgReading) nsUpload.sendToXdrip(bgReading)
} }
} }
} catch (e: JSONException) { } catch (e: JSONException) {

View file

@ -22,7 +22,8 @@ class TomatoPlugin @Inject constructor(
injector: HasAndroidInjector, injector: HasAndroidInjector,
resourceHelper: ResourceHelper, resourceHelper: ResourceHelper,
aapsLogger: AAPSLogger, aapsLogger: AAPSLogger,
private val sp: SP private val sp: SP,
private val nsUpload: NSUpload
) : PluginBase(PluginDescription() ) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE) .mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name) .fragmentClass(BGSourceFragment::class.java.name)
@ -46,10 +47,10 @@ class TomatoPlugin @Inject constructor(
bgReading.date = bundle.getLong("com.fanqies.tomatofn.Extras.Time") bgReading.date = bundle.getLong("com.fanqies.tomatofn.Extras.Time")
val isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Tomato") val isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Tomato")
if (isNew && sp.getBoolean(R.string.key_dexcomg5_nsupload, false)) { if (isNew && sp.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
NSUpload.uploadBg(bgReading, "AndroidAPS-Tomato") nsUpload.uploadBg(bgReading, "AndroidAPS-Tomato")
} }
if (isNew && sp.getBoolean(R.string.key_dexcomg5_xdripupload, false)) { if (isNew && sp.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
NSUpload.sendToXdrip(bgReading) nsUpload.sendToXdrip(bgReading)
} }
} }
} }

View file

@ -42,6 +42,8 @@ class TreatmentsBolusFragment : DaggerFragment() {
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin @Inject lateinit var treatmentsPlugin: TreatmentsPlugin
@Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var uploadQueue: UploadQueue
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@ -68,9 +70,9 @@ class TreatmentsBolusFragment : DaggerFragment() {
val futureTreatments = treatmentsPlugin.service.getTreatmentDataFromTime(DateUtil.now() + 1000, true) val futureTreatments = treatmentsPlugin.service.getTreatmentDataFromTime(DateUtil.now() + 1000, true)
for (treatment in futureTreatments) { for (treatment in futureTreatments) {
if (NSUpload.isIdValid(treatment._id)) if (NSUpload.isIdValid(treatment._id))
NSUpload.removeCareportalEntryFromNS(treatment._id) nsUpload.removeCareportalEntryFromNS(treatment._id)
else else
UploadQueue.removeID("dbAdd", treatment._id) uploadQueue.removeID("dbAdd", treatment._id)
treatmentsPlugin.service.delete(treatment) treatmentsPlugin.service.delete(treatment)
} }
updateGui() updateGui()
@ -166,9 +168,9 @@ class TreatmentsBolusFragment : DaggerFragment() {
treatmentsPlugin.service.update(treatment) treatmentsPlugin.service.update(treatment)
} else { } else {
if (NSUpload.isIdValid(treatment._id)) if (NSUpload.isIdValid(treatment._id))
NSUpload.removeCareportalEntryFromNS(treatment._id) nsUpload.removeCareportalEntryFromNS(treatment._id)
else else
UploadQueue.removeID("dbAdd", treatment._id) uploadQueue.removeID("dbAdd", treatment._id)
treatmentsPlugin.service.delete(treatment) treatmentsPlugin.service.delete(treatment)
} }
updateGui() updateGui()

View file

@ -38,6 +38,8 @@ class TreatmentsCareportalFragment : DaggerFragment() {
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var translator: Translator @Inject lateinit var translator: Translator
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var uploadQueue: UploadQueue
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@ -66,9 +68,9 @@ class TreatmentsCareportalFragment : DaggerFragment() {
val careportalEvent = events[i] val careportalEvent = events[i]
if (careportalEvent.json.contains(resourceHelper.gs(R.string.androidaps_start))) { if (careportalEvent.json.contains(resourceHelper.gs(R.string.androidaps_start))) {
if (NSUpload.isIdValid(careportalEvent._id)) if (NSUpload.isIdValid(careportalEvent._id))
NSUpload.removeCareportalEntryFromNS(careportalEvent._id) nsUpload.removeCareportalEntryFromNS(careportalEvent._id)
else else
UploadQueue.removeID("dbAdd", careportalEvent._id) uploadQueue.removeID("dbAdd", careportalEvent._id)
MainApp.getDbHelper().delete(careportalEvent) MainApp.getDbHelper().delete(careportalEvent)
} }
} }
@ -136,9 +138,9 @@ class TreatmentsCareportalFragment : DaggerFragment() {
resourceHelper.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(careportalEvent.date) resourceHelper.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(careportalEvent.date)
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord), text, Runnable { OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.removerecord), text, Runnable {
if (NSUpload.isIdValid(careportalEvent._id)) if (NSUpload.isIdValid(careportalEvent._id))
NSUpload.removeCareportalEntryFromNS(careportalEvent._id) nsUpload.removeCareportalEntryFromNS(careportalEvent._id)
else else
UploadQueue.removeID("dbAdd", careportalEvent._id) uploadQueue.removeID("dbAdd", careportalEvent._id)
MainApp.getDbHelper().delete(careportalEvent) MainApp.getDbHelper().delete(careportalEvent)
}, null) }, null)
} }

View file

@ -40,6 +40,8 @@ class TreatmentsExtendedBolusesFragment : DaggerFragment() {
@Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var uploadQueue: UploadQueue
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@ -116,8 +118,8 @@ class TreatmentsExtendedBolusesFragment : DaggerFragment() {
${resourceHelper.gs(R.string.date)}: ${dateUtil.dateAndTimeString(extendedBolus.date)} ${resourceHelper.gs(R.string.date)}: ${dateUtil.dateAndTimeString(extendedBolus.date)}
""".trimIndent(), DialogInterface.OnClickListener { _: DialogInterface, _: Int -> """.trimIndent(), DialogInterface.OnClickListener { _: DialogInterface, _: Int ->
val id = extendedBolus._id val id = extendedBolus._id
if (NSUpload.isIdValid(id)) NSUpload.removeCareportalEntryFromNS(id) if (NSUpload.isIdValid(id)) nsUpload.removeCareportalEntryFromNS(id)
else UploadQueue.removeID("dbAdd", id) else uploadQueue.removeID("dbAdd", id)
MainApp.getDbHelper().delete(extendedBolus) MainApp.getDbHelper().delete(extendedBolus)
}, null) }, null)
} }

View file

@ -43,6 +43,8 @@ class TreatmentsProfileSwitchFragment : DaggerFragment() {
@Inject lateinit var localProfilePlugin: LocalProfilePlugin @Inject lateinit var localProfilePlugin: LocalProfilePlugin
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var uploadQueue: UploadQueue
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@ -135,8 +137,8 @@ class TreatmentsProfileSwitchFragment : DaggerFragment() {
resourceHelper.gs(R.string.careportal_profileswitch) + ": " + profileSwitch.profileName + resourceHelper.gs(R.string.careportal_profileswitch) + ": " + profileSwitch.profileName +
"\n" + resourceHelper.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(profileSwitch.date), Runnable { "\n" + resourceHelper.gs(R.string.date) + ": " + dateUtil.dateAndTimeString(profileSwitch.date), Runnable {
val id = profileSwitch._id val id = profileSwitch._id
if (NSUpload.isIdValid(id)) NSUpload.removeCareportalEntryFromNS(id) if (NSUpload.isIdValid(id)) nsUpload.removeCareportalEntryFromNS(id)
else UploadQueue.removeID("dbAdd", id) else uploadQueue.removeID("dbAdd", id)
MainApp.getDbHelper().delete(profileSwitch) MainApp.getDbHelper().delete(profileSwitch)
}) })
} }

View file

@ -47,6 +47,8 @@ public class TreatmentsTempTargetFragment extends DaggerFragment {
@Inject RxBusWrapper rxBus; @Inject RxBusWrapper rxBus;
@Inject ProfileFunction profileFunction; @Inject ProfileFunction profileFunction;
@Inject ResourceHelper resourceHelper; @Inject ResourceHelper resourceHelper;
@Inject NSUpload nsUpload;
@Inject UploadQueue uploadQueue;
@Inject FabricPrivacy fabricPrivacy; @Inject FabricPrivacy fabricPrivacy;
@Inject DateUtil dateUtil; @Inject DateUtil dateUtil;
@ -146,9 +148,9 @@ public class TreatmentsTempTargetFragment extends DaggerFragment {
(dialog, id) -> { (dialog, id) -> {
final String _id = tempTarget._id; final String _id = tempTarget._id;
if (NSUpload.isIdValid(_id)) { if (NSUpload.isIdValid(_id)) {
NSUpload.removeCareportalEntryFromNS(_id); nsUpload.removeCareportalEntryFromNS(_id);
} else { } else {
UploadQueue.removeID("dbAdd", _id); uploadQueue.removeID("dbAdd", _id);
} }
MainApp.getDbHelper().delete(tempTarget); MainApp.getDbHelper().delete(tempTarget);
}, null); }, null);

View file

@ -44,6 +44,8 @@ class TreatmentsTemporaryBasalsFragment : DaggerFragment() {
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var activePlugin: ActivePluginProvider @Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var uploadQueue: UploadQueue
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@ -165,8 +167,8 @@ class TreatmentsTemporaryBasalsFragment : DaggerFragment() {
""".trimIndent(), """.trimIndent(),
DialogInterface.OnClickListener { _: DialogInterface?, _: Int -> DialogInterface.OnClickListener { _: DialogInterface?, _: Int ->
val id = tempBasal._id val id = tempBasal._id
if (NSUpload.isIdValid(id)) NSUpload.removeCareportalEntryFromNS(id) if (NSUpload.isIdValid(id)) nsUpload.removeCareportalEntryFromNS(id)
else UploadQueue.removeID("dbAdd", id) else uploadQueue.removeID("dbAdd", id)
MainApp.getDbHelper().delete(tempBasal) MainApp.getDbHelper().delete(tempBasal)
}, null) }, null)
} }

View file

@ -8,15 +8,16 @@ import android.content.Intent
import android.os.PowerManager import android.os.PowerManager
import android.os.SystemClock import android.os.SystemClock
import dagger.android.DaggerBroadcastReceiver import dagger.android.DaggerBroadcastReceiver
import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.Config import info.nightscout.androidaps.Config
import info.nightscout.androidaps.events.EventProfileNeedsUpdate import info.nightscout.androidaps.events.EventProfileNeedsUpdate
import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.queue.commands.Command import info.nightscout.androidaps.queue.commands.Command
@ -39,6 +40,7 @@ class KeepAliveReceiver : DaggerBroadcastReceiver() {
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var receiverStatusStore: ReceiverStatusStore @Inject lateinit var receiverStatusStore: ReceiverStatusStore
@Inject lateinit var config: Config @Inject lateinit var config: Config
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
companion object { companion object {
@ -108,7 +110,7 @@ class KeepAliveReceiver : DaggerBroadcastReceiver() {
else if (DateUtil.isOlderThan(activePlugin.activeAPS.lastAPSRun, 5)) shouldUploadStatus = true else if (DateUtil.isOlderThan(activePlugin.activeAPS.lastAPSRun, 5)) shouldUploadStatus = true
if (DateUtil.isOlderThan(lastIobUpload, IOB_UPDATE_FREQUENCY) && shouldUploadStatus) { if (DateUtil.isOlderThan(lastIobUpload, IOB_UPDATE_FREQUENCY) && shouldUploadStatus) {
lastIobUpload = DateUtil.now() lastIobUpload = DateUtil.now()
NSUpload.uploadDeviceStatus(loopPlugin, iobCobCalculatorPlugin, profileFunction, activePlugin.activePump, receiverStatusStore) nsUpload.uploadDeviceStatus(loopPlugin, iobCobCalculatorPlugin, profileFunction, activePlugin.activePump, receiverStatusStore, BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION)
} }
} }

View file

@ -20,6 +20,7 @@ import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.BundleLogger; import info.nightscout.androidaps.logging.BundleLogger;
import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSMbg; import info.nightscout.androidaps.plugins.general.nsclient.data.NSMbg;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification; import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification; import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
@ -42,6 +43,7 @@ public class DataService extends DaggerIntentService {
@Inject AAPSLogger aapsLogger; @Inject AAPSLogger aapsLogger;
@Inject SP sp; @Inject SP sp;
@Inject RxBusWrapper rxBus; @Inject RxBusWrapper rxBus;
@Inject NSUpload nsUpload;
@Inject SmsCommunicatorPlugin smsCommunicatorPlugin; @Inject SmsCommunicatorPlugin smsCommunicatorPlugin;
@Inject DexcomPlugin dexcomPlugin; @Inject DexcomPlugin dexcomPlugin;
@Inject EversensePlugin eversensePlugin; @Inject EversensePlugin eversensePlugin;
@ -210,7 +212,7 @@ public class DataService extends DaggerIntentService {
} else if (eventType.equals(CareportalEvent.COMBOBOLUS)) { } else if (eventType.equals(CareportalEvent.COMBOBOLUS)) {
MainApp.getDbHelper().createExtendedBolusFromJsonIfNotExists(json); MainApp.getDbHelper().createExtendedBolusFromJsonIfNotExists(json);
} else if (eventType.equals(CareportalEvent.PROFILESWITCH)) { } else if (eventType.equals(CareportalEvent.PROFILESWITCH)) {
MainApp.getDbHelper().createProfileSwitchFromJsonIfNotExists(activePlugin, json); MainApp.getDbHelper().createProfileSwitchFromJsonIfNotExists(activePlugin, nsUpload, json);
} else if (eventType.equals(CareportalEvent.SITECHANGE) || } else if (eventType.equals(CareportalEvent.SITECHANGE) ||
eventType.equals(CareportalEvent.INSULINCHANGE) || eventType.equals(CareportalEvent.INSULINCHANGE) ||
eventType.equals(CareportalEvent.SENSORCHANGE) || eventType.equals(CareportalEvent.SENSORCHANGE) ||

View file

@ -12,11 +12,12 @@ import javax.inject.Singleton
@Singleton @Singleton
class HardLimits @Inject constructor( class HardLimits @Inject constructor(
val aapsLogger: AAPSLogger, private val aapsLogger: AAPSLogger,
val rxBus: RxBusWrapper, private val rxBus: RxBusWrapper,
val sp: SP, private val sp: SP,
val resourceHelper: ResourceHelper, private val resourceHelper: ResourceHelper,
val context: Context private val context: Context,
private val nsUpload: NSUpload
) { ) {
val CHILD = 0 val CHILD = 0
@ -90,7 +91,7 @@ class HardLimits @Inject constructor(
msg += ".\n" msg += ".\n"
msg += String.format(resourceHelper.gs(R.string.valuelimitedto), value, newvalue) msg += String.format(resourceHelper.gs(R.string.valuelimitedto), value, newvalue)
aapsLogger.error(msg) aapsLogger.error(msg)
NSUpload.uploadError(msg) nsUpload.uploadError(msg)
ToastUtils.showToastInUiThread(context, rxBus, msg, R.raw.error) ToastUtils.showToastInUiThread(context, rxBus, msg, R.raw.error)
} }
return newvalue return newvalue

View file

@ -31,6 +31,7 @@ class LocalAlertUtils @Inject constructor(
private val profileFunction: ProfileFunction, private val profileFunction: ProfileFunction,
private val iobCobCalculatorPlugin: IobCobCalculatorPlugin, private val iobCobCalculatorPlugin: IobCobCalculatorPlugin,
private val config: Config, private val config: Config,
private val nsUpload: NSUpload,
private val dateUtil: DateUtil private val dateUtil: DateUtil
) { ) {
@ -53,7 +54,7 @@ class LocalAlertUtils @Inject constructor(
sp.putLong("nextPumpDisconnectedAlarm", System.currentTimeMillis() + pumpUnreachableThreshold()) sp.putLong("nextPumpDisconnectedAlarm", System.currentTimeMillis() + pumpUnreachableThreshold())
rxBus.send(EventNewNotification(n)) rxBus.send(EventNewNotification(n))
if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) { if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) {
NSUpload.uploadError(n.text) nsUpload.uploadError(n.text)
} }
} }
if (!isStatusOutdated && !alarmTimeoutExpired) rxBus.send(EventDismissNotification(Notification.PUMP_UNREACHABLE)) if (!isStatusOutdated && !alarmTimeoutExpired) rxBus.send(EventDismissNotification(Notification.PUMP_UNREACHABLE))
@ -101,7 +102,7 @@ class LocalAlertUtils @Inject constructor(
sp.putLong("nextMissedReadingsAlarm", System.currentTimeMillis() + missedReadingsThreshold()) sp.putLong("nextMissedReadingsAlarm", System.currentTimeMillis() + missedReadingsThreshold())
rxBus.send(EventNewNotification(n)) rxBus.send(EventNewNotification(n))
if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) { if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) {
NSUpload.uploadError(n.text) nsUpload.uploadError(n.text)
} }
} }
} }

View file

@ -11,6 +11,7 @@ import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.interfaces.ProfileFunction import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.treatments.TreatmentService import info.nightscout.androidaps.plugins.treatments.TreatmentService
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
@ -32,8 +33,9 @@ class TddCalculator @Inject constructor(
val activePlugin: ActivePluginProvider, val activePlugin: ActivePluginProvider,
val profileFunction: ProfileFunction, val profileFunction: ProfileFunction,
fabricPrivacy: FabricPrivacy, fabricPrivacy: FabricPrivacy,
nsUpload: NSUpload,
private val dateUtil: DateUtil private val dateUtil: DateUtil
) : TreatmentsPlugin(injector, aapsLogger, rxBus, resourceHelper, mainApp, sp, profileFunction, activePlugin, fabricPrivacy, dateUtil) { ) : TreatmentsPlugin(injector, aapsLogger, rxBus, resourceHelper, mainApp, sp, profileFunction, activePlugin, nsUpload, fabricPrivacy, dateUtil) {
init { init {
service = TreatmentService(injector) // plugin is not started service = TreatmentService(injector) // plugin is not started

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/done_background"
android:layout_width="match_parent"
android:layout_height="56dp"
android:orientation="horizontal"
android:background="@android:color/transparent"
android:gravity="end|right"
android:layout_gravity="center_vertical"
android:paddingBottom="8dp">
<Button
android:id="@+id/cancel"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginRight="8dp"
android:layout_marginEnd="8dp"
style="@style/mdtp_ActionButton.Text"
android:text="@string/mdtp_cancel" />
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
style="@style/mdtp_ActionButton.Text"
android:text="@string/mdtp_ok" />
</LinearLayout>
<!-- From: file:/Users/wdullaer/Documents/Programming%20Projects/MaterialDateTimePicker/library/src/main/res/layout/mdtp_done_button.xml -->

View file

@ -9,7 +9,6 @@
<color name="devslopepos">#FFFFFF00</color> <color name="devslopepos">#FFFFFF00</color>
<color name="devslopeneg">#FFFF00FF</color> <color name="devslopeneg">#FFFF00FF</color>
<color name="actionsConfirm">#FFFF00</color> <color name="actionsConfirm">#FFFF00</color>
<color name="listdelimiter">#505050</color>
<color name="tabBgColorSelected">#FF33B5E5</color> <color name="tabBgColorSelected">#FF33B5E5</color>
<color name="deviations">#FF0000</color> <color name="deviations">#FF0000</color>
<color name="cobAlert">#7484E2</color> <color name="cobAlert">#7484E2</color>
@ -30,7 +29,6 @@
<color name="mdtp_accent_color">#40bbaa</color> <color name="mdtp_accent_color">#40bbaa</color>
<color name="colorInitializingBorder">#00695c</color>
<color name="cardColorBackground">#121212</color> <color name="cardColorBackground">#121212</color>
<color name="cardObjectiveText">#779ECB</color> <color name="cardObjectiveText">#779ECB</color>

View file

@ -124,7 +124,6 @@
<string name="sms_delta">Delta:</string> <string name="sms_delta">Delta:</string>
<string name="configbuilder">Config Builder</string> <string name="configbuilder">Config Builder</string>
<string name="objectives">Objectives</string>
<string name="overview">Overview</string> <string name="overview">Overview</string>
<string name="nsprofile">NS Profile</string> <string name="nsprofile">NS Profile</string>
<string name="simpleprofile">Simple profile</string> <string name="simpleprofile">Simple profile</string>
@ -288,7 +287,6 @@
<string name="save">Save</string> <string name="save">Save</string>
<string name="nobtadapter">No bluetooth adapter found</string> <string name="nobtadapter">No bluetooth adapter found</string>
<string name="devicenotfound">Selected device not found</string> <string name="devicenotfound">Selected device not found</string>
<string name="connectionerror">Pump connection error</string>
<string name="danar_iob_label">Pump IOB</string> <string name="danar_iob_label">Pump IOB</string>
<string name="danar_dailyunits">Daily units</string> <string name="danar_dailyunits">Daily units</string>
<string name="pump_lastbolus_label">Last bolus</string> <string name="pump_lastbolus_label">Last bolus</string>
@ -316,7 +314,6 @@
<string name="smscommunicator_mealbolusdelivered_tt">Target %1$s for %2$d minutes</string> <string name="smscommunicator_mealbolusdelivered_tt">Target %1$s for %2$d minutes</string>
<string name="smscommunicator_tt_set">Target %1$s for %2$d minutes set successfully</string> <string name="smscommunicator_tt_set">Target %1$s for %2$d minutes set successfully</string>
<string name="smscommunicator_tt_canceled">Temp Target canceled successfully</string> <string name="smscommunicator_tt_canceled">Temp Target canceled successfully</string>
<string name="bolusdelivering">Delivering %1$.2fU</string>
<string name="smscommunicator_remotecommandsallowed">Allow remote commands via SMS</string> <string name="smscommunicator_remotecommandsallowed">Allow remote commands via SMS</string>
<string name="danarprofile">DanaR profile settings</string> <string name="danarprofile">DanaR profile settings</string>
<string name="danarprofile_dia">DIA [h]</string> <string name="danarprofile_dia">DIA [h]</string>
@ -334,27 +331,12 @@
<string name="danar_alarm">alarm</string> <string name="danar_alarm">alarm</string>
<string name="danar_totaluploaded">Total %1$d records uploaded</string> <string name="danar_totaluploaded">Total %1$d records uploaded</string>
<string name="danar_sbolus">S bolus</string> <string name="danar_sbolus">S bolus</string>
<string name="danar_history_alarm">Alarms</string>
<string name="danar_history_basalhours">Basal Hours</string>
<string name="danar_history_bolus">Boluses</string>
<string name="danar_history_carbohydrates">Carbohydrates</string>
<string name="danar_history_dailyinsulin">Daily insulin</string>
<string name="danar_history_errors">Errors</string>
<string name="danar_history_glucose">Glucose</string>
<string name="danar_history_refill">Refill</string>
<string name="danar_history_syspend">Suspend</string>
<string name="danars_password_title">Pump password (v1 only)</string> <string name="danars_password_title">Pump password (v1 only)</string>
<string name="danar_password_title">Pump password</string> <string name="danar_password_title">Pump password</string>
<string name="wrongpumppassword">Wrong pump password!</string>
<string name="pumpbusy">Pump is busy</string>
<string name="overview_bolusprogress_delivered">Delivered</string>
<string name="overview_bolusprogress_stoped">Stopped</string>
<string name="bolusstopped">Bolus stopped</string> <string name="bolusstopped">Bolus stopped</string>
<string name="bolusstopping">Stopping bolus</string> <string name="bolusstopping">Stopping bolus</string>
<string name="occlusion">Occlusion</string>
<string name="overview_bolusprogress_stop">Stop</string> <string name="overview_bolusprogress_stop">Stop</string>
<string name="overview_bolusprogress_stoppressed">STOP PRESSED</string> <string name="overview_bolusprogress_stoppressed">STOP PRESSED</string>
<string name="youareonallowedlimit">You reached allowed limit</string>
<string name="smscommunicator_loophasbeendisabled">Loop has been disabled</string> <string name="smscommunicator_loophasbeendisabled">Loop has been disabled</string>
<string name="smscommunicator_loophasbeenenabled">Loop has been enabled</string> <string name="smscommunicator_loophasbeenenabled">Loop has been enabled</string>
<string name="smscommunicator_loopisdisabled">Loop is disabled</string> <string name="smscommunicator_loopisdisabled">Loop is disabled</string>
@ -418,16 +400,10 @@
<string name="wear">Wear</string> <string name="wear">Wear</string>
<string name="resend_all_data">Resend All Data</string> <string name="resend_all_data">Resend All Data</string>
<string name="open_settings_on_wear">Open Settings on Wear</string> <string name="open_settings_on_wear">Open Settings on Wear</string>
<string name="pumperror">Pump Error</string>
<string name="lowbattery">Low Battery</string>
<string name="basalcompare">Delivering less than preset basal rate</string>
<string name="pumpshutdown">Pump Shutdown</string>
<string name="batterydischarged">Pump Battery Discharged</string>
<string name="danarkoreanpump">DanaR Korean</string> <string name="danarkoreanpump">DanaR Korean</string>
<string name="basal_rate">Basal rate:</string> <string name="basal_rate">Basal rate:</string>
<string name="profile_set_failed">Setting of basal profile failed</string> <string name="profile_set_failed">Setting of basal profile failed</string>
<string name="danar_disableeasymode">Disable EasyUI mode in pump</string> <string name="danar_disableeasymode">Disable EasyUI mode in pump</string>
<string name="danar_enableextendedbolus">Enable extended boluses on pump</string>
<string name="danar_switchtouhmode">Change mode from U/d to U/h on pump</string> <string name="danar_switchtouhmode">Change mode from U/d to U/h on pump</string>
<string name="basalvaluebelowminimum">Basal value below minimum. Profile not set!</string> <string name="basalvaluebelowminimum">Basal value below minimum. Profile not set!</string>
<string name="sms_actualbg">BG:</string> <string name="sms_actualbg">BG:</string>
@ -451,20 +427,6 @@
<string name="hypo">Hypo</string> <string name="hypo">Hypo</string>
<string name="activity">Activity</string> <string name="activity">Activity</string>
<string name="removerecord">Remove record</string> <string name="removerecord">Remove record</string>
<string name="danar_stats">DanaR Stats</string>
<string name="danar_stats_cumulative_tdd">Cumulative TDD</string>
<string name="danar_stats_expweight">Exponentially Weighted TDD</string>
<string name="danar_stats_basalrate">Basal</string>
<string name="danar_stats_bolus">Bolus</string>
<string name="danar_stats_tdd">TDD</string>
<string name="danar_stats_date">Date</string>
<string name="danar_stats_ratio">Ratio</string>
<string name="danar_stats_amount_days"># Days</string>
<string name="danar_stats_weight">Weight</string>
<string name="danar_stats_warning_Message">Possibly inaccurate if using boluses for priming/filling!</string>
<string name="danar_stats_olddata_Message">Old Data Please Press "RELOAD"</string>
<string name="danar_stats_tbb">Total Base Basal</string>
<string name="danar_stats_tbb2">TBB * 2</string>
<string name="initializing">Initializing ...</string> <string name="initializing">Initializing ...</string>
<string name="actions_shortname">ACT</string> <string name="actions_shortname">ACT</string>
<string name="configbuilder_shortname">CONF</string> <string name="configbuilder_shortname">CONF</string>
@ -486,7 +448,6 @@
<string name="always_use_shortavg_summary">Useful when data from unfiltered sources like xDrip gets noisy.</string> <string name="always_use_shortavg_summary">Useful when data from unfiltered sources like xDrip gets noisy.</string>
<string name="advancedsettings_title">Advanced Settings</string> <string name="advancedsettings_title">Advanced Settings</string>
<string name="key_advancedsettings" translatable="false">key_advancedsettings</string> <string name="key_advancedsettings" translatable="false">key_advancedsettings</string>
<string name="dana_model">%1$s\nModel: %2$02X\nProtocol: %3$02X\nCode: %4$02X</string>
<string name="profile">Profile</string> <string name="profile">Profile</string>
<string name="openapsama_max_daily_safety_multiplier_summary">Default value: 3 This is a key OpenAPS safety cap. What this does is limit your basals to be 3x (in this people) your biggest basal rate. You likely will not need to change this, but you should be aware thats what is discussed about “3x max daily; 4x current” for safety caps.</string> <string name="openapsama_max_daily_safety_multiplier_summary">Default value: 3 This is a key OpenAPS safety cap. What this does is limit your basals to be 3x (in this people) your biggest basal rate. You likely will not need to change this, but you should be aware thats what is discussed about “3x max daily; 4x current” for safety caps.</string>
<string name="openapsama_current_basal_safety_multiplier_summary">Default value: 4 This is the other half of the key OpenAPS safety caps, and the other half of “3x max daily; 4x current” of the safety caps. This means your basal, regardless of max basal set on your pump, cannot be any higher than this number times the current level of your basal. This is to prevent people from getting into dangerous territory by setting excessively high max basals before understanding how the algorithm works. Again, the default is 4x; most people will never need to adjust this and are instead more likely to need to adjust other settings if they feel like they are “running into” this safety cap.</string> <string name="openapsama_current_basal_safety_multiplier_summary">Default value: 4 This is the other half of the key OpenAPS safety caps, and the other half of “3x max daily; 4x current” of the safety caps. This means your basal, regardless of max basal set on your pump, cannot be any higher than this number times the current level of your basal. This is to prevent people from getting into dangerous territory by setting excessively high max basals before understanding how the algorithm works. Again, the default is 4x; most people will never need to adjust this and are instead more likely to need to adjust other settings if they feel like they are “running into” this safety cap.</string>
@ -511,17 +472,9 @@
<string name="smscommunicator_calibrationsent">Calibration sent. Receiving must be enabled in xDrip.</string> <string name="smscommunicator_calibrationsent">Calibration sent. Receiving must be enabled in xDrip.</string>
<string name="smscommunicator_calibrationfailed">xDrip is not receiving calibrations</string> <string name="smscommunicator_calibrationfailed">xDrip is not receiving calibrations</string>
<string name="pumpsuspended">Pump suspended</string> <string name="pumpsuspended">Pump suspended</string>
<string name="gettingpumpstatus">Getting pump status</string>
<string name="settingtempbasal">Setting temp basal</string>
<string name="stoppingtempbasal">Stopping temp basal</string>
<string name="settingextendedbolus">Setting extended bolus</string>
<string name="stoppingextendedbolus">Stopping extended bolus</string>
<string name="updatingbasalrates">Updating basal rates</string>
<string name="executing">Executing</string> <string name="executing">Executing</string>
<string name="virtualpump_settings">Virtual pump settings</string> <string name="virtualpump_settings">Virtual pump settings</string>
<string name="virtualpump_uploadstatus_title">Upload status to NS</string> <string name="virtualpump_uploadstatus_title">Upload status to NS</string>
<string name="wrongpassword">Wrong password</string>
<string name="approachingdailylimit">Approaching insulin daily limit</string>
<string name="nsclientinternal">NSClient</string> <string name="nsclientinternal">NSClient</string>
<string name="nsclientinternal_shortname">NSCI</string> <string name="nsclientinternal_shortname">NSCI</string>
<string name="nsclientinternal_url">URL:</string> <string name="nsclientinternal_url">URL:</string>
@ -735,10 +688,6 @@
<string name="date">Date</string> <string name="date">Date</string>
<string name="invalid">INVALID</string> <string name="invalid">INVALID</string>
<string name="pairing">Pairing</string> <string name="pairing">Pairing</string>
<string name="emptyreservoir">Empty reservoir</string>
<string name="bloodsugarmeasurementalert">Blood sugar measurement alert</string>
<string name="remaininsulinalert">Remaining insulin level</string>
<string name="missedbolus">Missed bolus</string>
<string name="selectedpump">Selected pump</string> <string name="selectedpump">Selected pump</string>
<string name="bolusspeed">Bolus speed</string> <string name="bolusspeed">Bolus speed</string>
<string name="serialnumber">Serial number</string> <string name="serialnumber">Serial number</string>
@ -753,12 +702,6 @@
<string name="activity_target">activity target</string> <string name="activity_target">activity target</string>
<string name="hypo_duration">hypo duration</string> <string name="hypo_duration">hypo duration</string>
<string name="hypo_target">hypo target</string> <string name="hypo_target">hypo target</string>
<string name="danar_history_prime">Prime</string>
<string name="gettingextendedbolusstatus">Getting extended bolus status</string>
<string name="gettingbolusstatus">Getting bolus status</string>
<string name="gettingtempbasalstatus">Getting temporary basal status</string>
<string name="gettingpumpsettings">Getting pump settings</string>
<string name="gettingpumptime">Getting pump time</string>
<string name="reuse">reuse</string> <string name="reuse">reuse</string>
<string name="wearcontrol_title">Controls from Watch</string> <string name="wearcontrol_title">Controls from Watch</string>
<string name="wearcontrol_summary">Set Temp-Targets and enter Treatments from the watch.</string> <string name="wearcontrol_summary">Set Temp-Targets and enter Treatments from the watch.</string>
@ -770,9 +713,6 @@
<string name="shortprotein">Pr</string> <string name="shortprotein">Pr</string>
<string name="shortfat">Fat</string> <string name="shortfat">Fat</string>
<string name="active"><![CDATA[<Active>]]></string> <string name="active"><![CDATA[<Active>]]></string>
<string name="waitingforestimatedbolusend">Waiting for bolus end. Remaining %1$d sec.</string>
<string name="processinghistory">Processing event</string>
<string name="startingbolus">Starting bolus delivery</string>
<string name="executingrightnow">Command is executed right now</string> <string name="executingrightnow">Command is executed right now</string>
<string name="pumpdrivercorrected">Pump driver corrected</string> <string name="pumpdrivercorrected">Pump driver corrected</string>
<string name="pump_unreachable">Pump unreachable</string> <string name="pump_unreachable">Pump unreachable</string>
@ -809,7 +749,6 @@
<string name="key_carbsReqThreshold" translatable="false">carbsReqThreshold</string> <string name="key_carbsReqThreshold" translatable="false">carbsReqThreshold</string>
<string name="carbsReqThreshold">Carb suggestion threshold</string> <string name="carbsReqThreshold">Carb suggestion threshold</string>
<string name="carbsReqThreshold_summary">When Carbs are suggested, how many carbs will prompt a notification</string> <string name="carbsReqThreshold_summary">When Carbs are suggested, how many carbs will prompt a notification</string>
<string name="unsupportedfirmware">Unsupported pump firmware</string>
<string name="dexcomg5_xdripupload_title">Send BG data to xDrip+</string> <string name="dexcomg5_xdripupload_title">Send BG data to xDrip+</string>
<string name="key_dexcomg5_xdripupload" translatable="false">dexcomg5_xdripupload</string> <string name="key_dexcomg5_xdripupload" translatable="false">dexcomg5_xdripupload</string>
<string name="dexcomg5_xdripupload_summary">In xDrip+ select 640g/Eversense data source</string> <string name="dexcomg5_xdripupload_summary">In xDrip+ select 640g/Eversense data source</string>
@ -871,10 +810,7 @@
<string name="extendedbolusdeliveryerror">Extended bolus delivery error</string> <string name="extendedbolusdeliveryerror">Extended bolus delivery error</string>
<string name="insightpump_shortname">Sight</string> <string name="insightpump_shortname">Sight</string>
<string name="ago">ago</string> <string name="ago">ago</string>
<string name="format_hours">%1$.2f h</string> <string name="key_enableSMB_always" translatable="false">enableSMB_always</string>
<string name="format_mins">%1$d mins</string>
<string name="format_mins_short">%1$dm</string>
<string name="key_enableSMB_always" translatable="false">enableSMB_always</string>
<string name="key_enableSMB_with_COB" translatable="false">enableSMB_with_COB</string> <string name="key_enableSMB_with_COB" translatable="false">enableSMB_with_COB</string>
<string name="key_enableSMB_with_temptarget" translatable="false">enableSMB_with_temptarget</string> <string name="key_enableSMB_with_temptarget" translatable="false">enableSMB_with_temptarget</string>
<string name="key_enableSMB_after_carbs" translatable="false">enableSMB_after_carbs</string> <string name="key_enableSMB_after_carbs" translatable="false">enableSMB_after_carbs</string>
@ -946,7 +882,6 @@
<string name="key_fromNSAreCommingFakedExtendedBoluses" translatable="false">fromNSAreCommingFakedExtendedBoluses</string> <string name="key_fromNSAreCommingFakedExtendedBoluses" translatable="false">fromNSAreCommingFakedExtendedBoluses</string>
<string name="engineering_mode_enabled">Engineering mode enabled</string> <string name="engineering_mode_enabled">Engineering mode enabled</string>
<string name="not_eng_mode_or_release">Engineering mode not enabled and not on release branch</string> <string name="not_eng_mode_or_release">Engineering mode not enabled and not on release branch</string>
<string name="pump_basebasalrate">%1$.2fU/h</string>
<string name="combo_actvity_reading_basal_profile">Reading basal profile</string> <string name="combo_actvity_reading_basal_profile">Reading basal profile</string>
<string name="combo_bolus_rejected_due_to_pump_history_change">The pump history has changed after the bolus calculation was performed. The bolus was not delivered. Please recalculate if a bolus is still needed.</string> <string name="combo_bolus_rejected_due_to_pump_history_change">The pump history has changed after the bolus calculation was performed. The bolus was not delivered. Please recalculate if a bolus is still needed.</string>
<string name="combo_error_updating_treatment_record">Bolus successfully delivered, but adding the treatment entry failed. This can happen if two small boluses of the same size are administered within the last two minutes. Please check the pump history and treatment entries and use the Careportal to add missing entries. Make sure not to add any entries for the exact same minute and same amount.</string> <string name="combo_error_updating_treatment_record">Bolus successfully delivered, but adding the treatment entry failed. This can happen if two small boluses of the same size are administered within the last two minutes. Please check the pump history and treatment entries and use the Careportal to add missing entries. Make sure not to add any entries for the exact same minute and same amount.</string>
@ -995,7 +930,6 @@
<string name="food_short">Food</string> <string name="food_short">Food</string>
<string name="iobcobcalculator" translatable="false">IobCobCalculator</string> <string name="iobcobcalculator" translatable="false">IobCobCalculator</string>
<string name="reset">reset</string> <string name="reset">reset</string>
<string name="waitingfortimesynchronization">Waiting for time synchronization (%1$d sec)</string>
<string name="loopdisconnectedfor">Disconnected (%1$d m)</string> <string name="loopdisconnectedfor">Disconnected (%1$d m)</string>
<string name="key_openapssmb_max_iob" translatable="false">openapsmb_max_iob</string> <string name="key_openapssmb_max_iob" translatable="false">openapsmb_max_iob</string>
<string name="openapssmb_maxiob_title">Maximum total IOB OpenAPS can\'t go over [U]</string> <string name="openapssmb_maxiob_title">Maximum total IOB OpenAPS can\'t go over [U]</string>
@ -1079,20 +1013,6 @@
<string name="request">Request</string> <string name="request">Request</string>
<string name="insulinsourcesetup">Configure Insulin plugin</string> <string name="insulinsourcesetup">Configure Insulin plugin</string>
<string name="exit">Exit</string> <string name="exit">Exit</string>
<string name="danar_useroptions">User options</string>
<string name="danar_timedisplay">Display time format</string>
<string name="danar_buttonscroll">Button scroll</string>
<string name="danar_beep">Beep on button press</string>
<string name="danar_pumpalarm">Alarm</string>
<string name="danar_pumpalarm_sound">Sound</string>
<string name="danar_pumpalarm_vibrate">Vibrate</string>
<string name="danar_pumpalarm_both">Both</string>
<string name="danar_screentimeout">LCD on time [seconds]</string>
<string name="danar_backlight">Backlight on time [seconds]</string>
<string name="danar_glucoseunits">Glucose units</string>
<string name="danar_shutdown">Shutdown [hours]</string>
<string name="danar_lowreservoir">Low reservoir [Units]</string>
<string name="danar_saveuseroptions">Save options to pump</string>
<string name="option_on">On</string> <string name="option_on">On</string>
<string name="option_off">Off</string> <string name="option_off">Off</string>
<string name="open_navigation">Open navigation</string> <string name="open_navigation">Open navigation</string>
@ -1118,8 +1038,6 @@
<string name="sensitivity_raises_target_summary">When sensitivity is detected, raise the target glucose</string> <string name="sensitivity_raises_target_summary">When sensitivity is detected, raise the target glucose</string>
<string name="combo_invalid_setup">Invalid pump setup, check the docs and verify that the Quick Info menu is named QUICK INFO using the 360 configuration software.</string> <string name="combo_invalid_setup">Invalid pump setup, check the docs and verify that the Quick Info menu is named QUICK INFO using the 360 configuration software.</string>
<string name="custom">Custom</string> <string name="custom">Custom</string>
<string name="largetimedifftitle">Large Time Difference</string>
<string name="largetimediff">Large time difference:\nTime in pump is off by more than 1.5 hours.\nPlease adjust the time manually on the pump and make sure that reading the history from the pump does not cause unexpected behaviour.\nIf possible, remove the history from the pump before changing the time or disable the closed loop for one DIA after the last wrong history entry but minimum one DIA from now.</string>
<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="careportal_removestartedevents">Clean AndroidAPS started</string> <string name="careportal_removestartedevents">Clean AndroidAPS started</string>
<string name="storedsettingsfound">Stored settings found</string> <string name="storedsettingsfound">Stored settings found</string>
@ -1156,9 +1074,7 @@
<string name="loop_openmode_min_change">Minimal request change [%]</string> <string name="loop_openmode_min_change">Minimal request change [%]</string>
<string name="loop_openmode_min_change_summary" formatted="false">Open Loop will popup new change request only if change is bigger than this value in %. Default value is 20%</string> <string name="loop_openmode_min_change_summary" formatted="false">Open Loop will popup new change request only if change is bigger than this value in %. Default value is 20%</string>
<string name="key_short_tabtitles" translatable="false">short_tabtitles</string> <string name="key_short_tabtitles" translatable="false">short_tabtitles</string>
<string name="pairfirst">Please pair your pump with your phone!</string>
<string name="searching_for_devices">Searching for devices…</string> <string name="searching_for_devices">Searching for devices…</string>
<string name="please_wait">Please wait…</string>
<string name="pairing_completed">Pairing completed</string> <string name="pairing_completed">Pairing completed</string>
<string name="code_compare">Do the codes displayed on this device and on your pump match?</string> <string name="code_compare">Do the codes displayed on this device and on your pump match?</string>
<string name="insight_pairing">Insight pairing</string> <string name="insight_pairing">Insight pairing</string>
@ -1334,7 +1250,6 @@
<string name="very_old_version">very old version</string> <string name="very_old_version">very old version</string>
<string name="new_version_warning">New version for at least %1$d days available! Fallback to LGS after %2$d days, loop will be disabled after %3$d days</string> <string name="new_version_warning">New version for at least %1$d days available! Fallback to LGS after %2$d days, loop will be disabled after %3$d days</string>
<string name="twohours">2h</string> <string name="twohours">2h</string>
<string name="formatinsulinunits">%1$.2fU</string>
<string name="dexcom_app_patched">Dexcom App (patched)</string> <string name="dexcom_app_patched">Dexcom App (patched)</string>
<string name="dexcom_short">DXCM</string> <string name="dexcom_short">DXCM</string>
@ -1565,7 +1480,6 @@
<string name="insulinFromCob"><![CDATA[COB vs IOB: <font color=\'%1$s\'>%2$+.2fU</font>]]></string> <string name="insulinFromCob"><![CDATA[COB vs IOB: <font color=\'%1$s\'>%2$+.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus constraint applied: %2$.2fU to %3$.2fU</font>]]></string> <string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus constraint applied: %2$.2fU to %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Slow carbs absorption detected: %2$d%% of time. Double check your calculation. COB can be overestimated thus more insulin could be given !!!!!</font>]]></string> <string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Slow carbs absorption detected: %2$d%% of time. Double check your calculation. COB can be overestimated thus more insulin could be given !!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="key_boluswizard_percentage" translatable="false">boluswizard_percentage</string> <string name="key_boluswizard_percentage" translatable="false">boluswizard_percentage</string>
<string name="partialboluswizard">Deliver this part of bolus wizard result [%]</string> <string name="partialboluswizard">Deliver this part of bolus wizard result [%]</string>
<string name="deliverpartofboluswizard">Bolus wizard performs calculation but only this part of calculated insulin is delivered. Useful with SMB algorithm.</string> <string name="deliverpartofboluswizard">Bolus wizard performs calculation but only this part of calculated insulin is delivered. Useful with SMB algorithm.</string>
@ -1575,7 +1489,6 @@
<string name="timerange_value">Time is between %1$s and %2$s</string> <string name="timerange_value">Time is between %1$s and %2$s</string>
<string name="between">Between </string> <string name="between">Between </string>
<string name="close">Close</string>
<string name="increasingmaxbasal">Increasing max basal value because setting is lower than your max basal in profile</string> <string name="increasingmaxbasal">Increasing max basal value because setting is lower than your max basal in profile</string>
<string name="smscommunicator_messagebody">Invalid message body</string> <string name="smscommunicator_messagebody">Invalid message body</string>
<string name="format_bg_isf">%1$s ISF: %2$.1f</string> <string name="format_bg_isf">%1$s ISF: %2$.1f</string>
@ -1594,7 +1507,6 @@
<string name="common_off">Off</string> <string name="common_off">Off</string>
<string name="objectives_button_unfinish">Clear finished</string> <string name="objectives_button_unfinish">Clear finished</string>
<string name="objectives_button_unstart">Clear started</string> <string name="objectives_button_unstart">Clear started</string>
<string name="timedetection">Time detection</string>
<string name="doyouwantresetstart">Do you want reset objective start? You may lose your progress.</string> <string name="doyouwantresetstart">Do you want reset objective start? You may lose your progress.</string>
<string name="time_or_timezone_change">Time and/or Timezone change on pump</string> <string name="time_or_timezone_change">Time and/or Timezone change on pump</string>
<string name="nopumpselected">No pump selected</string> <string name="nopumpselected">No pump selected</string>
@ -1695,8 +1607,6 @@
<string name="press_ok_on_the_pump">Press OK on the pump\nand enter 2 displayed numbers\nKeep display on pump ON by pressing minus button until you finish entering code.</string> <string name="press_ok_on_the_pump">Press OK on the pump\nand enter 2 displayed numbers\nKeep display on pump ON by pressing minus button until you finish entering code.</string>
<string name="num1pin">1: (12 digits)</string> <string name="num1pin">1: (12 digits)</string>
<string name="num2pin">2: (8 digits)</string> <string name="num2pin">2: (8 digits)</string>
<string name="resetpairing">Reset pairing information?</string>
<string name="invalidpairing">Invalid pairing information. Requesting new pairing</string>
<string name="onconnect">On connect</string> <string name="onconnect">On connect</string>
<string name="ondisconnect">On disconnect</string> <string name="ondisconnect">On disconnect</string>
<string name="overview_show_predictions">Predictions</string> <string name="overview_show_predictions">Predictions</string>

View file

@ -29,23 +29,18 @@ import java.util.Locale;
import javax.inject.Inject; import javax.inject.Inject;
import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.db.TDD; import info.nightscout.androidaps.db.TDD;
import info.nightscout.androidaps.events.EventDanaRSyncStatus;
import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.events.EventPumpStatusChanged;
import info.nightscout.androidaps.interfaces.ActivePluginProvider; import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.CommandQueueProvider; import info.nightscout.androidaps.interfaces.CommandQueueProvider;
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin;
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus;
import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin;
import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin;
import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin;
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin;
import info.nightscout.androidaps.queue.Callback; import info.nightscout.androidaps.queue.Callback;
import info.nightscout.androidaps.utils.FabricPrivacy; import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.SafeParse; import info.nightscout.androidaps.utils.SafeParse;
@ -61,13 +56,8 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
@Inject SP sp; @Inject SP sp;
@Inject ProfileFunction profileFunction; @Inject ProfileFunction profileFunction;
@Inject ActivePluginProvider activePlugin; @Inject ActivePluginProvider activePlugin;
@Inject DanaRSPlugin danaRSPlugin;
@Inject DanaRPlugin danaRPlugin;
@Inject DanaRv2Plugin danaRv2Plugin;
@Inject DanaRKoreanPlugin danaRKoreanPlugin;
@Inject LocalInsightPlugin localInsightPlugin;
@Inject ConfigBuilderPlugin configBuilderPlugin;
@Inject CommandQueueProvider commandQueue; @Inject CommandQueueProvider commandQueue;
@Inject DatabaseHelperInterface databaseHelper;
@Inject FabricPrivacy fabricPrivacy; @Inject FabricPrivacy fabricPrivacy;
private CompositeDisposable disposable = new CompositeDisposable(); private CompositeDisposable disposable = new CompositeDisposable();
@ -300,7 +290,7 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
} }
private void loadDataFromDB() { private void loadDataFromDB() {
historyList = MainApp.getDbHelper().getTDDs(); historyList = databaseHelper.getTDDs();
//only use newest 10 //only use newest 10
historyList = historyList.subList(0, Math.min(10, historyList.size())); historyList = historyList.subList(0, Math.min(10, historyList.size()));
@ -527,7 +517,8 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
public boolean isOldData(List<TDD> historyList) { public boolean isOldData(List<TDD> historyList) {
boolean startsYesterday = danaRPlugin.isEnabled() || danaRSPlugin.isEnabled() || danaRv2Plugin.isEnabled() || danaRKoreanPlugin.isEnabled() || localInsightPlugin.isEnabled(); PumpType type = activePlugin.getActivePump().getPumpDescription().pumpType;
boolean startsYesterday = type == PumpType.DanaR || type == PumpType.DanaRS || type == PumpType.DanaRv2 || type == PumpType.DanaRKorean || type == PumpType.AccuChekInsight;
DateFormat df = new SimpleDateFormat("dd.MM.", Locale.getDefault()); DateFormat df = new SimpleDateFormat("dd.MM.", Locale.getDefault());
return (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).date)).equals(df.format(new Date(System.currentTimeMillis() - (startsYesterday ? 1000 * 60 * 60 * 24 : 0)))))); return (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).date)).equals(df.format(new Date(System.currentTimeMillis() - (startsYesterday ? 1000 * 60 * 60 * 24 : 0))))));

View file

@ -1,4 +1,4 @@
package info.nightscout.androidaps.plugins.constraints.objectives.dialogs package info.nightscout.androidaps.dialogs
import android.os.Bundle import android.os.Bundle
import android.os.SystemClock import android.os.SystemClock
@ -6,11 +6,11 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import dagger.android.support.DaggerDialogFragment import dagger.android.support.DaggerDialogFragment
import info.nightscout.androidaps.R import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.events.EventNtpStatus
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventNtpStatus
import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.extensions.plusAssign
import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.resources.ResourceHelper

View file

@ -9,9 +9,9 @@ import android.view.WindowManager
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import dagger.android.support.DaggerDialogFragment import dagger.android.support.DaggerDialogFragment
import info.nightscout.androidaps.Constants import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.data.Profile import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.resources.ResourceHelper
import kotlinx.android.synthetic.main.close.* import kotlinx.android.synthetic.main.close.*
@ -22,7 +22,7 @@ import javax.inject.Inject
class ProfileViewerDialog : DaggerDialogFragment() { class ProfileViewerDialog : DaggerDialogFragment() {
@Inject lateinit var injector: HasAndroidInjector @Inject lateinit var injector: HasAndroidInjector
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin @Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
private var time: Long = 0 private var time: Long = 0
@ -66,9 +66,9 @@ class ProfileViewerDialog : DaggerDialogFragment() {
val date: String? val date: String?
when (mode) { when (mode) {
Mode.RUNNING_PROFILE -> { Mode.RUNNING_PROFILE -> {
profile = treatmentsPlugin.getProfileSwitchFromHistory(time)?.profileObject profile = activePlugin.activeTreatments.getProfileSwitchFromHistory(time)?.profileObject
profileName = treatmentsPlugin.getProfileSwitchFromHistory(time)?.customizedName profileName = activePlugin.activeTreatments.getProfileSwitchFromHistory(time)?.customizedName
date = dateUtil.dateAndTimeString(treatmentsPlugin.getProfileSwitchFromHistory(time)?.date date = dateUtil.dateAndTimeString(activePlugin.activeTreatments.getProfileSwitchFromHistory(time)?.date
?: 0) ?: 0)
profileview_datelayout.visibility = View.VISIBLE profileview_datelayout.visibility = View.VISIBLE
} }

View file

@ -1,4 +1,4 @@
package info.nightscout.androidaps.plugins.pump.danaR.events package info.nightscout.androidaps.events
import info.nightscout.androidaps.events.Event import info.nightscout.androidaps.events.Event

View file

@ -1,4 +1,4 @@
package info.nightscout.androidaps.plugins.constraints.objectives.events package info.nightscout.androidaps.events
import info.nightscout.androidaps.events.Event import info.nightscout.androidaps.events.Event

View file

@ -1,8 +1,24 @@
package info.nightscout.androidaps.interfaces package info.nightscout.androidaps.interfaces
import com.j256.ormlite.dao.CloseableIterator
import info.nightscout.androidaps.db.BgReading import info.nightscout.androidaps.db.BgReading
import info.nightscout.androidaps.db.CareportalEvent
import info.nightscout.androidaps.db.DanaRHistoryRecord
import info.nightscout.androidaps.db.DbRequest
import info.nightscout.androidaps.db.TDD
@Deprecated("Remove with new DB") @Deprecated("Remove with new DB")
interface DatabaseHelperInterface { interface DatabaseHelperInterface {
fun getAllBgreadingsDataFromTime(mills : Long, ascending: Boolean): List<BgReading>
fun getAllBgreadingsDataFromTime(mills: Long, ascending: Boolean): List<BgReading>
fun createOrUpdate(careportalEvent: CareportalEvent)
fun createOrUpdate(record: DanaRHistoryRecord)
fun create(record: DbRequest)
fun getDanaRHistoryRecordsByType(type: Byte): List<DanaRHistoryRecord>
fun getTDDs(): List<TDD>
fun size(table: String) : Long
fun deleteAllDbRequests()
fun deleteDbRequest(id: String) : Int
fun deleteDbRequestbyMongoId(action: String, _id: String)
fun getDbRequestInterator() : CloseableIterator<DbRequest>
} }

View file

@ -79,7 +79,7 @@ public interface PumpInterface {
// Status to be passed to NS // Status to be passed to NS
@NotNull @NotNull
JSONObject getJSONStatus(Profile profile, String profileName); JSONObject getJSONStatus(Profile profile, String profileName, String version);
@NotNull @NotNull
ManufacturerType manufacturer(); ManufacturerType manufacturer();

View file

@ -18,8 +18,10 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.core.R; import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.DetailedBolusInfo; import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.IobTotal;
@ -29,8 +31,10 @@ import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.db.DbRequest; import info.nightscout.androidaps.db.DbRequest;
import info.nightscout.androidaps.db.ExtendedBolus; import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.ProfileSwitch; import info.nightscout.androidaps.db.ProfileSwitch;
import info.nightscout.androidaps.db.Source;
import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal; import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
import info.nightscout.androidaps.interfaces.IobCobCalculatorInterface; import info.nightscout.androidaps.interfaces.IobCobCalculatorInterface;
import info.nightscout.androidaps.interfaces.LoopInterface; import info.nightscout.androidaps.interfaces.LoopInterface;
import info.nightscout.androidaps.interfaces.ProfileFunction; import info.nightscout.androidaps.interfaces.ProfileFunction;
@ -54,24 +58,31 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP;
@Singleton @Singleton
public class NSUpload { public class NSUpload {
private final HasAndroidInjector injector;
private final AAPSLogger aapsLogger; private final AAPSLogger aapsLogger;
private final ResourceHelper resourceHelper; private final ResourceHelper resourceHelper;
private final SP sp; private final SP sp;
private final Context context; private final Context context;
private final UploadQueueInterface uploadQueue; private final UploadQueueInterface uploadQueue;
private final DatabaseHelperInterface databaseHelper;
@Inject
public NSUpload( public NSUpload(
HasAndroidInjector injector,
AAPSLogger aapsLogger, AAPSLogger aapsLogger,
ResourceHelper resourceHelper, ResourceHelper resourceHelper,
SP sp, SP sp,
Context context, Context context,
UploadQueueInterface uploadQueue UploadQueueInterface uploadQueue,
DatabaseHelperInterface databaseHelper
) { ) {
this.injector = injector;
this.aapsLogger = aapsLogger; this.aapsLogger = aapsLogger;
this.resourceHelper = resourceHelper; this.resourceHelper = resourceHelper;
this.sp = sp; this.sp = sp;
this.context = context; this.context = context;
this.uploadQueue = uploadQueue; this.uploadQueue = uploadQueue;
this.databaseHelper = databaseHelper;
} }
public void uploadTempBasalStartAbsolute(TemporaryBasal temporaryBasal, Double originalExtendedAmount) { public void uploadTempBasalStartAbsolute(TemporaryBasal temporaryBasal, Double originalExtendedAmount) {
@ -179,7 +190,7 @@ public class NSUpload {
} }
} }
public void uploadDeviceStatus(LoopInterface loopPlugin, IobCobCalculatorInterface iobCobCalculatorPlugin, ProfileFunction profileFunction, PumpInterface pumpInterface, ReceiverStatusStore receiverStatusStore) { public void uploadDeviceStatus(LoopInterface loopPlugin, IobCobCalculatorInterface iobCobCalculatorPlugin, ProfileFunction profileFunction, PumpInterface pumpInterface, ReceiverStatusStore receiverStatusStore, String version) {
Profile profile = profileFunction.getProfile(); Profile profile = profileFunction.getProfile();
String profileName = profileFunction.getProfileName(); String profileName = profileFunction.getProfileName();
@ -230,7 +241,7 @@ public class NSUpload {
} }
} }
deviceStatus.device = "openaps://" + Build.MANUFACTURER + " " + Build.MODEL; deviceStatus.device = "openaps://" + Build.MANUFACTURER + " " + Build.MODEL;
JSONObject pumpstatus = pumpInterface.getJSONStatus(profile, profileName); JSONObject pumpstatus = pumpInterface.getJSONStatus(profile, profileName, version);
if (pumpstatus != null) { if (pumpstatus != null) {
deviceStatus.pump = pumpstatus; deviceStatus.pump = pumpstatus;
} }
@ -508,4 +519,28 @@ public class NSUpload {
return true; return true;
return false; return false;
} }
public void generateCareportalEvent(String eventType, long time, String notes) {
CareportalEvent careportalEvent = new CareportalEvent(injector);
careportalEvent.source = Source.USER;
careportalEvent.date = time;
careportalEvent.json = generateJson(eventType, time, notes).toString();
careportalEvent.eventType = eventType;
databaseHelper.createOrUpdate(careportalEvent);
uploadEvent(eventType, time, notes);
}
private JSONObject generateJson(String careportalEvent, long time, String notes) {
JSONObject data = new JSONObject();
try {
data.put("eventType", careportalEvent);
data.put("created_at", DateUtil.toISOString(time));
data.put("mills", time);
data.put("enteredBy", sp.getString("careportal_enteredby", "AndroidAPS"));
if (!notes.isEmpty()) data.put("notes", notes);
} catch (JSONException ignored) {
}
return data;
}
} }

View file

@ -19,7 +19,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.core.R;
/** /**
* Created by mike on 28.06.2016. * Created by mike on 28.06.2016.

View file

@ -2,7 +2,7 @@ package info.nightscout.androidaps.utils
import android.graphics.Color import android.graphics.Color
import android.widget.TextView import android.widget.TextView
import info.nightscout.androidaps.R import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.db.CareportalEvent import info.nightscout.androidaps.db.CareportalEvent
import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.resources.ResourceHelper
import javax.inject.Inject import javax.inject.Inject

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/done_background"
android:layout_width="match_parent"
android:layout_height="56dp"
android:orientation="horizontal"
android:background="@android:color/transparent"
android:gravity="end"
android:layout_gravity="center_vertical"
android:paddingBottom="8dp">
<Button
android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
style="@style/mdtp_ActionButton.Text"
android:text="@string/close" />
</LinearLayout>

View file

@ -4,6 +4,9 @@
<color name="colorPrimaryDark">#000000</color> <color name="colorPrimaryDark">#000000</color>
<color name="colorAccent">#40bbaa</color> <color name="colorAccent">#40bbaa</color>
<!-- Fragments-->
<color name="colorInitializingBorder">#00695c</color>
<!-- Dialogs--> <!-- Dialogs-->
<color name="dialog_title_background">#303030</color> <color name="dialog_title_background">#303030</color>
<color name="activity_title_background">#121212</color> <color name="activity_title_background">#121212</color>
@ -16,6 +19,7 @@
<!-- Treatment--> <!-- Treatment-->
<color name="tempbasal">#C803A9F4</color> <color name="tempbasal">#C803A9F4</color>
<color name="listdelimiter">#505050</color>
<!-- BgReading--> <!-- BgReading-->
<color name="inrange">#00FF00</color> <color name="inrange">#00FF00</color>

View file

@ -31,12 +31,25 @@
<string name="goingtodeliver">Going to deliver %1$.2fU</string> <string name="goingtodeliver">Going to deliver %1$.2fU</string>
<string name="waitingforpump">Waiting for pump</string> <string name="waitingforpump">Waiting for pump</string>
<string name="connectingfor">Connecting for %1$d s</string> <string name="connectingfor">Connecting for %1$d s</string>
<string name="bolusdelivering">Delivering %1$.2fU</string>
<string name="handshaking">Handshaking</string> <string name="handshaking">Handshaking</string>
<string name="connecting">Connecting</string> <string name="connecting">Connecting</string>
<string name="connected">Connected</string> <string name="connected">Connected</string>
<string name="disconnected">Disconnected</string> <string name="disconnected">Disconnected</string>
<string name="disconnecting">Disconnecting</string> <string name="disconnecting">Disconnecting</string>
<string name="androidaps_start">AndroidAPS started</string> <string name="androidaps_start">AndroidAPS started</string>
<string name="formatinsulinunits">%1$.2fU</string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="pump_basebasalrate">%1$.2fU/h</string>
<string name="format_hours">%1$.2f h</string>
<string name="format_mins">%1$d mins</string>
<string name="format_mins_short">%1$dm</string>
<string name="pumpbusy">Pump is busy</string>
<string name="connectionerror">Pump connection error</string>
<string name="youareonallowedlimit">You reached allowed limit</string>
<string name="objectives">Objectives</string>
<string name="close">Close</string>
<string name="please_wait">Please wait…</string>
<!-- Constraints--> <!-- Constraints-->
<string name="limitingbasalratio">Limiting max basal rate to %1$.2f U/h because of %2$s</string> <string name="limitingbasalratio">Limiting max basal rate to %1$.2f U/h because of %2$s</string>
@ -150,4 +163,23 @@
<string name="waitingforpumpresult">Waiting for result</string> <string name="waitingforpumpresult">Waiting for result</string>
<string name="smb_shortname">SMB</string> <string name="smb_shortname">SMB</string>
<!-- TDDStatsActivity-->
<string name="danar_stats">DanaR Stats</string>
<string name="danar_stats_cumulative_tdd">Cumulative TDD</string>
<string name="danar_stats_expweight">Exponentially Weighted TDD</string>
<string name="danar_stats_basalrate">Basal</string>
<string name="danar_stats_bolus">Bolus</string>
<string name="danar_stats_tdd">TDD</string>
<string name="danar_stats_date">Date</string>
<string name="danar_stats_ratio">Ratio</string>
<string name="danar_stats_amount_days"># Days</string>
<string name="danar_stats_weight">Weight</string>
<string name="danar_stats_warning_Message">Possibly inaccurate if using boluses for priming/filling!</string>
<string name="danar_stats_olddata_Message">Old Data Please Press "RELOAD"</string>
<string name="danar_stats_tbb">Total Base Basal</string>
<string name="danar_stats_tbb2">TBB * 2</string>
<!-- Ntp-->
<string name="timedetection">Time detection</string>
</resources> </resources>

View file

@ -54,9 +54,15 @@ dependencies {
implementation "androidx.activity:activity:${activityVersion}" implementation "androidx.activity:activity:${activityVersion}"
implementation "androidx.activity:activity-ktx:${activityVersion}" implementation "androidx.activity:activity-ktx:${activityVersion}"
implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
implementation 'net.danlew:android.joda:2.10.6'
// Graphview cannot be upgraded // Graphview cannot be upgraded
implementation "com.jjoe64:graphview:4.0.1" implementation "com.jjoe64:graphview:4.0.1"
implementation "com.joanzapata.iconify:android-iconify-fontawesome:2.2.2"
implementation "com.google.dagger:dagger-android:$dagger_version" implementation "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version" implementation "com.google.dagger:dagger-android-support:$dagger_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"

View file

@ -7,8 +7,8 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import dagger.android.support.DaggerFragment import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.TDDStatsActivity import info.nightscout.androidaps.activities.TDDStatsActivity
import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.dialogs.ProfileViewerDialog import info.nightscout.androidaps.dialogs.ProfileViewerDialog
import info.nightscout.androidaps.events.EventExtendedBolusChange import info.nightscout.androidaps.events.EventExtendedBolusChange
import info.nightscout.androidaps.events.EventInitializationChanged import info.nightscout.androidaps.events.EventInitializationChanged
@ -16,15 +16,14 @@ import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.events.EventTempBasalChange import info.nightscout.androidaps.events.EventTempBasalChange
import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.interfaces.PumpInterface import info.nightscout.androidaps.interfaces.PumpInterface
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRHistoryActivity import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRHistoryActivity
import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRUserOptionsActivity import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRUserOptionsActivity
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRNewStatus import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRNewStatus
import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
import info.nightscout.androidaps.queue.events.EventQueueChanged import info.nightscout.androidaps.queue.events.EventQueueChanged
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
@ -46,7 +45,6 @@ class DanaRFragment : DaggerFragment() {
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var activePlugin: ActivePluginProvider @Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
@Inject lateinit var danaRSPlugin: DanaRSPlugin @Inject lateinit var danaRSPlugin: DanaRSPlugin
@Inject lateinit var danaRPump: DanaRPump @Inject lateinit var danaRPump: DanaRPump
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@ -223,7 +221,7 @@ class DanaRFragment : DaggerFragment() {
} }
//hide user options button if not an RS pump or old firmware //hide user options button if not an RS pump or old firmware
// also excludes pump with model 03 because of untested error // also excludes pump with model 03 because of untested error
val isKorean = danaRKoreanPlugin.isEnabled(PluginType.PUMP) val isKorean = activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaRKorean
if (isKorean || pump.hwModel == 0 || pump.hwModel == 3) { if (isKorean || pump.hwModel == 0 || pump.hwModel == 3) {
danar_user_options?.visibility = View.GONE danar_user_options?.visibility = View.GONE
} }

View file

@ -10,22 +10,21 @@ import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import info.nightscout.androidaps.Constants import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.data.Profile import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.db.DanaRHistoryRecord import info.nightscout.androidaps.db.DanaRHistoryRecord
import info.nightscout.androidaps.events.EventPumpStatusChanged import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.PluginType import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.interfaces.ProfileFunction import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus import info.nightscout.androidaps.events.EventDanaRSyncStatus
import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.DecimalFormatter
@ -44,9 +43,9 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var danaRKoreanPlugin: DanaRKoreanPlugin @Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var danaRSPlugin: DanaRSPlugin
@Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var databaseHelper: DatabaseHelperInterface
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
private val disposable = CompositeDisposable() private val disposable = CompositeDisposable()
@ -87,8 +86,9 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
danar_history_recyclerview.adapter = RecyclerViewAdapter(historyList) danar_history_recyclerview.adapter = RecyclerViewAdapter(historyList)
danar_history_status.visibility = View.GONE danar_history_status.visibility = View.GONE
val isKorean = danaRKoreanPlugin.isEnabled(PluginType.PUMP) val pump = activePlugin.activePump
val isRS = danaRSPlugin.isEnabled(PluginType.PUMP) val isKorean = pump.pumpDescription.pumpType == PumpType.DanaRKorean
val isRS = pump.pumpDescription.pumpType == PumpType.DanaRS
// Types // Types
val typeList = ArrayList<TypeList>() val typeList = ArrayList<TypeList>()
@ -151,7 +151,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
holder.duration.text = DecimalFormatter.to0Decimal(record.recordDuration.toDouble()) holder.duration.text = DecimalFormatter.to0Decimal(record.recordDuration.toDouble())
holder.alarm.text = record.recordAlarm holder.alarm.text = record.recordAlarm
when (showingType) { when (showingType) {
RecordTypes.RECORD_TYPE_ALARM -> { RecordTypes.RECORD_TYPE_ALARM -> {
holder.time.visibility = View.VISIBLE holder.time.visibility = View.VISIBLE
holder.value.visibility = View.VISIBLE holder.value.visibility = View.VISIBLE
holder.stringValue.visibility = View.GONE holder.stringValue.visibility = View.GONE
@ -163,7 +163,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
holder.alarm.visibility = View.VISIBLE holder.alarm.visibility = View.VISIBLE
} }
RecordTypes.RECORD_TYPE_BOLUS -> { RecordTypes.RECORD_TYPE_BOLUS -> {
holder.time.visibility = View.VISIBLE holder.time.visibility = View.VISIBLE
holder.value.visibility = View.VISIBLE holder.value.visibility = View.VISIBLE
holder.stringValue.visibility = View.GONE holder.stringValue.visibility = View.GONE
@ -175,7 +175,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
holder.alarm.visibility = View.GONE holder.alarm.visibility = View.GONE
} }
RecordTypes.RECORD_TYPE_DAILY -> { RecordTypes.RECORD_TYPE_DAILY -> {
holder.dailyBasal.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBasal) holder.dailyBasal.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBasal)
holder.dailyBolus.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBolus) holder.dailyBolus.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBolus)
holder.dailyTotal.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBolus + record.recordDailyBasal) holder.dailyTotal.text = resourceHelper.gs(R.string.formatinsulinunits, record.recordDailyBolus + record.recordDailyBasal)
@ -191,7 +191,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
holder.alarm.visibility = View.GONE holder.alarm.visibility = View.GONE
} }
RecordTypes.RECORD_TYPE_GLUCOSE -> { RecordTypes.RECORD_TYPE_GLUCOSE -> {
holder.value.text = Profile.toUnitsString(record.recordValue, record.recordValue * Constants.MGDL_TO_MMOLL, profileFunction.getUnits()) holder.value.text = Profile.toUnitsString(record.recordValue, record.recordValue * Constants.MGDL_TO_MMOLL, profileFunction.getUnits())
holder.time.visibility = View.VISIBLE holder.time.visibility = View.VISIBLE
holder.value.visibility = View.VISIBLE holder.value.visibility = View.VISIBLE
@ -216,7 +216,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
holder.alarm.visibility = View.GONE holder.alarm.visibility = View.GONE
} }
RecordTypes.RECORD_TYPE_SUSPEND -> { RecordTypes.RECORD_TYPE_SUSPEND -> {
holder.time.visibility = View.VISIBLE holder.time.visibility = View.VISIBLE
holder.value.visibility = View.GONE holder.value.visibility = View.GONE
holder.stringValue.visibility = View.VISIBLE holder.stringValue.visibility = View.VISIBLE
@ -248,7 +248,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
} }
private fun loadDataFromDB(type: Byte) { private fun loadDataFromDB(type: Byte) {
historyList = MainApp.getDbHelper().getDanaRHistoryRecordsByType(type) historyList = databaseHelper.getDanaRHistoryRecordsByType(type)
runOnUiThread { danar_history_recyclerview?.swapAdapter(RecyclerViewAdapter(historyList), false) } runOnUiThread { danar_history_recyclerview?.swapAdapter(RecyclerViewAdapter(historyList), false) }
} }

View file

@ -1,22 +1,20 @@
package info.nightscout.androidaps.plugins.pump.danaR.activities package info.nightscout.androidaps.plugins.pump.danaR.activities
import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import info.nightscout.androidaps.Constants import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.events.EventInitializationChanged import info.nightscout.androidaps.events.EventInitializationChanged
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.FabricPrivacy import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.extensions.plusAssign import info.nightscout.androidaps.utils.extensions.plusAssign
@ -34,20 +32,17 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
@Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var mainApp: MainApp @Inject lateinit var context: Context
@Inject lateinit var danaRSPlugin: DanaRSPlugin
@Inject lateinit var danaRPlugin: DanaRPlugin
@Inject lateinit var danaRv2Plugin: DanaRv2Plugin
@Inject lateinit var danaRPump: DanaRPump @Inject lateinit var danaRPump: DanaRPump
@Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var commandQueue: CommandQueueProvider @Inject lateinit var commandQueue: CommandQueueProvider
private val disposable = CompositeDisposable() private val disposable = CompositeDisposable()
// This is for Dana pumps only // This is for Dana pumps only
private fun isRS() = danaRSPlugin.isEnabled(PluginType.PUMP) private fun isRS() = activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaRS
private fun isDanaR() = activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaR
private fun isDanaR() = danaRPlugin.isEnabled(PluginType.PUMP) private fun isDanaRv2() = activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaRv2
private fun isDanaRv2() = danaRv2Plugin.isEnabled(PluginType.PUMP)
@Synchronized @Synchronized
override fun onResume() { override fun onResume() {
@ -153,12 +148,12 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
commandQueue.setUserOptions(object : Callback() { commandQueue.setUserOptions(object : Callback() {
override fun run() { override fun run() {
if (!result.success) { if (!result.success) {
val i = Intent(mainApp, ErrorHelperActivity::class.java) val i = Intent(context, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror) i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment) i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.pumperror)) i.putExtra("title", resourceHelper.gs(R.string.pumperror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
mainApp.startActivity(i) context.startActivity(i)
} }
} }
}) })

View file

@ -562,7 +562,7 @@ class DanaRSPlugin @Inject constructor(
} }
} }
override fun getJSONStatus(profile: Profile, profileName: String): JSONObject { override fun getJSONStatus(profile: Profile, profileName: String, version: String): JSONObject {
val now = System.currentTimeMillis() val now = System.currentTimeMillis()
if (danaRPump.lastConnection + 5 * 60 * 1000L < System.currentTimeMillis()) { if (danaRPump.lastConnection + 5 * 60 * 1000L < System.currentTimeMillis()) {
return JSONObject() return JSONObject()
@ -575,7 +575,7 @@ class DanaRSPlugin @Inject constructor(
battery.put("percent", danaRPump.batteryRemaining) battery.put("percent", danaRPump.batteryRemaining)
status.put("status", if (danaRPump.pumpSuspended) "suspended" else "normal") status.put("status", if (danaRPump.pumpSuspended) "suspended" else "normal")
status.put("timestamp", DateUtil.toISOString(danaRPump.lastConnection)) status.put("timestamp", DateUtil.toISOString(danaRPump.lastConnection))
extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION) extended.put("Version", version)
if (danaRPump.lastBolusTime != 0L) { if (danaRPump.lastBolusTime != 0L) {
extended.put("LastBolus", dateUtil.dateAndTimeString(danaRPump.lastBolusTime)) extended.put("LastBolus", dateUtil.dateAndTimeString(danaRPump.lastBolusTime))
extended.put("LastBolusAmount", danaRPump.lastBolusAmount) extended.put("LastBolusAmount", danaRPump.lastBolusAmount)

View file

@ -3,20 +3,15 @@ package info.nightscout.androidaps.plugins.pump.danaRS.comm;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.os.Build; import android.os.Build;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.danaRS.encryption.BleEncryption;
import org.slf4j.Logger;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Date; import java.util.Date;
import javax.inject.Inject; import javax.inject.Inject;
import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.danaRS.encryption.BleEncryption;
import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.DateUtil;
public class DanaRS_Packet { public class DanaRS_Packet {

View file

@ -7,11 +7,11 @@ import info.nightscout.androidaps.db.CareportalEvent
import info.nightscout.androidaps.db.ExtendedBolus import info.nightscout.androidaps.db.ExtendedBolus
import info.nightscout.androidaps.db.Source import info.nightscout.androidaps.db.Source
import info.nightscout.androidaps.db.TemporaryBasal import info.nightscout.androidaps.db.TemporaryBasal
import info.nightscout.androidaps.dialogs.FillDialog
import info.nightscout.androidaps.events.EventPumpStatusChanged import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.interfaces.ActivePluginProvider import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
import info.nightscout.androidaps.plugins.pump.danaRS.encryption.BleEncryption import info.nightscout.androidaps.plugins.pump.danaRS.encryption.BleEncryption
@ -32,6 +32,7 @@ open class DanaRS_Packet_APS_History_Events(
@Inject lateinit var danaRPump: DanaRPump @Inject lateinit var danaRPump: DanaRPump
@Inject lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage @Inject lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
@Inject lateinit var sp: SP @Inject lateinit var sp: SP
@Inject lateinit var nsUpload: NSUpload
private var year = 0 private var year = 0
private var month = 0 private var month = 0
@ -163,14 +164,14 @@ open class DanaRS_Packet_APS_History_Events(
DanaRPump.REFILL -> { DanaRPump.REFILL -> {
aapsLogger.debug(LTag.PUMPCOMM, "EVENT REFILL (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U") aapsLogger.debug(LTag.PUMPCOMM, "EVENT REFILL (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
if (sp.getBoolean(R.string.key_rs_loginsulinchange, true)) if (sp.getBoolean(R.string.key_rs_loginsulinchange, true))
FillDialog.generateCareportalEvent(CareportalEvent.INSULINCHANGE, datetime, resourceHelper.gs(R.string.danarspump), resourceHelper, sp, injector) nsUpload.generateCareportalEvent(CareportalEvent.INSULINCHANGE, datetime, resourceHelper.gs(R.string.danarspump))
status = "REFILL " + dateUtil.timeString(datetime) status = "REFILL " + dateUtil.timeString(datetime)
} }
DanaRPump.PRIME -> { DanaRPump.PRIME -> {
aapsLogger.debug(LTag.PUMPCOMM, "EVENT PRIME (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U") aapsLogger.debug(LTag.PUMPCOMM, "EVENT PRIME (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
if (sp.getBoolean(R.string.key_rs_logcanulachange, true)) if (sp.getBoolean(R.string.key_rs_logcanulachange, true))
FillDialog.generateCareportalEvent(CareportalEvent.SITECHANGE, datetime, resourceHelper.gs(R.string.danarspump), resourceHelper, sp, injector) nsUpload.generateCareportalEvent(CareportalEvent.SITECHANGE, datetime, resourceHelper.gs(R.string.danarspump))
status = "PRIME " + dateUtil.timeString(datetime) status = "PRIME " + dateUtil.timeString(datetime)
} }

View file

@ -1,7 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaRS.comm package info.nightscout.androidaps.plugins.pump.danaRS.comm
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
import info.nightscout.androidaps.danars.R import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper

View file

@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaRS.comm package info.nightscout.androidaps.plugins.pump.danaRS.comm
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress

View file

@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaRS.comm package info.nightscout.androidaps.plugins.pump.danaRS.comm
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification

View file

@ -1,12 +1,12 @@
package info.nightscout.androidaps.plugins.pump.danaRS.comm package info.nightscout.androidaps.plugins.pump.danaRS.comm
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.db.DanaRHistoryRecord import info.nightscout.androidaps.db.DanaRHistoryRecord
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus import info.nightscout.androidaps.events.EventDanaRSyncStatus
import org.joda.time.DateTime import org.joda.time.DateTime
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
@ -17,6 +17,7 @@ abstract class DanaRS_Packet_History_(
) : DanaRS_Packet(injector) { ) : DanaRS_Packet(injector) {
@Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var databaseHelper: DatabaseHelperInterface
protected var year = 0 protected var year = 0
protected var month = 0 protected var month = 0
@ -198,7 +199,7 @@ abstract class DanaRS_Packet_History_(
danaRHistoryRecord.stringRecordValue = strRecordValue danaRHistoryRecord.stringRecordValue = strRecordValue
} }
} }
MainApp.getDbHelper().createOrUpdate(danaRHistoryRecord) databaseHelper.createOrUpdate(danaRHistoryRecord)
rxBus.send(EventDanaRSyncStatus(dateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType)) rxBus.send(EventDanaRSyncStatus(dateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType))
} }
} }

View file

@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaRS.comm package info.nightscout.androidaps.plugins.pump.danaRS.comm
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
@ -17,6 +17,7 @@ class DanaRS_Packet_Notify_Alarm(
@Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var nsUpload: NSUpload
init { init {
type = BleEncryption.DANAR_PACKET__TYPE_NOTIFY type = BleEncryption.DANAR_PACKET__TYPE_NOTIFY
@ -57,7 +58,7 @@ class DanaRS_Packet_Notify_Alarm(
} }
val notification = Notification(Notification.USERMESSAGE, errorString, Notification.URGENT) val notification = Notification(Notification.USERMESSAGE, errorString, Notification.URGENT)
rxBus.send(EventNewNotification(notification)) rxBus.send(EventNewNotification(notification))
NSUpload.uploadError(errorString) nsUpload.uploadError(errorString)
} }
override fun getFriendlyName(): String { override fun getFriendlyName(): String {

View file

@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaRS.comm package info.nightscout.androidaps.plugins.pump.danaRS.comm
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress

View file

@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaRS.comm package info.nightscout.androidaps.plugins.pump.danaRS.comm
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress

View file

@ -6,7 +6,7 @@ import android.content.Intent
import android.os.SystemClock import android.os.SystemClock
import android.util.Base64 import android.util.Base64
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.events.EventPumpStatusChanged import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.logging.LTag
@ -45,7 +45,8 @@ class BLEComm @Inject internal constructor(
private val danaRSMessageHashTable: DanaRSMessageHashTable, private val danaRSMessageHashTable: DanaRSMessageHashTable,
private val danaRPump: DanaRPump, private val danaRPump: DanaRPump,
private val danaRSPlugin: DanaRSPlugin, private val danaRSPlugin: DanaRSPlugin,
private val bleEncryption: BleEncryption private val bleEncryption: BleEncryption,
private val nsUpload: NSUpload
) { ) {
companion object { companion object {
@ -481,7 +482,7 @@ class BLEComm @Inject internal constructor(
aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PUMP_CHECK (PUMP)" + " " + DanaRS_Packet.toHexString(decryptedBuffer)) aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PUMP_CHECK (PUMP)" + " " + DanaRS_Packet.toHexString(decryptedBuffer))
mSendQueue.clear() mSendQueue.clear()
rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, resourceHelper.gs(R.string.pumperror))) rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, resourceHelper.gs(R.string.pumperror)))
NSUpload.uploadError(resourceHelper.gs(R.string.pumperror)) nsUpload.uploadError(resourceHelper.gs(R.string.pumperror))
val n = Notification(Notification.PUMPERROR, resourceHelper.gs(R.string.pumperror), Notification.URGENT) val n = Notification(Notification.PUMPERROR, resourceHelper.gs(R.string.pumperror), Notification.URGENT)
rxBus.send(EventNewNotification(n)) rxBus.send(EventNewNotification(n))
// response BUSY: error status // response BUSY: error status

View file

@ -10,6 +10,7 @@ import dagger.android.DaggerService
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Constants import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.activities.ErrorHelperActivity import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.data.Profile import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.data.PumpEnactResult import info.nightscout.androidaps.data.PumpEnactResult
import info.nightscout.androidaps.db.Treatment import info.nightscout.androidaps.db.Treatment
@ -65,6 +66,7 @@ class DanaRSService : DaggerService() {
@Inject lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage @Inject lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
@Inject lateinit var bleComm: BLEComm @Inject lateinit var bleComm: BLEComm
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var dateUtil: DateUtil @Inject lateinit var dateUtil: DateUtil
private val disposable = CompositeDisposable() private val disposable = CompositeDisposable()
@ -192,7 +194,7 @@ class DanaRSService : DaggerService() {
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) { if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
val reportFail = Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT) val reportFail = Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT)
rxBus.send(EventNewNotification(reportFail)) rxBus.send(EventNewNotification(reportFail))
NSUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U") nsUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits + "U")
lastApproachingDailyLimit = System.currentTimeMillis() lastApproachingDailyLimit = System.currentTimeMillis()
} }
} }

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