annotate Discovery/Src/tMenuEditCvOption.c @ 1051:4b6afe5551e1 GasConsumption tip

Refactors CalcFletcher32 in OtherSources/firmwareEraseProgram.c to iterate over 16-bit words via a pointer instead of an index-based loop. Removes unused variables and returns the computed 32-bit Fletcher checksum directly. (mikeller)
author heinrichsweikamp
date Thu, 20 Nov 2025 16:47:21 +0100
parents 195bfbdf961d
children
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/tMenuEditCvOption.c
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
5 /// \brief Menu for configuration depended items
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 "tMenuEditCvOption.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
31 #include "tMenuEdit.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
32
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
33 #include "gfx_fonts.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
34 #include "ostc.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
35 #include "tMenuEdit.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
36 #include "tHome.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
37
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
38 #include "cv_heartbeat.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
39
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
40 /* Private function prototypes -----------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
41 static void openEdit_Timer(void);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
42 void openEdit_Compass(void);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
43
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
44 /* Announced function prototypes -----------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
45 uint8_t OnAction_Compass (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
46 static uint8_t OnAction_CompassDeclination(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
47 uint8_t OnAction_Bearing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
48 uint8_t OnAction_BearingClear (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
49 uint8_t OnAction_InertiaLevel (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
50 static uint8_t OnAction_Timer(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
51
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
52 /* Exported functions --------------------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
53
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
54 void openEdit_CvOption(uint8_t line)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
55 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
56 set_globalState_Menu_Line(line);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
57
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
58 switch(line)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
59 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
60 case 1:
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
61 default: resetMenuEdit(CLUT_MenuPageHardware);
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
62 openEdit_Compass();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
63 break;
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
64 case 2: openEdit_Timer();
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
65 break;
1034
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1032
diff changeset
66 #ifdef ENABLE_PULSE_SENSOR_BT
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
67 case 3: openEdit_Heartbeat();
1034
195bfbdf961d Pulse measurement integration:
Ideenmodellierer
parents: 1032
diff changeset
68 #endif
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
69 break;
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
70 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
71 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
72
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
73 /* Private functions ---------------------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
74
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
75 static uint8_t OnAction_CompassDeclination(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
76 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
77 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
78 uint8_t digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
79 switch (action) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
80 case ACTION_BUTTON_ENTER:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
81
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
82 return digitContent;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
83 case ACTION_BUTTON_ENTER_FINAL:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
84 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
85 int32_t compassDeclinationDeg;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
86 evaluateNewString(editId, (uint32_t *)&compassDeclinationDeg, NULL, NULL, NULL);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
87
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
88 if (compassDeclinationDeg > 99) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
89 compassDeclinationDeg = 99;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
90 } else if (compassDeclinationDeg < -99) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
91 compassDeclinationDeg = -99;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
92 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
93
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
94 settings->compassDeclinationDeg = compassDeclinationDeg;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
95
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
96 tMenuEdit_newInput(editId, ((input_u)compassDeclinationDeg).uint32, 0, 0, 0);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
97 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
98
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
99 break;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
100 case ACTION_BUTTON_NEXT:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
101 if (digitNumber == 0) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
102 digitContentNew = togglePlusMinus(digitContent);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
103 } else {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
104 digitContentNew = digitContent + 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
105 if (digitContentNew > '9') {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
106 digitContentNew = '0';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
107 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
108 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
109
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
110 return digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
111 case ACTION_BUTTON_BACK:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
112 if (digitNumber == 0) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
113 digitContentNew = togglePlusMinus(digitContent);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
114 } else {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
115 digitContentNew = digitContent - 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
116 if (digitContentNew < '0') {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
117 digitContentNew = '9';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
118 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
119 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
120
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
121 return digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
122 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
123
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
124 return UNSPECIFIC_RETURN;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
125 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
126
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
127
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
128 static void showCompassDeclination(SSettings *settings, bool isRefresh)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
129 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
130 char text[16];
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
131 snprintf(text, 16, "%c%c:", TXT_2BYTE, TXT2BYTE_CompassDeclination);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
132 write_label_var(30, 800, ME_Y_LINE6, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
133 if (isRefresh) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
134 tMenuEdit_refresh_field(StMOption_Compass_Declination);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
135 } else {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
136 write_field_sdigit(StMOption_Compass_Declination, 500, 800, ME_Y_LINE6, &FontT48, "\034###`", settings->compassDeclinationDeg, 0, 0, 0);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
137 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
138 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
139
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
140
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
141 void refresh_CompassEdit(void)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
142 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
143 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
144
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
145 uint16_t heading;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
146 char text[32];
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
147 uint8_t textIndex = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
148
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
149 text[0] = '\001';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
150 text[1] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
151 text[2] = TXT2BYTE_Compass;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
152 text[3] = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
153 write_topline(text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
154
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
155 if(settings->compassInertia)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
156 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
157 heading = (uint16_t)compass_getCompensated();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
158 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
159 else
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
160 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
161 heading = (uint16_t)stateUsed->lifeData.compass_heading;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
162 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
163 snprintf(text,32,"\001%03i`",heading);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
164 write_label_var( 0, 800, ME_Y_LINE1, &FontT54, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
165
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
166 tMenuEdit_refresh_field(StMOption_Compass_SetCourse);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
167 tMenuEdit_refresh_field(StMOption_Compass_Calibrate);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
168 tMenuEdit_refresh_field(StMOption_Compass_ResetCourse);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
169 text[textIndex++] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
170 text[textIndex++] = TXT2BYTE_CompassInertia;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
171 text[textIndex++] = ':';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
172 text[textIndex++] = ' ';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
173 text[textIndex++] = '0' + settings->compassInertia;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
174
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
175 write_label_var(30, 800, ME_Y_LINE5, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
176
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
177 showCompassDeclination(settings, true);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
178
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
179 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
180 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
181
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
182
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
183 void openEdit_Compass(void)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
184 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
185 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
186
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
187 char text[10];
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
188 uint8_t textIndex = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
189
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
190
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
191 set_globalState(StMOption_Compass);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
192 resetMenuEdit(CLUT_MenuPageHardware);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
193
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
194 text[textIndex++] = '\001';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
195 text[textIndex++] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
196 text[textIndex++] = TXT2BYTE_Compass;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
197 text[textIndex++] = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
198 write_topline(text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
199
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
200 text[0] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
201 text[2] = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
202
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
203 text[1] = TXT2BYTE_SetBearing;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
204 write_field_button(StMOption_Compass_SetCourse, 30, 800, ME_Y_LINE2, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
205
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
206 text[1] = TXT2BYTE_ResetBearing;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
207 write_field_button(StMOption_Compass_ResetCourse, 30, 800, ME_Y_LINE3, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
208
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
209 text[1] = TXT2BYTE_CompassCalib;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
210 write_field_button(StMOption_Compass_Calibrate, 30, 800, ME_Y_LINE4, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
211
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
212 text[1] = TXT2BYTE_CompassInertia;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
213 textIndex = 2;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
214 text[textIndex++] = ':';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
215 text[textIndex++] = ' ';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
216 text[textIndex++] = '0' + settings->compassInertia;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
217 text[textIndex++] = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
218
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
219 write_field_button(StMOption_Compass_Inertia, 30, 800, ME_Y_LINE5, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
220
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
221 showCompassDeclination(settings, false);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
222
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
223 setEvent(StMOption_Compass_SetCourse, (uint32_t)OnAction_Bearing);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
224 setEvent(StMOption_Compass_ResetCourse, (uint32_t)OnAction_BearingClear);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
225 setEvent(StMOption_Compass_Calibrate, (uint32_t)OnAction_Compass);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
226 setEvent(StMOption_Compass_Inertia, (uint32_t)OnAction_InertiaLevel);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
227 setEvent(StMOption_Compass_Declination, (uint32_t)OnAction_CompassDeclination);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
228
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
229 tMenuEdit_select(StMOption_Compass_SetCourse);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
230
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
231 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
232 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
233
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
234
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
235 uint8_t OnAction_Compass (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
236 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
237 calibrateCompass();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
238 return EXIT_TO_INFO_COMPASS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
239 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
240
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
241
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
242 uint8_t OnAction_Bearing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
243 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
244 if((int16_t)stateUsed->lifeData.compass_heading != -1)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
245 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
246 settingsGetPointer()->compassBearing = (int16_t)stateUsed->lifeData.compass_heading;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
247 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
248 else
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
249 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
250 settingsGetPointer()->compassBearing = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
251 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
252
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
253 if(settingsGetPointer()->compassBearing == 0)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
254 settingsGetPointer()->compassBearing = 360;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
255 return UPDATE_AND_EXIT_TO_MENU;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
256 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
257
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
258
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
259 uint8_t OnAction_BearingClear (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
260 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
261 settingsGetPointer()->compassBearing = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
262 return UPDATE_AND_EXIT_TO_MENU;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
263 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
264
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
265
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
266 uint8_t OnAction_InertiaLevel (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
267 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
268 uint8_t newLevel = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
269
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
270 newLevel = settingsGetPointer()->compassInertia + 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
271 if(newLevel > MAX_COMPASS_COMP)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
272 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
273 newLevel = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
274 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
275 settingsGetPointer()->compassInertia = newLevel;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
276 return UPDATE_DIVESETTINGS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
277 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
278
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
279 static void openEdit_Timer(void)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
280 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
281 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
282
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
283 char text[32];
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
284 snprintf(text, 32, "\001%c%c", TXT_2BYTE, TXT2BYTE_Timer);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
285 write_topline(text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
286
1001
21142f4fa968 Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents: 999
diff changeset
287 set_globalState(StMOption_Timer);
1005
85f7e19c6688 Switch menu position of Buzzer and flipdisplay option:
Ideenmodellierer
parents: 1001
diff changeset
288 resetMenuEdit(CLUT_MenuPageCvOption);
1001
21142f4fa968 Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents: 999
diff changeset
289
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
290 uint16_t yPos = ME_Y_LINE_BASE + get_globalState_Menu_Line() * ME_Y_LINE_STEP;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
291 snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_Timer);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
292 write_label_var(30, 299, yPos, &FontT48, text);
1005
85f7e19c6688 Switch menu position of Buzzer and flipdisplay option:
Ideenmodellierer
parents: 1001
diff changeset
293 write_field_udigit(StMOption_Timer_Value, 300, 392, yPos, &FontT48, "#:##", settings->timerDurationS / 60, settings->timerDurationS % 60, 0, 0);
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
294 write_label_var(393, 800, yPos, &FontT48, "\016\016 [m:ss]\017");
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
295
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
296 write_buttonTextline(TXT2BYTE_ButtonMinus, TXT2BYTE_ButtonEnter, TXT2BYTE_ButtonPlus);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
297
1005
85f7e19c6688 Switch menu position of Buzzer and flipdisplay option:
Ideenmodellierer
parents: 1001
diff changeset
298 setEvent(StMOption_Timer_Value, (uint32_t)OnAction_Timer);
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
299 startEdit();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
300 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
301 static uint8_t OnAction_Timer(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
302 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
303 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
304 uint8_t digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
305 switch (action) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
306 case ACTION_BUTTON_ENTER:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
307
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
308 return digitContent;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
309 case ACTION_BUTTON_ENTER_FINAL:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
310 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
311 uint32_t timerM;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
312 uint32_t timerS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
313 evaluateNewString(editId, &timerM, &timerS, 0, 0);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
314 if (timerM > 9) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
315 timerM = 9;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
316 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
317 if (timerS > 59) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
318 timerS = 59;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
319 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
320
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
321 uint16_t timerDurationS = 60 * timerM + timerS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
322
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
323 if (timerDurationS < 1) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
324 timerDurationS = 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
325 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
326
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
327 if (timerDurationS != settings->timerDurationS) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
328 settings->timerDurationS = timerDurationS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
329
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
330 disableTimer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
331
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
332 tMenuEdit_newInput(editId, settings->timerDurationS / 60, settings->timerDurationS % 60, 0, 0);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
333 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
334
1014
8c0134a287da Add a log data event to the scrubber timer at the start of the dive and every time the timer (in minutes)
heinrichsweikamp
parents: 1005
diff changeset
335 settings->cv_configuration |= (1 << CVIEW_Timer);
8c0134a287da Add a log data event to the scrubber timer at the start of the dive and every time the timer (in minutes)
heinrichsweikamp
parents: 1005
diff changeset
336
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
337 return EXIT_TO_MENU;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
338 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
339 case ACTION_BUTTON_NEXT:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
340 digitContentNew = digitContent + 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
341 if ((blockNumber == 1 && digitNumber == 0 && digitContentNew > '5') || digitContentNew > '9') {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
342 digitContentNew = '0';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
343 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
344
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
345 return digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
346 case ACTION_BUTTON_BACK:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
347 digitContentNew = digitContent - 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
348 if (digitContentNew < '0') {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
349 if (blockNumber == 1 && digitNumber == 0) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
350 digitContentNew = '5';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
351 } else {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
352 digitContentNew = '9';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
353 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
354 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
355
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
356 return digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
357 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
358
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
359 return EXIT_TO_MENU;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
360 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
361
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
362