EOPatch: Elimiminate timber dependency
This commit is contained in:
parent
070e95ef62
commit
e4858e34bf
16 changed files with 170 additions and 219 deletions
|
@ -35,7 +35,6 @@ buildscript {
|
||||||
androidx_junit_version = '1.1.2'
|
androidx_junit_version = '1.1.2'
|
||||||
androidx_rules_version = '1.4.0'
|
androidx_rules_version = '1.4.0'
|
||||||
|
|
||||||
timber_version = "4.7.1"
|
|
||||||
rxandroidble_version = '1.12.1'
|
rxandroidble_version = '1.12.1'
|
||||||
replayshare_version = '2.2.0'
|
replayshare_version = '2.2.0'
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,4 @@ dependencies {
|
||||||
//RxAndroidBle
|
//RxAndroidBle
|
||||||
implementation "com.polidea.rxandroidble2:rxandroidble:$rxandroidble_version"
|
implementation "com.polidea.rxandroidble2:rxandroidble:$rxandroidble_version"
|
||||||
implementation "com.jakewharton.rx2:replaying-share:$replayshare_version"
|
implementation "com.jakewharton.rx2:replaying-share:$replayshare_version"
|
||||||
|
|
||||||
// Log
|
|
||||||
implementation "com.jakewharton.timber:timber:$timber_version"
|
|
||||||
}
|
}
|
|
@ -25,7 +25,6 @@ import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPreferenceManager
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.BolusExDuration
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.BolusExDuration
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.SettingKeys
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.SettingKeys
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.takeOne
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.takeOne
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.with
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.EopatchOverviewFragment
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.EopatchOverviewFragment
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.TempBasal
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.TempBasal
|
||||||
import info.nightscout.androidaps.queue.commands.CustomCommand
|
import info.nightscout.androidaps.queue.commands.CustomCommand
|
||||||
|
@ -34,6 +33,7 @@ import info.nightscout.androidaps.utils.FabricPrivacy
|
||||||
import info.nightscout.androidaps.utils.T
|
import info.nightscout.androidaps.utils.T
|
||||||
import info.nightscout.androidaps.utils.TimeChangeType
|
import info.nightscout.androidaps.utils.TimeChangeType
|
||||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||||
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
|
@ -41,7 +41,6 @@ import io.reactivex.functions.Consumer
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import io.reactivex.subjects.BehaviorSubject
|
import io.reactivex.subjects.BehaviorSubject
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import timber.log.Timber
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
@ -53,11 +52,8 @@ class EopatchPumpPlugin @Inject constructor(
|
||||||
aapsLogger: AAPSLogger,
|
aapsLogger: AAPSLogger,
|
||||||
rh: ResourceHelper,
|
rh: ResourceHelper,
|
||||||
commandQueue: CommandQueue,
|
commandQueue: CommandQueue,
|
||||||
private val context: Context,
|
private val aapsSchedulers: AapsSchedulers,
|
||||||
private val rxBus: RxBus,
|
private val rxBus: RxBus,
|
||||||
private val sp: SP,
|
|
||||||
private val profileFunction: ProfileFunction,
|
|
||||||
private val activePlugin: ActivePlugin,
|
|
||||||
private val fabricPrivacy: FabricPrivacy,
|
private val fabricPrivacy: FabricPrivacy,
|
||||||
private val dateUtil: DateUtil,
|
private val dateUtil: DateUtil,
|
||||||
private val pumpSync: PumpSync,
|
private val pumpSync: PumpSync,
|
||||||
|
@ -81,12 +77,6 @@ class EopatchPumpPlugin @Inject constructor(
|
||||||
private var mLastDataTime: Long = 0
|
private var mLastDataTime: Long = 0
|
||||||
private val mPumpDescription = PumpDescription(mPumpType)
|
private val mPumpDescription = PumpDescription(mPumpType)
|
||||||
|
|
||||||
init {
|
|
||||||
if (BuildConfig.DEBUG) {
|
|
||||||
Timber.plant(Timber.DebugTree())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
mDisposables.add(rxBus
|
mDisposables.add(rxBus
|
||||||
|
@ -128,7 +118,7 @@ class EopatchPumpPlugin @Inject constructor(
|
||||||
|
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
super.onStop()
|
super.onStop()
|
||||||
aapsLogger.debug(LTag.PUMP, "EOPatchPumpPlugin onStop()");
|
aapsLogger.debug(LTag.PUMP, "EOPatchPumpPlugin onStop()")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStateChange(type: PluginType?, oldState: State?, newState: State?) {
|
override fun onStateChange(type: PluginType?, oldState: State?, newState: State?) {
|
||||||
|
@ -348,7 +338,10 @@ class EopatchPumpPlugin @Inject constructor(
|
||||||
|
|
||||||
override fun stopBolusDelivering() {
|
override fun stopBolusDelivering() {
|
||||||
patchmanager.stopNowBolus()
|
patchmanager.stopNowBolus()
|
||||||
.with()
|
.subscribeOn(aapsSchedulers.io)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
|
.subscribeOn(aapsSchedulers.io)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe { it ->
|
.subscribe { it ->
|
||||||
rxBus.send(EventOverviewBolusProgress.apply {
|
rxBus.send(EventOverviewBolusProgress.apply {
|
||||||
status = rh.gs(R.string.bolusdelivered, (it.injectedBolusAmount * 0.05f)) //todo stoped 메세지로 변경 필요
|
status = rh.gs(R.string.bolusdelivered, (it.injectedBolusAmount * 0.05f)) //todo stoped 메세지로 변경 필요
|
||||||
|
@ -362,7 +355,8 @@ class EopatchPumpPlugin @Inject constructor(
|
||||||
mLastDataTime = System.currentTimeMillis()
|
mLastDataTime = System.currentTimeMillis()
|
||||||
val tb = TempBasal.createAbsolute(durationInMinutes.toLong(), absoluteRate.toFloat())
|
val tb = TempBasal.createAbsolute(durationInMinutes.toLong(), absoluteRate.toFloat())
|
||||||
return patchmanager.startTempBasal(tb)
|
return patchmanager.startTempBasal(tb)
|
||||||
.with()
|
.subscribeOn(aapsSchedulers.io)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
.doOnSuccess {
|
.doOnSuccess {
|
||||||
preferenceManager.getTempBasalManager().startedBasal = tb
|
preferenceManager.getTempBasalManager().startedBasal = tb
|
||||||
preferenceManager.getTempBasalManager().startedBasal?.startTimestamp = System.currentTimeMillis()
|
preferenceManager.getTempBasalManager().startedBasal?.startTimestamp = System.currentTimeMillis()
|
||||||
|
@ -394,7 +388,8 @@ class EopatchPumpPlugin @Inject constructor(
|
||||||
mLastDataTime = System.currentTimeMillis()
|
mLastDataTime = System.currentTimeMillis()
|
||||||
val tb = TempBasal.createPercent(durationInMinutes.toLong(), percent)
|
val tb = TempBasal.createPercent(durationInMinutes.toLong(), percent)
|
||||||
return patchmanager.startTempBasal(tb)
|
return patchmanager.startTempBasal(tb)
|
||||||
.with()
|
.subscribeOn(aapsSchedulers.io)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
.doOnSuccess {
|
.doOnSuccess {
|
||||||
preferenceManager.getTempBasalManager().startedBasal = tb
|
preferenceManager.getTempBasalManager().startedBasal = tb
|
||||||
preferenceManager.getTempBasalManager().startedBasal?.startTimestamp = System.currentTimeMillis()
|
preferenceManager.getTempBasalManager().startedBasal?.startTimestamp = System.currentTimeMillis()
|
||||||
|
|
|
@ -1,35 +1,41 @@
|
||||||
|
@file:Suppress("unused")
|
||||||
|
|
||||||
package info.nightscout.androidaps.plugins.pump.eopatch
|
package info.nightscout.androidaps.plugins.pump.eopatch
|
||||||
|
|
||||||
|
import android.os.SystemClock
|
||||||
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import io.reactivex.*
|
import io.reactivex.*
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
|
||||||
import org.reactivestreams.Subscription
|
import org.reactivestreams.Subscription
|
||||||
import timber.log.Timber
|
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
import javax.inject.Inject
|
||||||
|
import javax.inject.Singleton
|
||||||
|
|
||||||
enum class RxVoid {
|
@Singleton
|
||||||
|
class RxAction @Inject constructor(
|
||||||
|
private val aapsSchedulers: AapsSchedulers,
|
||||||
|
private val aapsLogger: AAPSLogger
|
||||||
|
) {
|
||||||
|
|
||||||
|
enum class RxVoid {
|
||||||
INSTANCE
|
INSTANCE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class SilentObserver<T>(private val aapsLogger: AAPSLogger) : MaybeObserver<T>, SingleObserver<T>, Observer<T>, FlowableSubscriber<T> {
|
||||||
|
|
||||||
class SilentObserver<T> : MaybeObserver<T>, SingleObserver<T>, Observer<T>, FlowableSubscriber<T> {
|
|
||||||
override fun onSubscribe(d: Disposable) {}
|
override fun onSubscribe(d: Disposable) {}
|
||||||
override fun onSuccess(t: T) {}
|
override fun onSuccess(t: T) {}
|
||||||
override fun onError(e: Throwable) = Timber.d(e, "SilentObserver.onError() ignore")
|
override fun onError(e: Throwable) = aapsLogger.error("SilentObserver.onError() ignore", e)
|
||||||
override fun onComplete() {}
|
override fun onComplete() {}
|
||||||
override fun onNext(t: T) {}
|
override fun onNext(t: T) {}
|
||||||
override fun onSubscribe(s: Subscription) {}
|
override fun onSubscribe(s: Subscription) {}
|
||||||
}
|
|
||||||
|
|
||||||
object RxAction {
|
|
||||||
private fun msleep(millis: Long) {
|
|
||||||
if (millis <= 0)
|
|
||||||
return
|
|
||||||
try {
|
|
||||||
Thread.sleep(millis)
|
|
||||||
} catch (e: InterruptedException) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun sleep(millis: Long) {
|
||||||
|
if (millis <= 0)
|
||||||
|
return
|
||||||
|
SystemClock.sleep(millis)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun delay(delayMs: Long): Single<*> {
|
private fun delay(delayMs: Long): Single<*> {
|
||||||
|
@ -42,7 +48,7 @@ object RxAction {
|
||||||
fun single(action: Runnable, delayMs: Long, scheduler: Scheduler): Single<*> {
|
fun single(action: Runnable, delayMs: Long, scheduler: Scheduler): Single<*> {
|
||||||
return delay(delayMs)
|
return delay(delayMs)
|
||||||
.observeOn(scheduler)
|
.observeOn(scheduler)
|
||||||
.flatMap { o ->
|
.flatMap {
|
||||||
Single.fromCallable {
|
Single.fromCallable {
|
||||||
action.run()
|
action.run()
|
||||||
RxVoid.INSTANCE
|
RxVoid.INSTANCE
|
||||||
|
@ -50,64 +56,63 @@ object RxAction {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun safeSingle(action: Runnable, delayMs: Long, scheduler: Scheduler): Single<*> {
|
private fun safeSingle(action: Runnable, delayMs: Long, scheduler: Scheduler): Single<*> {
|
||||||
return single(action, delayMs, scheduler)
|
return single(action, delayMs, scheduler)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun runOnComputationThread(action: Runnable, delayMs: Long = 0) {
|
fun runOnComputationThread(action: Runnable, delayMs: Long = 0) {
|
||||||
single(action, delayMs, Schedulers.computation()).subscribe(SilentObserver())
|
single(action, delayMs, aapsSchedulers.cpu).subscribe(SilentObserver(aapsLogger))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun runOnIoThread(action: Runnable, delayMs: Long = 0) {
|
fun runOnIoThread(action: Runnable, delayMs: Long = 0) {
|
||||||
single(action, delayMs, Schedulers.io()).subscribe(SilentObserver())
|
single(action, delayMs, aapsSchedulers.io).subscribe(SilentObserver(aapsLogger))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun runOnNewThread(action: Runnable, delayMs: Long = 0) {
|
fun runOnNewThread(action: Runnable, delayMs: Long = 0) {
|
||||||
single(action, delayMs, Schedulers.newThread()).subscribe(SilentObserver())
|
single(action, delayMs, aapsSchedulers.newThread).subscribe(SilentObserver(aapsLogger))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun runOnMainThread(action: Runnable, delayMs: Long = 0) {
|
fun runOnMainThread(action: Runnable, delayMs: Long = 0) {
|
||||||
single(action, delayMs, AndroidSchedulers.mainThread()).subscribe(SilentObserver())
|
single(action, delayMs, aapsSchedulers.main).subscribe(SilentObserver(aapsLogger))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun safeRunOnComputationThread(action: Runnable, delayMs: Long = 0) {
|
fun safeRunOnComputationThread(action: Runnable, delayMs: Long = 0) {
|
||||||
safeSingle(action, delayMs, Schedulers.computation()).subscribe(SilentObserver())
|
safeSingle(action, delayMs, aapsSchedulers.cpu).subscribe(SilentObserver(aapsLogger))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun safeRunOnIoThread(action: Runnable, delayMs: Long = 0) {
|
fun safeRunOnIoThread(action: Runnable, delayMs: Long = 0) {
|
||||||
safeSingle(action, delayMs, Schedulers.io()).subscribe(SilentObserver())
|
safeSingle(action, delayMs, aapsSchedulers.io).subscribe(SilentObserver(aapsLogger))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun safeRunOnNewThread(action: Runnable, delayMs: Long = 0) {
|
fun safeRunOnNewThread(action: Runnable, delayMs: Long = 0) {
|
||||||
safeSingle(action, delayMs, Schedulers.newThread()).subscribe(SilentObserver())
|
safeSingle(action, delayMs, aapsSchedulers.newThread).subscribe(SilentObserver(aapsLogger))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
fun safeRunOnMainThread(action: Runnable, delayMs: Long = 0) {
|
fun safeRunOnMainThread(action: Runnable, delayMs: Long = 0) {
|
||||||
safeSingle(action, delayMs, AndroidSchedulers.mainThread()).subscribe(SilentObserver())
|
safeSingle(action, delayMs, aapsSchedulers.main).subscribe(SilentObserver(aapsLogger))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun singleOnMainThread(action: Runnable, delayMs: Long): Single<*> {
|
fun singleOnMainThread(action: Runnable, delayMs: Long): Single<*> {
|
||||||
return single(action, delayMs, AndroidSchedulers.mainThread())
|
return single(action, delayMs, aapsSchedulers.main)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun singleOnComputationThread(action: Runnable, delayMs: Long): Single<*> {
|
fun singleOnComputationThread(action: Runnable, delayMs: Long): Single<*> {
|
||||||
return single(action, delayMs, Schedulers.computation())
|
return single(action, delayMs, aapsSchedulers.cpu)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun singleOnIoThread(action: Runnable, delayMs: Long): Single<*> {
|
fun singleOnIoThread(action: Runnable, delayMs: Long): Single<*> {
|
||||||
return single(action, delayMs, Schedulers.io())
|
return single(action, delayMs, aapsSchedulers.io)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun singleOnNewThread(action: Runnable, delayMs: Long): Single<*> {
|
fun singleOnNewThread(action: Runnable, delayMs: Long): Single<*> {
|
||||||
return single(action, delayMs, Schedulers.newThread())
|
return single(action, delayMs, aapsSchedulers.newThread)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ import info.nightscout.androidaps.plugins.pump.eopatch.EoPatchRxBus
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.OsAlarmReceiver
|
import info.nightscout.androidaps.plugins.pump.eopatch.OsAlarmReceiver
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchLifecycle
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchLifecycle
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.code.PatchAeCode
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.code.PatchAeCode
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.observeOnMainThread
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
import io.reactivex.Maybe
|
import io.reactivex.Maybe
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
|
@ -38,6 +38,7 @@ class AlarmRegistry @Inject constructor() : IAlarmRegistry {
|
||||||
@Inject lateinit var pm: IPreferenceManager
|
@Inject lateinit var pm: IPreferenceManager
|
||||||
@Inject lateinit var rxBus: RxBus
|
@Inject lateinit var rxBus: RxBus
|
||||||
@Inject lateinit var aapsLogger: AAPSLogger
|
@Inject lateinit var aapsLogger: AAPSLogger
|
||||||
|
@Inject lateinit var aapsSchedulers: AapsSchedulers
|
||||||
|
|
||||||
private lateinit var mOsAlarmManager: AlarmManager
|
private lateinit var mOsAlarmManager: AlarmManager
|
||||||
private var mDisposable: Disposable? = null
|
private var mDisposable: Disposable? = null
|
||||||
|
@ -46,7 +47,7 @@ class AlarmRegistry @Inject constructor() : IAlarmRegistry {
|
||||||
@Inject fun onInit() {
|
@Inject fun onInit() {
|
||||||
mOsAlarmManager = mContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
mOsAlarmManager = mContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||||
mDisposable = pm.observePatchLifeCycle()
|
mDisposable = pm.observePatchLifeCycle()
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe {
|
.subscribe {
|
||||||
when(it){
|
when(it){
|
||||||
PatchLifecycle.REMOVE_NEEDLE_CAP -> {
|
PatchLifecycle.REMOVE_NEEDLE_CAP -> {
|
||||||
|
@ -64,7 +65,7 @@ class AlarmRegistry @Inject constructor() : IAlarmRegistry {
|
||||||
it.keys.forEach {
|
it.keys.forEach {
|
||||||
sources.add(
|
sources.add(
|
||||||
Maybe.just(it)
|
Maybe.just(it)
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.doOnSuccess { rxBus.send(EventDismissNotification(Notification.EOELOW_PATCH_ALERTS + (it.aeCode + 10000))) }
|
.doOnSuccess { rxBus.send(EventDismissNotification(Notification.EOELOW_PATCH_ALERTS + (it.aeCode + 10000))) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -107,7 +108,7 @@ class AlarmRegistry @Inject constructor() : IAlarmRegistry {
|
||||||
override fun add(patchAeCodes: Set<PatchAeCode>) {
|
override fun add(patchAeCodes: Set<PatchAeCode>) {
|
||||||
compositeDisposable.add(
|
compositeDisposable.add(
|
||||||
Observable.fromIterable(patchAeCodes)
|
Observable.fromIterable(patchAeCodes)
|
||||||
.filter{patchAeCodeItem -> AlarmCode.Companion.findByPatchAeCode(patchAeCodeItem.getAeValue()) != null}
|
.filter{patchAeCodeItem -> AlarmCode.findByPatchAeCode(patchAeCodeItem.getAeValue()) != null}
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.filter { patchAeCodes -> AlarmCode.findByPatchAeCode(patchAeCodes.getAeValue()) != null }
|
.filter { patchAeCodes -> AlarmCode.findByPatchAeCode(patchAeCodes.getAeValue()) != null }
|
||||||
.flatMapMaybe{aeCodeResponse -> add(AlarmCode.findByPatchAeCode(aeCodeResponse.getAeValue())!!,0L, true)}
|
.flatMapMaybe{aeCodeResponse -> add(AlarmCode.findByPatchAeCode(aeCodeResponse.getAeValue())!!,0L, true)}
|
||||||
|
|
|
@ -3,6 +3,13 @@ package info.nightscout.androidaps.plugins.pump.eopatch.ble;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import com.polidea.rxandroidble2.exceptions.BleException;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||||
import info.nightscout.androidaps.events.EventCustomActionsChanged;
|
import info.nightscout.androidaps.events.EventCustomActionsChanged;
|
||||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||||
|
@ -11,42 +18,28 @@ import info.nightscout.androidaps.interfaces.ActivePlugin;
|
||||||
import info.nightscout.androidaps.interfaces.CommandQueue;
|
import info.nightscout.androidaps.interfaces.CommandQueue;
|
||||||
import info.nightscout.androidaps.interfaces.ProfileFunction;
|
import info.nightscout.androidaps.interfaces.ProfileFunction;
|
||||||
import info.nightscout.androidaps.interfaces.PumpSync;
|
import info.nightscout.androidaps.interfaces.PumpSync;
|
||||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
|
|
||||||
import info.nightscout.androidaps.utils.DateUtil;
|
|
||||||
import info.nightscout.shared.logging.AAPSLogger;
|
|
||||||
import info.nightscout.shared.logging.LTag;
|
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.CommonUtils;
|
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.R;
|
import info.nightscout.androidaps.plugins.pump.eopatch.R;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.RxAction;
|
import info.nightscout.androidaps.plugins.pump.eopatch.RxAction;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.alarm.AlarmCode;
|
import info.nightscout.androidaps.plugins.pump.eopatch.alarm.AlarmCode;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.BleConnectionState;
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.IPatchScanner;
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.PatchScanner;
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.PatchSelfTestResult;
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.ScanList;
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.BolusExDuration;
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.BolusExDuration;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.DeactivationStatus;
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.DeactivationStatus;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchLifecycle;
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchLifecycle;
|
||||||
import com.polidea.rxandroidble2.RxBleClient;
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.SettingKeys;
|
||||||
import com.polidea.rxandroidble2.exceptions.BleException;
|
|
||||||
import com.polidea.rxandroidble2.internal.RxBleLog;
|
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.BasalScheduleSetResponse;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.BasalScheduleSetResponse;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.BaseResponse;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.BaseResponse;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.inject.Singleton;
|
|
||||||
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.BolusResponse;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.BolusResponse;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.BolusStopResponse;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.BolusStopResponse;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.ComboBolusStopResponse;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.ComboBolusStopResponse;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.PatchBooleanResponse;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.PatchBooleanResponse;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.TempBasalScheduleSetResponse;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.TempBasalScheduleSetResponse;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.TemperatureResponse;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.response.TemperatureResponse;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.SettingKeys;
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.BleConnectionState;
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.IPatchScanner;
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.PatchScanner;
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.PatchSelfTestResult;
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.ScanList;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.event.EventPatchActivationNotComplete;
|
import info.nightscout.androidaps.plugins.pump.eopatch.event.EventPatchActivationNotComplete;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.DialogHelperActivity;
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.DialogHelperActivity;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.BolusCurrent;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.BolusCurrent;
|
||||||
|
@ -55,8 +48,10 @@ import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchConfig;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchLifecycleEvent;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchLifecycleEvent;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchState;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchState;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.TempBasal;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.TempBasal;
|
||||||
import info.nightscout.androidaps.queue.commands.Command;
|
import info.nightscout.androidaps.utils.DateUtil;
|
||||||
import info.nightscout.androidaps.utils.resources.ResourceHelper;
|
import info.nightscout.androidaps.utils.resources.ResourceHelper;
|
||||||
|
import info.nightscout.shared.logging.AAPSLogger;
|
||||||
|
import info.nightscout.shared.logging.LTag;
|
||||||
import info.nightscout.shared.sharedPreferences.SP;
|
import info.nightscout.shared.sharedPreferences.SP;
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.Single;
|
import io.reactivex.Single;
|
||||||
|
@ -83,6 +78,7 @@ public class PatchManager implements IPatchManager {
|
||||||
@Inject SP sp;
|
@Inject SP sp;
|
||||||
@Inject PumpSync pumpSync;
|
@Inject PumpSync pumpSync;
|
||||||
@Inject DateUtil dateUtil;
|
@Inject DateUtil dateUtil;
|
||||||
|
@Inject RxAction rxAction;
|
||||||
|
|
||||||
private IPatchScanner patchScanner;
|
private IPatchScanner patchScanner;
|
||||||
private CompositeDisposable mCompositeDisposable = new CompositeDisposable();
|
private CompositeDisposable mCompositeDisposable = new CompositeDisposable();
|
||||||
|
@ -443,7 +439,7 @@ public class PatchManager implements IPatchManager {
|
||||||
if(getPatchConfig().getLifecycleEvent().isSubStepRunning()
|
if(getPatchConfig().getLifecycleEvent().isSubStepRunning()
|
||||||
&& !pm.getAlarms().isOccuring(AlarmCode.A005)
|
&& !pm.getAlarms().isOccuring(AlarmCode.A005)
|
||||||
&& !pm.getAlarms().isOccuring(AlarmCode.A020)) {
|
&& !pm.getAlarms().isOccuring(AlarmCode.A020)) {
|
||||||
RxAction.INSTANCE.runOnMainThread(() -> {
|
rxAction.runOnMainThread(() -> {
|
||||||
rxBus.send(new EventPatchActivationNotComplete());
|
rxBus.send(new EventPatchActivationNotComplete());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.eopatch.extension
|
|
||||||
|
|
||||||
import io.reactivex.Completable
|
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
||||||
import io.reactivex.disposables.Disposable
|
|
||||||
import io.reactivex.schedulers.Schedulers
|
|
||||||
import timber.log.Timber
|
|
||||||
|
|
||||||
fun Completable.observeOnMainThread(): Completable = observeOn(AndroidSchedulers.mainThread())
|
|
||||||
|
|
||||||
fun Completable.observeOnComputation(): Completable = observeOn(Schedulers.computation())
|
|
||||||
|
|
||||||
fun Completable.observeOnIo(): Completable = observeOn(Schedulers.io())
|
|
||||||
|
|
||||||
fun Completable.subscribeEmpty(): Disposable {
|
|
||||||
return subscribe({}, {})
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Completable.subscribeEmpty(onComplete: () -> Unit, onError: (Throwable) -> Unit): Disposable {
|
|
||||||
return subscribe(onComplete, onError)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Completable.subscribeDefault(): Disposable {
|
|
||||||
return subscribe({ Timber.d("onComplete") }, { Timber.e(it, "onError") })
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Completable.subscribeDefault(onComplete: () -> Unit): Disposable {
|
|
||||||
return subscribe(onComplete, { Timber.e(it, "onError") })
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.eopatch.extension
|
|
||||||
|
|
||||||
import io.reactivex.Maybe
|
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
||||||
import io.reactivex.disposables.Disposable
|
|
||||||
import io.reactivex.schedulers.Schedulers
|
|
||||||
import timber.log.Timber
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.observeOnMainThread(): Maybe<T> = observeOn(AndroidSchedulers.mainThread())
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.observeOnComputation(): Maybe<T> = observeOn(Schedulers.computation())
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.observeOnIo(): Maybe<T> = observeOn(Schedulers.io())
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.subscribeEmpty(): Disposable = subscribe({}, {}, {})
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.subscribeEmpty(onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, {}, {})
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.subscribeEmpty(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, {})
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.subscribeDefault(): Disposable = subscribe({ Timber.d("onSuccess") }, { Timber.e(it, "onError") }, { Timber.d("onComplete") })
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.subscribeDefault(onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, { Timber.e(it, "onError") }, { Timber.d("onComplete") })
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.subscribeDefault(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, { Timber.d("onComplete") })
|
|
||||||
|
|
||||||
fun <T> Maybe<T>.with(): Maybe<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
|
|
@ -1,10 +1,11 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.eopatch.extension
|
package info.nightscout.androidaps.plugins.pump.eopatch.extension
|
||||||
|
|
||||||
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
|
import info.nightscout.shared.logging.LTag
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import timber.log.Timber
|
|
||||||
|
|
||||||
fun <T> Observable<T>.observeOnMainThread(): Observable<T> = observeOn(AndroidSchedulers.mainThread())
|
fun <T> Observable<T>.observeOnMainThread(): Observable<T> = observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|
||||||
|
@ -18,10 +19,14 @@ fun <T> Observable<T>.subscribeEmpty(onSuccess: (T) -> Unit): Disposable = subsc
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeEmpty(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, {})
|
fun <T> Observable<T>.subscribeEmpty(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, {})
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeDefault(): Disposable = subscribe({ Timber.d("onSuccess") }, { Timber.e(it, "onError") }, { Timber.d("onComplete") })
|
fun <T> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger): Disposable = subscribe({ aapsLogger.debug(LTag.PUMP, "onSuccess") }, { aapsLogger.error(LTag.PUMP, "onError", it) }, {
|
||||||
|
aapsLogger.debug(LTag.PUMP, "onComplete")
|
||||||
|
})
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeDefault(onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, { Timber.e(it, "onError") }, { Timber.d("onComplete") })
|
fun <T> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable =
|
||||||
|
subscribe(onSuccess, { aapsLogger.error(LTag.PUMP, "onError", it) }, { aapsLogger.debug(LTag.PUMP, "onComplete") })
|
||||||
|
|
||||||
fun <T> Observable<T>.subscribeDefault(onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable = subscribe(onSuccess, onError, { Timber.d("onComplete") })
|
fun <T> Observable<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit, onError: (Throwable) -> Unit): Disposable =
|
||||||
|
subscribe(onSuccess, onError, { aapsLogger.debug(LTag.PUMP, "onComplete") })
|
||||||
|
|
||||||
fun <T> Observable<T>.with(): Observable<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
fun <T> Observable<T>.with(): Observable<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
|
@ -1,15 +1,16 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.eopatch.extension
|
package info.nightscout.androidaps.plugins.pump.eopatch.extension
|
||||||
|
|
||||||
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
|
import info.nightscout.shared.logging.LTag
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import timber.log.Timber
|
|
||||||
|
|
||||||
fun <T> Single<T>.observeOnMainThread(): Single<T> = observeOn(AndroidSchedulers.mainThread())
|
fun <T> Single<T>.observeOnMainThread(): Single<T> = observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|
||||||
fun <T> Single<T>.subscribeDefault(onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, {
|
fun <T> Single<T>.subscribeDefault(aapsLogger: AAPSLogger, onSuccess: (T) -> Unit): Disposable = subscribe(onSuccess, {
|
||||||
Timber.e(it, "onError")
|
aapsLogger.error(LTag.PUMP, "onError", it)
|
||||||
})
|
})
|
||||||
|
|
||||||
fun <T> Single<T>.with(): Single<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
fun <T> Single<T>.with(): Single<T> = subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|
|
@ -16,9 +16,9 @@ import info.nightscout.androidaps.core.R
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.EoPatchRxBus
|
import info.nightscout.androidaps.plugins.pump.eopatch.EoPatchRxBus
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.dagger.EopatchPluginQualifier
|
import info.nightscout.androidaps.plugins.pump.eopatch.dagger.EopatchPluginQualifier
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.fillExtras
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.fillExtras
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.observeOnMainThread
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.subscribeDefault
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.subscribeDefault
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.ActivityResultEvent
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.ActivityResultEvent
|
||||||
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -29,6 +29,8 @@ abstract class EoBaseActivity<B : ViewDataBinding> : NoSplashAppCompatActivity()
|
||||||
@EopatchPluginQualifier
|
@EopatchPluginQualifier
|
||||||
lateinit var viewModelFactory: ViewModelProvider.Factory
|
lateinit var viewModelFactory: ViewModelProvider.Factory
|
||||||
|
|
||||||
|
@Inject lateinit var aapsSchedulers: AapsSchedulers
|
||||||
|
|
||||||
protected lateinit var binding: B
|
protected lateinit var binding: B
|
||||||
|
|
||||||
private val compositeDisposable = CompositeDisposable()
|
private val compositeDisposable = CompositeDisposable()
|
||||||
|
@ -90,8 +92,8 @@ abstract class EoBaseActivity<B : ViewDataBinding> : NoSplashAppCompatActivity()
|
||||||
override fun checkCommunication(onSuccess: () -> Unit, onCancel: (() -> Unit)?, onDiscard: (() -> Unit)?, goHomeAfterDiscard: Boolean) {
|
override fun checkCommunication(onSuccess: () -> Unit, onCancel: (() -> Unit)?, onDiscard: (() -> Unit)?, goHomeAfterDiscard: Boolean) {
|
||||||
EoPatchRxBus.listen(ActivityResultEvent::class.java)
|
EoPatchRxBus.listen(ActivityResultEvent::class.java)
|
||||||
.doOnSubscribe { startActivityForResult({ EopatchActivity.createIntentForCheckConnection(this, goHomeAfterDiscard) }, 10001) }
|
.doOnSubscribe { startActivityForResult({ EopatchActivity.createIntentForCheckConnection(this, goHomeAfterDiscard) }, 10001) }
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
if (it.requestCode == 10001) {
|
if (it.requestCode == 10001) {
|
||||||
when (it.resultCode) {
|
when (it.resultCode) {
|
||||||
RESULT_OK -> onSuccess.invoke()
|
RESULT_OK -> onSuccess.invoke()
|
||||||
|
|
|
@ -19,21 +19,22 @@ import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchStep
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.EventType
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.EventType
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.databinding.FragmentEopatchOverviewBinding
|
import info.nightscout.androidaps.plugins.pump.eopatch.databinding.FragmentEopatchOverviewBinding
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.fillExtras
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.fillExtras
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.observeOnMainThread
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.subscribeDefault
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.subscribeDefault
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.takeOne
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.takeOne
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.viewmodel.EopatchOverviewViewModel
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.viewmodel.EopatchOverviewViewModel
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.ActivityResultEvent
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.ActivityResultEvent
|
||||||
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class EopatchOverviewFragment: EoBaseFragment<FragmentEopatchOverviewBinding>() {
|
class EopatchOverviewFragment: EoBaseFragment<FragmentEopatchOverviewBinding>() {
|
||||||
@Inject lateinit var rxBus: RxBus
|
@Inject lateinit var rxBus: RxBus
|
||||||
|
@Inject lateinit var aapsSchedulers: AapsSchedulers
|
||||||
|
@Inject lateinit var aapsLogger: AAPSLogger
|
||||||
|
|
||||||
private var disposable: CompositeDisposable = CompositeDisposable()
|
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||||
|
|
||||||
private var mProgressDialog: ProgressDialog? = null
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.fragment_eopatch_overview
|
override fun getLayoutId(): Int = R.layout.fragment_eopatch_overview
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
@ -167,8 +168,8 @@ class EopatchOverviewFragment: EoBaseFragment<FragmentEopatchOverviewBinding>()
|
||||||
override fun checkCommunication(onSuccess: () -> Unit, onCancel: (() -> Unit)?, onDiscard: (() -> Unit)?, goHomeAfterDiscard: Boolean) {
|
override fun checkCommunication(onSuccess: () -> Unit, onCancel: (() -> Unit)?, onDiscard: (() -> Unit)?, goHomeAfterDiscard: Boolean) {
|
||||||
EoPatchRxBus.listen(ActivityResultEvent::class.java)
|
EoPatchRxBus.listen(ActivityResultEvent::class.java)
|
||||||
.doOnSubscribe { startActivityForResult({ EopatchActivity.createIntentForCheckConnection(this, goHomeAfterDiscard) }, 10001) }
|
.doOnSubscribe { startActivityForResult({ EopatchActivity.createIntentForCheckConnection(this, goHomeAfterDiscard) }, 10001) }
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
if (it.requestCode == 10001) {
|
if (it.requestCode == 10001) {
|
||||||
when (it.resultCode) {
|
when (it.resultCode) {
|
||||||
DaggerAppCompatActivity.RESULT_OK -> onSuccess.invoke()
|
DaggerAppCompatActivity.RESULT_OK -> onSuccess.invoke()
|
||||||
|
|
|
@ -14,10 +14,10 @@ import info.nightscout.androidaps.plugins.pump.eopatch.alarm.IAlarmProcess
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.bindingadapters.setOnSafeClickListener
|
import info.nightscout.androidaps.plugins.pump.eopatch.bindingadapters.setOnSafeClickListener
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPatchManager
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPatchManager
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.databinding.DialogAlarmBinding
|
import info.nightscout.androidaps.plugins.pump.eopatch.databinding.DialogAlarmBinding
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.observeOnMainThread
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.AlarmHelperActivity
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.AlarmHelperActivity
|
||||||
import info.nightscout.androidaps.services.AlarmSoundServiceHelper
|
import info.nightscout.androidaps.services.AlarmSoundServiceHelper
|
||||||
import info.nightscout.androidaps.utils.T
|
import info.nightscout.androidaps.utils.T
|
||||||
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -28,6 +28,7 @@ class AlarmDialog : DaggerDialogFragment() {
|
||||||
@Inject lateinit var aapsLogger: AAPSLogger
|
@Inject lateinit var aapsLogger: AAPSLogger
|
||||||
@Inject lateinit var patchManager: IPatchManager
|
@Inject lateinit var patchManager: IPatchManager
|
||||||
@Inject lateinit var rxBus: RxBus
|
@Inject lateinit var rxBus: RxBus
|
||||||
|
@Inject lateinit var aapsSchedulers: AapsSchedulers
|
||||||
|
|
||||||
var helperActivity: AlarmHelperActivity? = null
|
var helperActivity: AlarmHelperActivity? = null
|
||||||
var alarmCode: AlarmCode? = null
|
var alarmCode: AlarmCode? = null
|
||||||
|
@ -111,7 +112,7 @@ class AlarmDialog : DaggerDialogFragment() {
|
||||||
startAlarm()
|
startAlarm()
|
||||||
|
|
||||||
disposable = patchManager.observePatchLifeCycle()
|
disposable = patchManager.observePatchLifeCycle()
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe {
|
.subscribe {
|
||||||
if(it.isShutdown) {
|
if(it.isShutdown) {
|
||||||
activity?.finish()
|
activity?.finish()
|
||||||
|
|
|
@ -1,24 +1,22 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.eopatch.ui.viewmodel
|
package info.nightscout.androidaps.plugins.pump.eopatch.ui.viewmodel
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.Transformations
|
import androidx.lifecycle.Transformations
|
||||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
|
||||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.R
|
import info.nightscout.androidaps.plugins.pump.eopatch.R
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.BleConnectionState
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPatchManager
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPatchManager
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPreferenceManager
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPreferenceManager
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.EventType
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.EventType
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.observeOnMainThread
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.BleConnectionState
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.with
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.EoBaseNavigator
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.EoBaseNavigator
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.event.UIEvent
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.event.SingleLiveEvent
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.event.SingleLiveEvent
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.event.UIEvent
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.Alarms
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.Alarms
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchConfig
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchConfig
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchState
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchState
|
||||||
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||||
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
@ -26,11 +24,11 @@ import javax.inject.Inject
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
class EopatchOverviewViewModel @Inject constructor(
|
class EopatchOverviewViewModel @Inject constructor(
|
||||||
private val context: Context,
|
private val rh: ResourceHelper,
|
||||||
val patchManager: IPatchManager,
|
val patchManager: IPatchManager,
|
||||||
val preferenceManager: IPreferenceManager,
|
private val preferenceManager: IPreferenceManager,
|
||||||
val profileFunction: ProfileFunction,
|
private val profileFunction: ProfileFunction,
|
||||||
val activePlugin: ActivePlugin
|
private val aapsSchedulers: AapsSchedulers
|
||||||
) : EoBaseViewModel<EoBaseNavigator>() {
|
) : EoBaseViewModel<EoBaseNavigator>() {
|
||||||
private val _eventHandler = SingleLiveEvent<UIEvent<EventType>>()
|
private val _eventHandler = SingleLiveEvent<UIEvent<EventType>>()
|
||||||
val UIEventTypeHandler : LiveData<UIEvent<EventType>>
|
val UIEventTypeHandler : LiveData<UIEvent<EventType>>
|
||||||
|
@ -82,12 +80,12 @@ class EopatchOverviewViewModel @Inject constructor(
|
||||||
|
|
||||||
init {
|
init {
|
||||||
preferenceManager.observePatchConfig()
|
preferenceManager.observePatchConfig()
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe { _patchConfig.value = it }
|
.subscribe { _patchConfig.value = it }
|
||||||
.addTo()
|
.addTo()
|
||||||
|
|
||||||
preferenceManager.observePatchState()
|
preferenceManager.observePatchState()
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe {
|
.subscribe {
|
||||||
_patchState.value = it
|
_patchState.value = it
|
||||||
_patchRemainingInsulin.value = it.remainedInsulin
|
_patchRemainingInsulin.value = it.remainedInsulin
|
||||||
|
@ -97,25 +95,25 @@ class EopatchOverviewViewModel @Inject constructor(
|
||||||
.addTo()
|
.addTo()
|
||||||
|
|
||||||
patchManager.observePatchConnectionState()
|
patchManager.observePatchConnectionState()
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe {
|
.subscribe {
|
||||||
_bleStatus.value = when(it){
|
_bleStatus.value = when(it){
|
||||||
BleConnectionState.CONNECTED -> "{fa-bluetooth}"
|
BleConnectionState.CONNECTED -> "{fa-bluetooth}"
|
||||||
BleConnectionState.DISCONNECTED -> "{fa-bluetooth-b}"
|
BleConnectionState.DISCONNECTED -> "{fa-bluetooth-b}"
|
||||||
else -> "{fa-bluetooth-b spin} ${context.getString(R.string.string_connecting)}"
|
else -> "{fa-bluetooth-b spin} ${rh.gs(R.string.string_connecting)}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.addTo()
|
.addTo()
|
||||||
|
|
||||||
patchManager.observePatchLifeCycle()
|
patchManager.observePatchLifeCycle()
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe {
|
.subscribe {
|
||||||
updatePatchStatus()
|
updatePatchStatus()
|
||||||
}
|
}
|
||||||
.addTo()
|
.addTo()
|
||||||
|
|
||||||
preferenceManager.observeAlarm()
|
preferenceManager.observeAlarm()
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe {
|
.subscribe {
|
||||||
_alarms.value = it
|
_alarms.value = it
|
||||||
}
|
}
|
||||||
|
@ -135,10 +133,10 @@ class EopatchOverviewViewModel @Inject constructor(
|
||||||
val h = TimeUnit.MILLISECONDS.toHours(remainTimeMillis)
|
val h = TimeUnit.MILLISECONDS.toHours(remainTimeMillis)
|
||||||
val m = TimeUnit.MILLISECONDS.toMinutes(remainTimeMillis - TimeUnit.HOURS.toMillis(h))
|
val m = TimeUnit.MILLISECONDS.toMinutes(remainTimeMillis - TimeUnit.HOURS.toMillis(h))
|
||||||
_status.value = if(patchManager.patchState.isNormalBasalPaused)
|
_status.value = if(patchManager.patchState.isNormalBasalPaused)
|
||||||
"${context.getString(R.string.string_suspended)}\n" +
|
"${rh.gs(R.string.string_suspended)}\n" +
|
||||||
"${context.getString(R.string.string_temp_basal_remained_hhmm, h.toString(), m.toString())}"
|
"${rh.gs(R.string.string_temp_basal_remained_hhmm, h.toString(), m.toString())}"
|
||||||
else
|
else
|
||||||
context.getString(R.string.string_running)
|
rh.gs(R.string.string_running)
|
||||||
}else{
|
}else{
|
||||||
_status.value = ""
|
_status.value = ""
|
||||||
}
|
}
|
||||||
|
@ -190,7 +188,8 @@ class EopatchOverviewViewModel @Inject constructor(
|
||||||
|
|
||||||
fun pauseBasal(pauseDurationHour: Float){
|
fun pauseBasal(pauseDurationHour: Float){
|
||||||
patchManager.pauseBasal(pauseDurationHour)
|
patchManager.pauseBasal(pauseDurationHour)
|
||||||
.with()
|
.subscribeOn(aapsSchedulers.io)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe({
|
.subscribe({
|
||||||
if (it.isSuccess) {
|
if (it.isSuccess) {
|
||||||
navigator?.toast(R.string.string_suspended_insulin_delivery_message)
|
navigator?.toast(R.string.string_suspended_insulin_delivery_message)
|
||||||
|
@ -205,7 +204,8 @@ class EopatchOverviewViewModel @Inject constructor(
|
||||||
|
|
||||||
fun resumeBasal() {
|
fun resumeBasal() {
|
||||||
patchManager.resumeBasal()
|
patchManager.resumeBasal()
|
||||||
.with()
|
.subscribeOn(aapsSchedulers.io)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe({
|
.subscribe({
|
||||||
if (it.isSuccess) {
|
if (it.isSuccess) {
|
||||||
navigator?.toast(R.string.string_resumed_insulin_delivery_message)
|
navigator?.toast(R.string.string_resumed_insulin_delivery_message)
|
||||||
|
@ -221,7 +221,7 @@ class EopatchOverviewViewModel @Inject constructor(
|
||||||
private fun startPeriodicallyUpdate(){
|
private fun startPeriodicallyUpdate(){
|
||||||
if(mDisposable == null) {
|
if(mDisposable == null) {
|
||||||
mDisposable = Observable.interval(30, TimeUnit.SECONDS)
|
mDisposable = Observable.interval(30, TimeUnit.SECONDS)
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe { updatePatchStatus() }
|
.subscribe { updatePatchStatus() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,37 +1,40 @@
|
||||||
package info.nightscout.androidaps.plugins.pump.eopatch.ui.viewmodel
|
package info.nightscout.androidaps.plugins.pump.eopatch.ui.viewmodel
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.Transformations
|
import androidx.lifecycle.Transformations
|
||||||
import info.nightscout.shared.logging.AAPSLogger
|
|
||||||
import info.nightscout.shared.logging.LTag
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.CommonUtils
|
import info.nightscout.androidaps.plugins.pump.eopatch.CommonUtils
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.R
|
import info.nightscout.androidaps.plugins.pump.eopatch.R
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.RxAction
|
import info.nightscout.androidaps.plugins.pump.eopatch.RxAction
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.alarm.AlarmCode
|
import info.nightscout.androidaps.plugins.pump.eopatch.alarm.AlarmCode
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.alarm.IAlarmRegistry
|
import info.nightscout.androidaps.plugins.pump.eopatch.alarm.IAlarmRegistry
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.BleConnectionState
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.define.IPatchConstant
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPatchManager
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.IPatchManager
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.PatchSelfTestResult.*
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.EventType
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchLifecycle
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchLifecycle
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchStep
|
import info.nightscout.androidaps.plugins.pump.eopatch.code.PatchStep
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.code.EventType
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.define.IPatchConstant
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.extension.*
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.BleConnectionState
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.core.scan.PatchSelfTestResult.TEST_SUCCESS
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.getDiffDays
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.subscribeDefault
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.subscribeEmpty
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.extension.takeOne
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.EoBaseNavigator
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.EoBaseNavigator
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.event.UIEvent
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.event.SingleLiveEvent
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.event.SingleLiveEvent
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchLifecycleEvent
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.event.UIEvent
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ui.viewmodel.EopatchViewModel.SetupStep.*
|
import info.nightscout.androidaps.plugins.pump.eopatch.ui.viewmodel.EopatchViewModel.SetupStep.*
|
||||||
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchLifecycleEvent
|
||||||
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||||
|
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||||
|
import info.nightscout.shared.logging.AAPSLogger
|
||||||
|
import info.nightscout.shared.logging.LTag
|
||||||
import io.reactivex.Maybe
|
import io.reactivex.Maybe
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.subjects.PublishSubject
|
import io.reactivex.subjects.PublishSubject
|
||||||
import java.lang.ref.WeakReference
|
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import java.util.concurrent.TimeoutException
|
import java.util.concurrent.TimeoutException
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -39,10 +42,12 @@ import kotlin.math.abs
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
class EopatchViewModel @Inject constructor(
|
class EopatchViewModel @Inject constructor(
|
||||||
private val context: Context,
|
private val rh: ResourceHelper,
|
||||||
val patchManager: IPatchManager,
|
val patchManager: IPatchManager,
|
||||||
private val alarmRegistry: IAlarmRegistry,
|
private val alarmRegistry: IAlarmRegistry,
|
||||||
private val aapsLogger: AAPSLogger
|
private val aapsLogger: AAPSLogger,
|
||||||
|
private val aapsSchedulers: AapsSchedulers,
|
||||||
|
private val rxAction: RxAction
|
||||||
) : EoBaseViewModel<EoBaseNavigator>() {
|
) : EoBaseViewModel<EoBaseNavigator>() {
|
||||||
companion object {
|
companion object {
|
||||||
private const val MAX_ELAPSED_MILLIS_AFTER_EXPIRATION = -12L * 60 * 60 * 1000
|
private const val MAX_ELAPSED_MILLIS_AFTER_EXPIRATION = -12L * 60 * 60 * 1000
|
||||||
|
@ -64,11 +69,6 @@ class EopatchViewModel @Inject constructor(
|
||||||
_eventHandler.postValue(UIEvent(EventType.ACTIVTION_CLICKED))
|
_eventHandler.postValue(UIEvent(EventType.ACTIVTION_CLICKED))
|
||||||
}
|
}
|
||||||
|
|
||||||
private val mContentRef = WeakReference(context)
|
|
||||||
|
|
||||||
private val mContext: Context?
|
|
||||||
get() = mContentRef.get()
|
|
||||||
|
|
||||||
val patchStep = MutableLiveData<PatchStep>()
|
val patchStep = MutableLiveData<PatchStep>()
|
||||||
|
|
||||||
val isActivated = MutableLiveData<Boolean>(patchManager.isActivated)
|
val isActivated = MutableLiveData<Boolean>(patchManager.isActivated)
|
||||||
|
@ -123,7 +123,7 @@ class EopatchViewModel @Inject constructor(
|
||||||
|
|
||||||
val commCheckCancelLabel: LiveData<String>
|
val commCheckCancelLabel: LiveData<String>
|
||||||
get() = Transformations.map(patchStep) {
|
get() = Transformations.map(patchStep) {
|
||||||
mContext?.getString(when (it) {
|
rh.gs(when (it) {
|
||||||
PatchStep.CONNECT_NEW -> {
|
PatchStep.CONNECT_NEW -> {
|
||||||
isBonded.takeOne(R.string.cancel, R.string.patch_cancel_pairing)
|
isBonded.takeOne(R.string.cancel, R.string.patch_cancel_pairing)
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ class EopatchViewModel @Inject constructor(
|
||||||
|
|
||||||
val programEnabledMessage: String
|
val programEnabledMessage: String
|
||||||
// get() = """'기초1' program has been enabled."""
|
// get() = """'기초1' program has been enabled."""
|
||||||
get() = mContext?.getString(R.string.patch_basal_schedule_desc_1,"기초1") ?: ""
|
get() = rh.gs(R.string.patch_basal_schedule_desc_1,"기초1") ?: ""
|
||||||
|
|
||||||
val patchStepIsSafeDeactivation: Boolean
|
val patchStepIsSafeDeactivation: Boolean
|
||||||
get() = patchStep.value?.isSafeDeactivation ?: false
|
get() = patchStep.value?.isSafeDeactivation ?: false
|
||||||
|
@ -181,13 +181,13 @@ class EopatchViewModel @Inject constructor(
|
||||||
.throttleFirst(500, TimeUnit.MILLISECONDS)
|
.throttleFirst(500, TimeUnit.MILLISECONDS)
|
||||||
.delay(100, TimeUnit.MILLISECONDS)
|
.delay(100, TimeUnit.MILLISECONDS)
|
||||||
.filter { isSubStepRunning }
|
.filter { isSubStepRunning }
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.flatMapMaybe { alarmRegistry.remove(AlarmCode.B012) }
|
.flatMapMaybe { alarmRegistry.remove(AlarmCode.B012) }
|
||||||
.flatMapMaybe { alarmRegistry.add(AlarmCode.B012, TimeUnit.MINUTES.toMillis(3)) }
|
.flatMapMaybe { alarmRegistry.add(AlarmCode.B012, TimeUnit.MINUTES.toMillis(3)) }
|
||||||
.subscribeDefault {}
|
.subscribe()
|
||||||
|
|
||||||
patchManager.observePatchLifeCycle()
|
patchManager.observePatchLifeCycle()
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.subscribe {
|
.subscribe {
|
||||||
isActivated.value = patchManager.isActivated
|
isActivated.value = patchManager.isActivated
|
||||||
}
|
}
|
||||||
|
@ -213,9 +213,9 @@ class EopatchViewModel @Inject constructor(
|
||||||
CommonUtils.dispose(mUpdateDisposable)
|
CommonUtils.dispose(mUpdateDisposable)
|
||||||
|
|
||||||
mUpdateDisposable = Observable.interval(0, 1, TimeUnit.SECONDS)
|
mUpdateDisposable = Observable.interval(0, 1, TimeUnit.SECONDS)
|
||||||
.observeOnMainThread()
|
.observeOn(aapsSchedulers.main)
|
||||||
.takeUntil { !patchConfig.isActivated }
|
.takeUntil { !patchConfig.isActivated }
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
_patchExpirationTimestamp.value = patchManager.patchExpiredTime
|
_patchExpirationTimestamp.value = patchManager.patchExpiredTime
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -275,12 +275,13 @@ class EopatchViewModel @Inject constructor(
|
||||||
}
|
}
|
||||||
.retry(1)
|
.retry(1)
|
||||||
}
|
}
|
||||||
.with()
|
.subscribeOn(aapsSchedulers.io)
|
||||||
|
.observeOn(aapsSchedulers.main)
|
||||||
.onErrorReturnItem(false)
|
.onErrorReturnItem(false)
|
||||||
.doOnSubscribe { showPatchCommCheckDialog() }
|
.doOnSubscribe { showPatchCommCheckDialog() }
|
||||||
.doFinally { dismissPatchCommCheckDialog() }
|
.doFinally { dismissPatchCommCheckDialog() }
|
||||||
.doOnError { aapsLogger.error(LTag.PUMP, it.message?:"Error") }
|
.doOnError { aapsLogger.error(LTag.PUMP, it.message?:"Error") }
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
_isCommCheckFailed.value = !it
|
_isCommCheckFailed.value = !it
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -623,11 +624,11 @@ class EopatchViewModel @Inject constructor(
|
||||||
.doFinally {
|
.doFinally {
|
||||||
dismissProgressDialog()
|
dismissProgressDialog()
|
||||||
}
|
}
|
||||||
.subscribeDefault { status ->
|
.subscribeDefault(aapsLogger) { status ->
|
||||||
if (status.isDeactivated) {
|
if (status.isDeactivated) {
|
||||||
onSuccessListener.invoke()
|
onSuccessListener.invoke()
|
||||||
} else {
|
} else {
|
||||||
RxAction.runOnMainThread({
|
rxAction.runOnMainThread({
|
||||||
checkCommunication({ deactivate(false, onSuccessListener) },
|
checkCommunication({ deactivate(false, onSuccessListener) },
|
||||||
{ _eventHandler.postValue(UIEvent(EventType.FINISH_ACTIVITY)) })
|
{ _eventHandler.postValue(UIEvent(EventType.FINISH_ACTIVITY)) })
|
||||||
}, 100)
|
}, 100)
|
||||||
|
@ -673,7 +674,7 @@ class EopatchViewModel @Inject constructor(
|
||||||
}
|
}
|
||||||
.onErrorReturnItem("")
|
.onErrorReturnItem("")
|
||||||
.doOnSubscribe { updateSetupStep(SCAN_STARTED) }
|
.doOnSubscribe { updateSetupStep(SCAN_STARTED) }
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
if (!it.isNullOrEmpty()) {
|
if (!it.isNullOrEmpty()) {
|
||||||
startBond(it)
|
startBond(it)
|
||||||
} else {
|
} else {
|
||||||
|
@ -698,7 +699,7 @@ class EopatchViewModel @Inject constructor(
|
||||||
updateSetupStep(BONDING_FAILED)
|
updateSetupStep(BONDING_FAILED)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
if (it) {
|
if (it) {
|
||||||
getPatchInfo()
|
getPatchInfo()
|
||||||
} else {
|
} else {
|
||||||
|
@ -712,7 +713,7 @@ class EopatchViewModel @Inject constructor(
|
||||||
patchManager.getPatchInfo(timeout)
|
patchManager.getPatchInfo(timeout)
|
||||||
.doOnSubscribe { updateSetupStep(GET_PATCH_INFO_STARTED) }
|
.doOnSubscribe { updateSetupStep(GET_PATCH_INFO_STARTED) }
|
||||||
.onErrorReturnItem(false)
|
.onErrorReturnItem(false)
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
if (it) {
|
if (it) {
|
||||||
selfTest(delayMs = 1000)
|
selfTest(delayMs = 1000)
|
||||||
} else {
|
} else {
|
||||||
|
@ -723,12 +724,12 @@ class EopatchViewModel @Inject constructor(
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
fun selfTest(timeout: Long = 20000, delayMs: Long = 0) {
|
fun selfTest(timeout: Long = 20000, delayMs: Long = 0) {
|
||||||
RxAction.runOnMainThread({
|
rxAction.runOnMainThread({
|
||||||
patchManager.selfTest(timeout)
|
patchManager.selfTest(timeout)
|
||||||
.doOnSubscribe { updateSetupStep(SELF_TEST_STARTED) }
|
.doOnSubscribe { updateSetupStep(SELF_TEST_STARTED) }
|
||||||
.map { it == TEST_SUCCESS }
|
.map { it == TEST_SUCCESS }
|
||||||
.onErrorReturnItem(false)
|
.onErrorReturnItem(false)
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
if (it) {
|
if (it) {
|
||||||
moveStep(PatchStep.REMOVE_NEEDLE_CAP)
|
moveStep(PatchStep.REMOVE_NEEDLE_CAP)
|
||||||
} else if (!patchManager.patchConnectionState.isConnected) {
|
} else if (!patchManager.patchConnectionState.isConnected) {
|
||||||
|
@ -777,7 +778,7 @@ class EopatchViewModel @Inject constructor(
|
||||||
updateSetupStep(NEEDLE_SENSING_STARTED)
|
updateSetupStep(NEEDLE_SENSING_STARTED)
|
||||||
}
|
}
|
||||||
.onErrorReturnItem(false)
|
.onErrorReturnItem(false)
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
if (it) {
|
if (it) {
|
||||||
startActivation()
|
startActivation()
|
||||||
} else {
|
} else {
|
||||||
|
@ -798,7 +799,7 @@ class EopatchViewModel @Inject constructor(
|
||||||
}
|
}
|
||||||
.doFinally { dismissProgressDialog() }
|
.doFinally { dismissProgressDialog() }
|
||||||
.onErrorReturnItem(false)
|
.onErrorReturnItem(false)
|
||||||
.subscribeDefault {
|
.subscribeDefault(aapsLogger) {
|
||||||
if (it) {
|
if (it) {
|
||||||
moveStep(PatchStep.COMPLETE)
|
moveStep(PatchStep.COMPLETE)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -12,16 +12,19 @@ interface AapsSchedulers {
|
||||||
val main: Scheduler
|
val main: Scheduler
|
||||||
val io: Scheduler
|
val io: Scheduler
|
||||||
val cpu: Scheduler
|
val cpu: Scheduler
|
||||||
|
val newThread: Scheduler
|
||||||
}
|
}
|
||||||
|
|
||||||
class DefaultAapsSchedulers : AapsSchedulers {
|
class DefaultAapsSchedulers : AapsSchedulers {
|
||||||
override val main: Scheduler = AndroidSchedulers.mainThread()
|
override val main: Scheduler = AndroidSchedulers.mainThread()
|
||||||
override val io: Scheduler = Schedulers.io()
|
override val io: Scheduler = Schedulers.io()
|
||||||
override val cpu: Scheduler = Schedulers.computation()
|
override val cpu: Scheduler = Schedulers.computation()
|
||||||
|
override val newThread: Scheduler = Schedulers.newThread()
|
||||||
}
|
}
|
||||||
|
|
||||||
class TestAapsSchedulers : AapsSchedulers {
|
class TestAapsSchedulers : AapsSchedulers {
|
||||||
override val main: Scheduler = Schedulers.trampoline()
|
override val main: Scheduler = Schedulers.trampoline()
|
||||||
override val io: Scheduler = Schedulers.trampoline()
|
override val io: Scheduler = Schedulers.trampoline()
|
||||||
override val cpu: Scheduler = Schedulers.trampoline()
|
override val cpu: Scheduler = Schedulers.trampoline()
|
||||||
|
override val newThread: Scheduler = Schedulers.trampoline()
|
||||||
}
|
}
|
Loading…
Reference in a new issue