G5: Fix double BG value after calibration
This commit is contained in:
parent
cad15dc88f
commit
0603e741be
1 changed files with 20 additions and 14 deletions
|
@ -104,20 +104,6 @@ class DexcomPlugin @Inject constructor(
|
||||||
"G5" -> GlucoseValue.SourceSensor.DEXCOM_G5_NATIVE
|
"G5" -> GlucoseValue.SourceSensor.DEXCOM_G5_NATIVE
|
||||||
else -> GlucoseValue.SourceSensor.DEXCOM_NATIVE_UNKNOWN
|
else -> GlucoseValue.SourceSensor.DEXCOM_NATIVE_UNKNOWN
|
||||||
}
|
}
|
||||||
val glucoseValuesBundle = bundle.getBundle("glucoseValues")
|
|
||||||
?: return Result.failure(workDataOf("Error" to "missing glucoseValues"))
|
|
||||||
val glucoseValues = mutableListOf<CgmSourceTransaction.TransactionGlucoseValue>()
|
|
||||||
for (i in 0 until glucoseValuesBundle.size()) {
|
|
||||||
val glucoseValueBundle = glucoseValuesBundle.getBundle(i.toString())!!
|
|
||||||
glucoseValues += CgmSourceTransaction.TransactionGlucoseValue(
|
|
||||||
timestamp = glucoseValueBundle.getLong("timestamp") * 1000,
|
|
||||||
value = glucoseValueBundle.getInt("glucoseValue").toDouble(),
|
|
||||||
noise = null,
|
|
||||||
raw = null,
|
|
||||||
trendArrow = GlucoseValue.TrendArrow.fromString(glucoseValueBundle.getString("trendArrow")!!),
|
|
||||||
sourceSensor = sourceSensor
|
|
||||||
)
|
|
||||||
}
|
|
||||||
val calibrations = mutableListOf<CgmSourceTransaction.Calibration>()
|
val calibrations = mutableListOf<CgmSourceTransaction.Calibration>()
|
||||||
bundle.getBundle("meters")?.let { meters ->
|
bundle.getBundle("meters")?.let { meters ->
|
||||||
for (i in 0 until meters.size()) {
|
for (i in 0 until meters.size()) {
|
||||||
|
@ -137,6 +123,26 @@ class DexcomPlugin @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val glucoseValuesBundle = bundle.getBundle("glucoseValues")
|
||||||
|
?: return Result.failure(workDataOf("Error" to "missing glucoseValues"))
|
||||||
|
val glucoseValues = mutableListOf<CgmSourceTransaction.TransactionGlucoseValue>()
|
||||||
|
for (i in 0 until glucoseValuesBundle.size()) {
|
||||||
|
val glucoseValueBundle = glucoseValuesBundle.getBundle(i.toString())!!
|
||||||
|
val timestamp = glucoseValueBundle.getLong("timestamp") * 1000
|
||||||
|
// G5 calibration bug workaround (calibration is sent as glucoseValue too)
|
||||||
|
var valid = true
|
||||||
|
if (sourceSensor == GlucoseValue.SourceSensor.DEXCOM_G5_NATIVE)
|
||||||
|
calibrations.forEach { calibration -> if (calibration.timestamp == timestamp) valid = false }
|
||||||
|
if (valid)
|
||||||
|
glucoseValues += CgmSourceTransaction.TransactionGlucoseValue(
|
||||||
|
timestamp = timestamp,
|
||||||
|
value = glucoseValueBundle.getInt("glucoseValue").toDouble(),
|
||||||
|
noise = null,
|
||||||
|
raw = null,
|
||||||
|
trendArrow = GlucoseValue.TrendArrow.fromString(glucoseValueBundle.getString("trendArrow")!!),
|
||||||
|
sourceSensor = sourceSensor
|
||||||
|
)
|
||||||
|
}
|
||||||
val sensorStartTime = if (sp.getBoolean(R.string.key_dexcom_lognssensorchange, false) && bundle.containsKey("sensorInsertionTime")) {
|
val sensorStartTime = if (sp.getBoolean(R.string.key_dexcom_lognssensorchange, false) && bundle.containsKey("sensorInsertionTime")) {
|
||||||
bundle.getLong("sensorInsertionTime", 0) * 1000
|
bundle.getLong("sensorInsertionTime", 0) * 1000
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue