annotate Discovery/Src/tMenuCvOption.c @ 1014:8c0134a287da GasConsumption

Add a log data event to the scrubber timer at the start of the dive and every time the timer (in minutes) is decremented. The event contains a 12 bit signed integer for the remaining scrubber duration, and two flags for scrubber warning (0x2000, <= 30 minutes remaining) and scrubber error (0x4000, <= 0 minutes remaining). (mikeller)
author heinrichsweikamp
date Sun, 11 May 2025 16:18:20 +0200
parents 21142f4fa968
children 33b91584d827
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
2 /// -*- coding: UTF-8 -*-
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
3 ///
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
4 /// \file Discovery/Src/tMenuCvOption.c
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
5 /// \brief Main Template file for Menu Page System settings
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
6 /// \author heinrichs weikamp gmbh
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
7 /// \date 24-Apr-2025
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
8 ///
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
9 /// \details
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
10 ///
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
11 /// $Id$
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
12 ///////////////////////////////////////////////////////////////////////////////
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
13 /// \par Copyright (c) 2014-2025 Heinrichs Weikamp gmbh
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
14 ///
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
15 /// This program is free software: you can redistribute it and/or modify
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
16 /// it under the terms of the GNU General Public License as published by
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
17 /// the Free Software Foundation, either version 3 of the License, or
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
18 /// (at your option) any later version.
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
19 ///
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
20 /// This program is distributed in the hope that it will be useful,
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
23 /// GNU General Public License for more details.
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
24 ///
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
25 /// You should have received a copy of the GNU General Public License
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
26 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
27 //////////////////////////////////////////////////////////////////////////////
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
28
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
29 /* Includes ------------------------------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
30 #include "tMenu.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
31 #include "tMenuCvOption.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
32 #include "tHome.h" // for enum CUSTOMVIEWS and init_t7_compass()
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
33 #include "t7.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
34
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
35 /* Private function prototypes -----------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
36
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
37 /* Exported functions --------------------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
38
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
39 uint32_t tMCvOption_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
40 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
41 SSettings *data;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
42 uint8_t textPointer;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
43
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
44 data = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
45 textPointer = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
46 *tab = 300;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
47 *subtext = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
48
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
49 resetLineMask(StMOption);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
50
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
51 if((line == 0) || (line == 1))
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
52 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
53 text[textPointer++] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
54 text[textPointer++] = TXT2BYTE_Compass;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
55 text[textPointer++] = '\t';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
56
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
57 if(settingsGetPointer()->compassBearing != 0)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
58 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
59 textPointer += snprintf(&text[textPointer], 20, "(%03u`)", settingsGetPointer()->compassBearing % 360);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
60 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
61 text[textPointer] = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
62 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
63 nextline(text,&textPointer);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
64 if (line == 0 || line == 2)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
65 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
66 if(t7_customview_disabled(CVIEW_Timer))
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
67 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
68 text[textPointer++] = '\031'; /* change text color */
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
69 textPointer += snprintf(&text[textPointer], 21, "%c%c\t%u:%02u \016\016[m:ss]\017", TXT_2BYTE, TXT2BYTE_Timer, data->timerDurationS / 60, data->timerDurationS % 60);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
70 text[textPointer++] = '\020'; /* restore text color */
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
71 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
72 else
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
73 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
74 textPointer += snprintf(&text[textPointer], 21, "%c%c\t%u:%02u \016\016[m:ss]\017", TXT_2BYTE, TXT2BYTE_Timer, data->timerDurationS / 60, data->timerDurationS % 60);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
75 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
76 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
77 nextline(text,&textPointer);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
78
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
79 return StMOption;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
80 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
81 void tMCvOption_checkLineStatus(void)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
82 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
83 uint8_t localLineMask = 0;
1001
21142f4fa968 Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents: 999
diff changeset
84 uint8_t lineMask = getLineMask(StMOption);
21142f4fa968 Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents: 999
diff changeset
85
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
86 if(t7_customview_disabled(CVIEW_Timer))
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
87 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
88 localLineMask |= 1 << 2;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
89 }
1001
21142f4fa968 Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents: 999
diff changeset
90
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
91 if(lineMask != localLineMask)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
92 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
93 updateMenu();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
94 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
95 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
96
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
97 /* Private functions ---------------------------------------------------------*/