comboctl-main: Fix getBasalProfile() progress report and screen counting

The previous behavior was reading the profile correctly, but the progress
report was off by one factor. Also, blinking screens were considered as
separate ones, causing the short button press based fallback to kick in
unnecessarily often because that blinking screen behavior caused the
main long button press based reading loop to miss the last profile factor.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
This commit is contained in:
Carlos Rafael Giani 2022-12-10 19:18:30 +01:00
parent e06ecaa7d8
commit 16a3b74f50

View file

@ -2743,8 +2743,6 @@ class Pump(
) )
} }
numObservedScreens++
val factorIndexOnScreen = parsedScreen.beginTime.hour val factorIndexOnScreen = parsedScreen.beginTime.hour
// numUnits null means the basal profile factor // numUnits null means the basal profile factor
@ -2752,6 +2750,11 @@ class Pump(
if (parsedScreen.numUnits == null) if (parsedScreen.numUnits == null)
return@longPressRTButtonUntil LongPressRTButtonsCommand.ContinuePressingButton return@longPressRTButtonUntil LongPressRTButtonsCommand.ContinuePressingButton
// Increase this _after_ checking for a blinking screen
// to not accidentally count the blinking and non-blinking
// screens as two separate ones.
numObservedScreens++
// If the factor in the profile is >= 0, // If the factor in the profile is >= 0,
// it means it was already read earlier. // it means it was already read earlier.
if (basalProfileFactors[factorIndexOnScreen] >= 0) if (basalProfileFactors[factorIndexOnScreen] >= 0)
@ -2759,14 +2762,16 @@ class Pump(
val factor = parsedScreen.numUnits val factor = parsedScreen.numUnits
basalProfileFactors[factorIndexOnScreen] = factor basalProfileFactors[factorIndexOnScreen] = factor
logger(LogLevel.DEBUG) { "Got basal profile factor #$factorIndexOnScreen : $factor" }
numRetrievedFactors++
logger(LogLevel.DEBUG) {
"Got basal profile factor #$factorIndexOnScreen : $factor; $numRetrievedFactors factor(s) read and $numObservedScreens screen(s) observed thus far"
}
getBasalProfileReporter.setCurrentProgressStage( getBasalProfileReporter.setCurrentProgressStage(
RTCommandProgressStage.GettingBasalProfile(numRetrievedFactors) RTCommandProgressStage.GettingBasalProfile(numRetrievedFactors)
) )
numRetrievedFactors++
return@longPressRTButtonUntil if (numObservedScreens >= NUM_COMBO_BASAL_PROFILE_FACTORS) return@longPressRTButtonUntil if (numObservedScreens >= NUM_COMBO_BASAL_PROFILE_FACTORS)
LongPressRTButtonsCommand.ReleaseButton LongPressRTButtonsCommand.ReleaseButton
else else
@ -2819,10 +2824,10 @@ class Pump(
} }
} }
numRetrievedFactors++
getBasalProfileReporter.setCurrentProgressStage( getBasalProfileReporter.setCurrentProgressStage(
RTCommandProgressStage.GettingBasalProfile(numRetrievedFactors) RTCommandProgressStage.GettingBasalProfile(numRetrievedFactors)
) )
numRetrievedFactors++
} }
} }