Add support for SensorStartedAt extra in xDrip+ BG source
This commit is contained in:
parent
56937dc704
commit
faeddef68e
2 changed files with 28 additions and 3 deletions
|
@ -25,6 +25,7 @@ interface Intents {
|
||||||
const val EXTRA_BG_SLOPE = "com.eveningoutpost.dexdrip.Extras.BgSlope"
|
const val EXTRA_BG_SLOPE = "com.eveningoutpost.dexdrip.Extras.BgSlope"
|
||||||
const val EXTRA_BG_SLOPE_NAME = "com.eveningoutpost.dexdrip.Extras.BgSlopeName"
|
const val EXTRA_BG_SLOPE_NAME = "com.eveningoutpost.dexdrip.Extras.BgSlopeName"
|
||||||
const val EXTRA_SENSOR_BATTERY = "com.eveningoutpost.dexdrip.Extras.SensorBattery"
|
const val EXTRA_SENSOR_BATTERY = "com.eveningoutpost.dexdrip.Extras.SensorBattery"
|
||||||
|
const val EXTRA_SENSOR_STARTED_AT = "com.eveningoutpost.dexdrip.Extras.SensorStartedAt"
|
||||||
const val EXTRA_TIMESTAMP = "com.eveningoutpost.dexdrip.Extras.Time"
|
const val EXTRA_TIMESTAMP = "com.eveningoutpost.dexdrip.Extras.Time"
|
||||||
const val EXTRA_RAW = "com.eveningoutpost.dexdrip.Extras.Raw"
|
const val EXTRA_RAW = "com.eveningoutpost.dexdrip.Extras.Raw"
|
||||||
const val XDRIP_DATA_SOURCE_DESCRIPTION = "com.eveningoutpost.dexdrip.Extras.SourceDesc"
|
const val XDRIP_DATA_SOURCE_DESCRIPTION = "com.eveningoutpost.dexdrip.Extras.SourceDesc"
|
||||||
|
|
|
@ -5,6 +5,7 @@ import androidx.work.WorkerParameters
|
||||||
import androidx.work.workDataOf
|
import androidx.work.workDataOf
|
||||||
import app.aaps.core.interfaces.logging.AAPSLogger
|
import app.aaps.core.interfaces.logging.AAPSLogger
|
||||||
import app.aaps.core.interfaces.logging.LTag
|
import app.aaps.core.interfaces.logging.LTag
|
||||||
|
import app.aaps.core.interfaces.logging.UserEntryLogger
|
||||||
import app.aaps.core.interfaces.plugin.PluginBase
|
import app.aaps.core.interfaces.plugin.PluginBase
|
||||||
import app.aaps.core.interfaces.plugin.PluginDescription
|
import app.aaps.core.interfaces.plugin.PluginDescription
|
||||||
import app.aaps.core.interfaces.plugin.PluginType
|
import app.aaps.core.interfaces.plugin.PluginType
|
||||||
|
@ -12,9 +13,14 @@ import app.aaps.core.interfaces.receivers.Intents
|
||||||
import app.aaps.core.interfaces.resources.ResourceHelper
|
import app.aaps.core.interfaces.resources.ResourceHelper
|
||||||
import app.aaps.core.interfaces.source.BgSource
|
import app.aaps.core.interfaces.source.BgSource
|
||||||
import app.aaps.core.interfaces.source.XDripSource
|
import app.aaps.core.interfaces.source.XDripSource
|
||||||
|
import app.aaps.core.interfaces.utils.DateUtil
|
||||||
|
import app.aaps.core.interfaces.utils.T
|
||||||
import app.aaps.core.main.utils.worker.LoggingWorker
|
import app.aaps.core.main.utils.worker.LoggingWorker
|
||||||
import app.aaps.core.utils.receivers.DataWorkerStorage
|
import app.aaps.core.utils.receivers.DataWorkerStorage
|
||||||
import app.aaps.database.entities.GlucoseValue
|
import app.aaps.database.entities.GlucoseValue
|
||||||
|
import app.aaps.database.entities.UserEntry.Action
|
||||||
|
import app.aaps.database.entities.UserEntry.Sources
|
||||||
|
import app.aaps.database.entities.ValueWithUnit
|
||||||
import app.aaps.database.impl.AppRepository
|
import app.aaps.database.impl.AppRepository
|
||||||
import app.aaps.database.impl.transactions.CgmSourceTransaction
|
import app.aaps.database.impl.transactions.CgmSourceTransaction
|
||||||
import app.aaps.database.transactions.TransactionGlucoseValue
|
import app.aaps.database.transactions.TransactionGlucoseValue
|
||||||
|
@ -22,6 +28,7 @@ import dagger.android.HasAndroidInjector
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
import kotlin.math.abs
|
||||||
import kotlin.math.round
|
import kotlin.math.round
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
|
@ -63,8 +70,10 @@ class XdripSourcePlugin @Inject constructor(
|
||||||
) : LoggingWorker(context, params, Dispatchers.IO) {
|
) : LoggingWorker(context, params, Dispatchers.IO) {
|
||||||
|
|
||||||
@Inject lateinit var xdripSourcePlugin: XdripSourcePlugin
|
@Inject lateinit var xdripSourcePlugin: XdripSourcePlugin
|
||||||
|
@Inject lateinit var dateUtil: DateUtil
|
||||||
@Inject lateinit var repository: AppRepository
|
@Inject lateinit var repository: AppRepository
|
||||||
@Inject lateinit var dataWorkerStorage: DataWorkerStorage
|
@Inject lateinit var dataWorkerStorage: DataWorkerStorage
|
||||||
|
@Inject lateinit var uel: UserEntryLogger
|
||||||
|
|
||||||
override suspend fun doWorkAndLog(): Result {
|
override suspend fun doWorkAndLog(): Result {
|
||||||
var ret = Result.success()
|
var ret = Result.success()
|
||||||
|
@ -86,17 +95,32 @@ class XdripSourcePlugin @Inject constructor(
|
||||||
?: ""
|
?: ""
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
repository.runTransactionForResult(CgmSourceTransaction(glucoseValues, emptyList(), null))
|
val now = dateUtil.now()
|
||||||
|
var sensorStartTime: Long? = bundle.getLong(Intents.EXTRA_SENSOR_STARTED_AT, 0)
|
||||||
|
// check start time validity
|
||||||
|
sensorStartTime?.let {
|
||||||
|
if (abs(it - now) > T.months(1).msecs() || it > now) sensorStartTime = null
|
||||||
|
}
|
||||||
|
repository.runTransactionForResult(CgmSourceTransaction(glucoseValues, emptyList(), sensorStartTime))
|
||||||
.doOnError {
|
.doOnError {
|
||||||
aapsLogger.error(LTag.DATABASE, "Error while saving values from Xdrip", it)
|
aapsLogger.error(LTag.DATABASE, "Error while saving values from Xdrip", it)
|
||||||
ret = Result.failure(workDataOf("Error" to it.toString()))
|
ret = Result.failure(workDataOf("Error" to it.toString()))
|
||||||
}
|
}
|
||||||
.blockingGet()
|
.blockingGet()
|
||||||
.also { savedValues ->
|
.also { result ->
|
||||||
savedValues.all().forEach {
|
result.all().forEach {
|
||||||
xdripSourcePlugin.detectSource(it)
|
xdripSourcePlugin.detectSource(it)
|
||||||
aapsLogger.debug(LTag.DATABASE, "Inserted bg $it")
|
aapsLogger.debug(LTag.DATABASE, "Inserted bg $it")
|
||||||
}
|
}
|
||||||
|
result.sensorInsertionsInserted.forEach {
|
||||||
|
uel.log(
|
||||||
|
Action.CAREPORTAL,
|
||||||
|
Sources.Xdrip,
|
||||||
|
ValueWithUnit.Timestamp(it.timestamp),
|
||||||
|
ValueWithUnit.TherapyEventType(it.type)
|
||||||
|
)
|
||||||
|
aapsLogger.debug(LTag.DATABASE, "Inserted sensor insertion $it")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
xdripSourcePlugin.sensorBatteryLevel = bundle.getInt(Intents.EXTRA_SENSOR_BATTERY, -1)
|
xdripSourcePlugin.sensorBatteryLevel = bundle.getInt(Intents.EXTRA_SENSOR_BATTERY, -1)
|
||||||
return ret
|
return ret
|
||||||
|
|
Loading…
Reference in a new issue