Merge pull request #2531 from jbr7rr/dash-fix-long-0temp

Dash: Workaround for long 0temp
This commit is contained in:
Milos Kozak 2023-05-09 11:58:19 +02:00 committed by GitHub
commit 4a1ed1f584
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 5 deletions

View file

@ -22,10 +22,15 @@ object ProgramTempBasalUtil {
fun mapTempBasalToTenthPulsesPerSlot(durationInSlots: Int, rateInUnitsPerHour: Double): ShortArray { fun mapTempBasalToTenthPulsesPerSlot(durationInSlots: Int, rateInUnitsPerHour: Double): ShortArray {
val pulsesPerHour = (rateInUnitsPerHour * 20).roundToInt().toShort() val pulsesPerHour = (rateInUnitsPerHour * 20).roundToInt().toShort()
val tenthPulsesPerSlot = ShortArray(durationInSlots) val tenthPulsesPerSlot = ShortArray(durationInSlots)
var i = 0 val tenthPulsesPerSlotShort = if (pulsesPerHour == 0.toShort() && durationInSlots > 4) {
while (durationInSlots > i) { // Workaround for 0.0 U/h long temp basals being cancelled by pod
tenthPulsesPerSlot[i] = (roundToHalf(pulsesPerHour / 2.0) * 10).toInt().toShort() // This will result in a 0.01 U/h temp basal for 0temps > 120 minutes
i++ 1.toShort()
} else {
(roundToHalf(pulsesPerHour / 2.0) * 10).toInt().toShort()
}
for (i in tenthPulsesPerSlot.indices) {
tenthPulsesPerSlot[i] = tenthPulsesPerSlotShort
} }
return tenthPulsesPerSlot return tenthPulsesPerSlot
} }

View file

@ -35,7 +35,39 @@ class ProgramTempBasalCommandTest {
.build() .build()
Assert.assertArrayEquals( Assert.assertArrayEquals(
Hex.decodeHex("024200011C201A0E494E532E0100820A384000009000160EC000000A6B49D200000AEB49D20001DE"), Hex.decodeHex("024200011C201A0E494E532E0100820A384000009000160EC000000A6B49D200000A6B49D20001E3"),
command.encoded
)
}
@Test @Throws(DecoderException::class) fun testZeroTempBasalShort() {
val command = ProgramTempBasalCommand.Builder()
.setUniqueId(37879809)
.setNonce(1229869870)
.setSequenceNumber(7.toShort())
.setRateInUnitsPerHour(0.0)
.setDurationInMinutes(30.toShort())
.setProgramReminder(ProgramReminder(true, true, 0.toByte()))
.build()
Assert.assertArrayEquals(
Hex.decodeHex("024200011C201A0E494E532E01007901384000000000160EC00000016B49D2000001EB49D200815B"),
command.encoded
)
}
@Test @Throws(DecoderException::class) fun testZeroTempBasalVeryLong() {
val command = ProgramTempBasalCommand.Builder()
.setUniqueId(37879809)
.setNonce(1229869870)
.setSequenceNumber(7.toShort())
.setRateInUnitsPerHour(0.0)
.setDurationInMinutes(720.toShort())
.setProgramReminder(ProgramReminder(true, true, 0.toByte()))
.build()
Assert.assertArrayEquals(
Hex.decodeHex("024200011C221A10494E532E0100901838400000F0007000160EC00000186B49D20000186B49D2000132"),
command.encoded command.encoded
) )
} }