Commit graph

21 commits

Author SHA1 Message Date
Carlos Rafael Giani
ad381e3c26 comboctl: main: Improvements to Pump.setTbr()
* Don't set a fake 100% TBR again if the current fake 100% TBR
  is finished within 15 minutes (reduces number of TBR operations
  and allows the Combo to return to a non-TBR state).
* If the expected TBR percentage was a non-100% one, but not we see
  a non-TBR main screen, check if the expected TBR duration was <= 2
  minutes. This covers the edge case when the TBR ends at the same
  time when we run this check.
* Inform callers about the exact outcome of the setTbr() call. It could
  be that it set the TBR normally. Or, it might have set a fake 100% TBR
  (if the user requested a 100% TBR and force100Percent was set to false),
  and so on.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-12-07 12:38:59 +01:00
Milos Kozak
2b5e51c857 code cleanup 2022-11-30 19:30:46 +01:00
Carlos Rafael Giani
b029814de5 comboctl-main: Adjust pump's local datetime when timezones change
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-28 14:19:01 +01:00
Milos Kozak
ae52eb3402 resolve deprecation warnings 2022-11-27 22:42:33 +01:00
Carlos Rafael Giani
1131ad1195 comboctl-main: Refine waiting periods during long RT button press
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-25 00:26:32 +01:00
Carlos Rafael Giani
ede5ad1cda comboctl-main: Rename variables such that currentQuantity is not shadowed
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-25 00:26:21 +01:00
Carlos Rafael Giani
90480ab1d9 comboctl-main: Add more argument checks to Pump.connect()
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-20 23:04:30 +01:00
Carlos Rafael Giani
605fe04d74 comboctl-main: Check for unchanging screen type in navigateToRTScreen()
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-20 21:58:50 +01:00
Carlos Rafael Giani
2bde0f154d comboctl-main: Add and fix unit tests
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-20 18:59:21 +01:00
Carlos Rafael Giani
96c8145dc3 comboctl-main: During corrective short button presses check screens
After a long button press, short button presses may be necessary to
fix "overshoots". An alert screen may appear during those short button
presses, so look at the screens to make sure alerts are not missed.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-20 18:59:17 +01:00
Carlos Rafael Giani
8b2666ff74 comboctl-main: Only receive frames if long RT button press was skipped
The code in adjustQuantityOnScreen() needs an current quantity. This is
determined during the long button press. If no such long button press
happens, get the quantity by explicitly receiving parsed frames. But
don't read those parsed frames if a long button press happened; this
is redundant and just slows down the function.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-20 18:59:12 +01:00
Carlos Rafael Giani
03a32f09cf comboctl-main: Catch getParsedDisplayFrame() exceptions and rethrow later
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-20 18:59:08 +01:00
Carlos Rafael Giani
8d6171db49 comboctl-parser: Support main screens with ext/multiwave and TBR symbols
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-20 18:58:51 +01:00
Carlos Rafael Giani
e9294c59a0 comboctl-parser: Parse remaining duration in TBR percentage screen
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-20 18:58:47 +01:00
Carlos Rafael Giani
d50feec302 comboctl-main: Correctly handle alerts after bolus was delivered
In particular, if a bolus brings the reservoir level below the low
threshold, a W1 warning shows up on the pump itself during bolus delivery.
Once delivery is done, the W1 shows up in the RT mode as well. Bolus
delivery is special in that the deliverBolus() function has to manually
switch back to RT mode to get the reservoir level post-bolus to update
the reservoirLevel value. When that is done, the aforementioned alert
screen can show up. Add code to handle alert screen handling to that
special post-bolus check.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-19 13:56:01 +01:00
Carlos Rafael Giani
20d4a0c692 comboctl-main: Fix computeShortRTButtonPress() cyclic quantity bug
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-19 11:22:10 +01:00
Carlos Rafael Giani
ced93e4a53 comboctl-main: Check if RT quantity adjustment hits an unexpected limit
This is important for example if the Combo is not properly configured
and the user tries to set a TBR percentage beyond the configured limit.
The RT UI will then clamp the percentage to that limit, and the quantity
won't increase anymore. Without this new check, this causes the code
to be stuck in an endless loop.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-10 19:21:02 +01:00
Carlos Rafael Giani
c3c894cccb comboctl-main: Rework longPressRTButtonUntil() implementation
The new implementation overshoots less often, runs generally faster,
and correctly forwards exceptions thrown by the checkScreen callback.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-10 19:21:02 +01:00
Carlos Rafael Giani
01560f45be comboctl-main: Fix missing entry #1 in TDD history
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-06 00:13:43 +01:00
Carlos Rafael Giani
9aff10537e comboctl-main: Directly push MENU button to switch to TBR duration screen
There's no reason to use the full navigation function to switch from the
TBR percentage to the TBR duration screen, since these are next to each
other, and switching over is done by pressing MENU once.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-06 00:13:43 +01:00
Carlos Rafael Giani
643f26b7bf Import ComboCtl
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
2022-11-06 00:13:43 +01:00