Mercurial > public > ostc4
changeset 980:7149f372b0ba Evo_2_23
Fix a couple of bugs in the scrubber timer:
- double speed scrubber countdown in simulator mode
- unwanted updating of last scrubber use date in simulator mode
- invalid remaining scrubber display in surface mode
(mikeller)
author | heinrichsweikamp |
---|---|
date | Tue, 04 Feb 2025 13:49:43 +0100 (5 weeks ago) |
parents | e7cd7ffd1879 |
children | c6c781a2e85b |
files | Discovery/Inc/t3.h Discovery/Src/simulation.c Discovery/Src/t3.c Discovery/Src/t7.c Discovery/Src/tCCR.c |
diffstat | 5 files changed, 24 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/Discovery/Inc/t3.h Tue Feb 04 13:48:53 2025 +0100 +++ b/Discovery/Inc/t3.h Tue Feb 04 13:49:43 2025 +0100 @@ -44,6 +44,6 @@ uint8_t t3_customview_disabled(uint8_t view); void t3_handleAutofocus(void); -int printScrubberText(char *text, size_t size, SSettings *settings); +int printScrubberText(char *text, size_t size, const SScrubberData *scrubberData, SSettings *settings); #endif /* T3_H */
--- a/Discovery/Src/simulation.c Tue Feb 04 13:48:53 2025 +0100 +++ b/Discovery/Src/simulation.c Tue Feb 04 13:49:43 2025 +0100 @@ -254,7 +254,7 @@ { pDiveState->scrubberDataDive[pSettings->scubberActiveId].TimerCur--; } - translateDate(stateUsed->lifeData.dateBinaryFormat, &stateUsedWrite->scrubberDataDive[pSettings->scubberActiveId].lastDive); + translateDate(stateUsed->lifeData.dateBinaryFormat, &pDiveState->scrubberDataDive[pSettings->scubberActiveId].lastDive); } }
--- a/Discovery/Src/t3.c Tue Feb 04 13:48:53 2025 +0100 +++ b/Discovery/Src/t3.c Tue Feb 04 13:49:43 2025 +0100 @@ -1341,7 +1341,7 @@ textpointer = 0; text[textpointer++] = '\002'; - textpointer += printScrubberText(&text[textpointer], 10, pSettings); + textpointer += printScrubberText(&text[textpointer], 10, stateUsed->scrubberDataDive, pSettings); GFX_write_string(&FontT105,tXc1,text,1); } } @@ -1996,9 +1996,9 @@ return t3_selection_customview; } -int printScrubberText(char *text, size_t size, SSettings *settings) +int printScrubberText(char *text, size_t size, const SScrubberData *scrubberData, SSettings *settings) { - int16_t currentTimerMinutes = stateUsed->scrubberDataDive[settings->scubberActiveId].TimerCur; + int16_t currentTimerMinutes = scrubberData[settings->scubberActiveId].TimerCur; char colour = '\020'; if (currentTimerMinutes <= 0) { colour = '\025';
--- a/Discovery/Src/t7.c Tue Feb 04 13:48:53 2025 +0100 +++ b/Discovery/Src/t7.c Tue Feb 04 13:49:43 2025 +0100 @@ -1962,7 +1962,7 @@ data[dataIndex++] = '\n'; data[dataIndex++] = '\r'; data[dataIndex++] = '\t'; - dataIndex += printScrubberText(&data[dataIndex], 10, settings); + dataIndex += printScrubberText(&data[dataIndex], 10, settings->scrubberData, settings); } heading[headingIndex++] = '\017'; @@ -3396,7 +3396,7 @@ tinyHeaderFont = 1; headerText[2] = TXT_ScrubTime; - printScrubberText(text, TEXTSIZE, pSettings); + printScrubberText(text, TEXTSIZE, stateUsed->scrubberDataDive, pSettings); break; #ifdef ENABLE_PSCR_MODE @@ -4247,7 +4247,7 @@ text[textpointer++] = '\r'; text[textpointer++] = '\t'; - textpointer += printScrubberText(&text[textpointer], 10, pSettings); + textpointer += printScrubberText(&text[textpointer], 10, stateUsed->scrubberDataDive, pSettings); } text[textpointer++] = 0; Gfx_colorsscheme_mod(text, 0);
--- a/Discovery/Src/tCCR.c Tue Feb 04 13:48:53 2025 +0100 +++ b/Discovery/Src/tCCR.c Tue Feb 04 13:49:43 2025 +0100 @@ -337,19 +337,22 @@ } } - /* decrease scrubber timer only if we are not bailed out */ - if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode)) && (stateUsed->mode == MODE_DIVE) && isLoopMode(stateUsed->diveSettings.diveMode)) - { - ScrubberTimeoutCount++; - if(ScrubberTimeoutCount >= 600) /* resolution is minutes */ - { - ScrubberTimeoutCount = 0; - if(stateUsed->scrubberDataDive[pSettings->scubberActiveId].TimerCur > MIN_SCRUBBER_TIME) - { - stateUsedWrite->scrubberDataDive[pSettings->scubberActiveId].TimerCur--; - } - translateDate(stateUsed->lifeData.dateBinaryFormat, &stateUsedWrite->scrubberDataDive[pSettings->scubberActiveId].lastDive); - } + // If we are in the simulator the counter is updated in `simulator.c` + if (!is_stateUsedSetToSim()) { + /* decrease scrubber timer only if we are not bailed out */ + if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode)) && (stateUsed->mode == MODE_DIVE) && isLoopMode(stateUsed->diveSettings.diveMode)) + { + ScrubberTimeoutCount++; + if(ScrubberTimeoutCount >= 600) /* resolution is minutes */ + { + ScrubberTimeoutCount = 0; + if(stateUsed->scrubberDataDive[pSettings->scubberActiveId].TimerCur > MIN_SCRUBBER_TIME) + { + stateUsedWrite->scrubberDataDive[pSettings->scubberActiveId].TimerCur--; + } + translateDate(stateUsed->lifeData.dateBinaryFormat, &stateUsedWrite->scrubberDataDive[pSettings->scubberActiveId].lastDive); + } + } } }