annotate Discovery/Src/tMenuEditCvOption.c @ 1078:082825daccb5 Icon_Integration tip

Added control views for HUD: The HUD implementation may now be activated by the compile switch ENABLE_HUD_SUPPORT. The HUD will become visible onces detected in the CvOpt overview menu. The first implementation is for testing only => The LEDs may be operated by a number field. Positiv values activate the red, negativ the green LEDs. Depending on the value blink sequences will be scheduled. At the moment no dive specific data is mapped to the LED operation (like e.g. warnings).
author Ideenmodellierer
date Mon, 02 Mar 2026 17:30:38 +0100
parents 734f84b72b30
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"
1071
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
31 #include "tMenuCvOptionText.h"
1073
734f84b72b30 CV Option Menu added sub menus for O2 and CO2 sensors:
Ideenmodellierer
parents: 1071
diff changeset
32 #include "tMenuEditHardware.h"
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
33 #include "tMenuEdit.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
34
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
35 #include "gfx_fonts.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
36 #include "ostc.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
37 #include "tMenuEdit.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
38 #include "tHome.h"
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
39
1032
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
40 #include "cv_heartbeat.h"
33b91584d827 New CV Pulse:
Ideenmodellierer
parents: 1014
diff changeset
41
1071
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
42
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
43 static openFunc_t openFctPointerTable[MAXLINES]; /* function pointer for refresh */
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
44
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
45 /* Private function prototypes -----------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
46 static void openEdit_Timer(void);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
47 void openEdit_Compass(void);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
48
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
49 /* Announced function prototypes -----------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
50 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
51 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
52 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
53 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
54 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
55 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
56
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
57 /* Exported functions --------------------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
58
1071
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
59
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
60 void tMCvOption_SetOpenFnct(uint8_t cvOptId, uint8_t index)
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
61 {
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
62 if(index < MAXLINES)
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
63 {
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
64 switch(cvOptId)
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
65 {
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
66 case CVOPT_Compass: openFctPointerTable[index] = openEdit_Compass;
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
67 break;
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
68 case CVOPT_Timer: openFctPointerTable[index] = openEdit_Timer;
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
69 break;
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
70 case CVOPT_END: openFctPointerTable[index] = NULL;
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
71 break;
1073
734f84b72b30 CV Option Menu added sub menus for O2 and CO2 sensors:
Ideenmodellierer
parents: 1071
diff changeset
72 case CVOPT_O2_Sensor: openFctPointerTable[index] = openEdit_SensorsO2;
734f84b72b30 CV Option Menu added sub menus for O2 and CO2 sensors:
Ideenmodellierer
parents: 1071
diff changeset
73 break;
734f84b72b30 CV Option Menu added sub menus for O2 and CO2 sensors:
Ideenmodellierer
parents: 1071
diff changeset
74 case CVOPT_CO2_Sensor: openFctPointerTable[index] = openEdit_SensorsCO2;
1078
082825daccb5 Added control views for HUD:
Ideenmodellierer
parents: 1073
diff changeset
75 break;
082825daccb5 Added control views for HUD:
Ideenmodellierer
parents: 1073
diff changeset
76 case CVOPT_HUD: openFctPointerTable[index] = openEdit_SensorsHUD;
082825daccb5 Added control views for HUD:
Ideenmodellierer
parents: 1073
diff changeset
77 break;
1073
734f84b72b30 CV Option Menu added sub menus for O2 and CO2 sensors:
Ideenmodellierer
parents: 1071
diff changeset
78 default:
734f84b72b30 CV Option Menu added sub menus for O2 and CO2 sensors:
Ideenmodellierer
parents: 1071
diff changeset
79 break;
1071
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
80 }
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
81 }
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
82 }
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
83
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
84
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
85 void openEdit_CvOption(uint8_t line)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
86 {
1071
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
87 if(openFctPointerTable[line - 1] != NULL)
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
88 {
1071
b4a79464caf7 Dynamic menu creation for CV views:
Ideenmodellierer
parents: 1034
diff changeset
89 openFctPointerTable[line - 1]();
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
90 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
91 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
92
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
93 /* Private functions ---------------------------------------------------------*/
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
94
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
95 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
96 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
97 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
98 uint8_t digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
99 switch (action) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
100 case ACTION_BUTTON_ENTER:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
101
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
102 return digitContent;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
103 case ACTION_BUTTON_ENTER_FINAL:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
104 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
105 int32_t compassDeclinationDeg;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
106 evaluateNewString(editId, (uint32_t *)&compassDeclinationDeg, NULL, NULL, NULL);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
107
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
108 if (compassDeclinationDeg > 99) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
109 compassDeclinationDeg = 99;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
110 } else if (compassDeclinationDeg < -99) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
111 compassDeclinationDeg = -99;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
112 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
113
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
114 settings->compassDeclinationDeg = compassDeclinationDeg;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
115
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
116 tMenuEdit_newInput(editId, ((input_u)compassDeclinationDeg).uint32, 0, 0, 0);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
117 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
118
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
119 break;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
120 case ACTION_BUTTON_NEXT:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
121 if (digitNumber == 0) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
122 digitContentNew = togglePlusMinus(digitContent);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
123 } else {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
124 digitContentNew = digitContent + 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
125 if (digitContentNew > '9') {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
126 digitContentNew = '0';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
127 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
128 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
129
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
130 return digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
131 case ACTION_BUTTON_BACK:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
132 if (digitNumber == 0) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
133 digitContentNew = togglePlusMinus(digitContent);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
134 } else {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
135 digitContentNew = digitContent - 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
136 if (digitContentNew < '0') {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
137 digitContentNew = '9';
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 return digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
142 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
143
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
144 return UNSPECIFIC_RETURN;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
145 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
146
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
147
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
148 static void showCompassDeclination(SSettings *settings, bool isRefresh)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
149 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
150 char text[16];
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
151 snprintf(text, 16, "%c%c:", TXT_2BYTE, TXT2BYTE_CompassDeclination);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
152 write_label_var(30, 800, ME_Y_LINE6, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
153 if (isRefresh) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
154 tMenuEdit_refresh_field(StMOption_Compass_Declination);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
155 } else {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
156 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
157 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
158 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
159
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
160
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
161 void refresh_CompassEdit(void)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
162 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
163 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
164
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
165 uint16_t heading;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
166 char text[32];
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
167 uint8_t textIndex = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
168
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
169 text[0] = '\001';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
170 text[1] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
171 text[2] = TXT2BYTE_Compass;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
172 text[3] = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
173 write_topline(text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
174
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
175 if(settings->compassInertia)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
176 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
177 heading = (uint16_t)compass_getCompensated();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
178 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
179 else
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
180 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
181 heading = (uint16_t)stateUsed->lifeData.compass_heading;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
182 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
183 snprintf(text,32,"\001%03i`",heading);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
184 write_label_var( 0, 800, ME_Y_LINE1, &FontT54, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
185
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
186 tMenuEdit_refresh_field(StMOption_Compass_SetCourse);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
187 tMenuEdit_refresh_field(StMOption_Compass_Calibrate);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
188 tMenuEdit_refresh_field(StMOption_Compass_ResetCourse);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
189 text[textIndex++] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
190 text[textIndex++] = TXT2BYTE_CompassInertia;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
191 text[textIndex++] = ':';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
192 text[textIndex++] = ' ';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
193 text[textIndex++] = '0' + settings->compassInertia;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
194
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
195 write_label_var(30, 800, ME_Y_LINE5, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
196
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
197 showCompassDeclination(settings, true);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
198
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
199 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
200 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
201
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
202
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
203 void openEdit_Compass(void)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
204 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
205 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
206
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
207 char text[10];
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
208 uint8_t textIndex = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
209
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
210
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
211 set_globalState(StMOption_Compass);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
212 resetMenuEdit(CLUT_MenuPageHardware);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
213
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
214 text[textIndex++] = '\001';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
215 text[textIndex++] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
216 text[textIndex++] = TXT2BYTE_Compass;
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 write_topline(text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
219
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
220 text[0] = TXT_2BYTE;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
221 text[2] = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
222
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
223 text[1] = TXT2BYTE_SetBearing;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
224 write_field_button(StMOption_Compass_SetCourse, 30, 800, ME_Y_LINE2, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
225
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
226 text[1] = TXT2BYTE_ResetBearing;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
227 write_field_button(StMOption_Compass_ResetCourse, 30, 800, ME_Y_LINE3, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
228
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
229 text[1] = TXT2BYTE_CompassCalib;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
230 write_field_button(StMOption_Compass_Calibrate, 30, 800, ME_Y_LINE4, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
231
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
232 text[1] = TXT2BYTE_CompassInertia;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
233 textIndex = 2;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
234 text[textIndex++] = ':';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
235 text[textIndex++] = ' ';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
236 text[textIndex++] = '0' + settings->compassInertia;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
237 text[textIndex++] = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
238
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
239 write_field_button(StMOption_Compass_Inertia, 30, 800, ME_Y_LINE5, &FontT48, text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
240
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
241 showCompassDeclination(settings, false);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
242
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
243 setEvent(StMOption_Compass_SetCourse, (uint32_t)OnAction_Bearing);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
244 setEvent(StMOption_Compass_ResetCourse, (uint32_t)OnAction_BearingClear);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
245 setEvent(StMOption_Compass_Calibrate, (uint32_t)OnAction_Compass);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
246 setEvent(StMOption_Compass_Inertia, (uint32_t)OnAction_InertiaLevel);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
247 setEvent(StMOption_Compass_Declination, (uint32_t)OnAction_CompassDeclination);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
248
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
249 tMenuEdit_select(StMOption_Compass_SetCourse);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
250
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
251 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
252 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
253
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
254
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
255 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
256 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
257 calibrateCompass();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
258 return EXIT_TO_INFO_COMPASS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
259 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
260
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
261
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
262 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
263 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
264 if((int16_t)stateUsed->lifeData.compass_heading != -1)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
265 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
266 settingsGetPointer()->compassBearing = (int16_t)stateUsed->lifeData.compass_heading;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
267 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
268 else
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
269 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
270 settingsGetPointer()->compassBearing = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
271 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
272
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
273 if(settingsGetPointer()->compassBearing == 0)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
274 settingsGetPointer()->compassBearing = 360;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
275 return UPDATE_AND_EXIT_TO_MENU;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
276 }
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 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
280 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
281 settingsGetPointer()->compassBearing = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
282 return UPDATE_AND_EXIT_TO_MENU;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
283 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
284
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
285
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
286 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
287 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
288 uint8_t newLevel = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
289
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
290 newLevel = settingsGetPointer()->compassInertia + 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
291 if(newLevel > MAX_COMPASS_COMP)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
292 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
293 newLevel = 0;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
294 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
295 settingsGetPointer()->compassInertia = newLevel;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
296 return UPDATE_DIVESETTINGS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
297 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
298
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
299 static void openEdit_Timer(void)
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
300 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
301 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
302
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
303 char text[32];
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
304 snprintf(text, 32, "\001%c%c", TXT_2BYTE, TXT2BYTE_Timer);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
305 write_topline(text);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
306
1001
21142f4fa968 Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents: 999
diff changeset
307 set_globalState(StMOption_Timer);
1005
85f7e19c6688 Switch menu position of Buzzer and flipdisplay option:
Ideenmodellierer
parents: 1001
diff changeset
308 resetMenuEdit(CLUT_MenuPageCvOption);
1001
21142f4fa968 Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents: 999
diff changeset
309
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
310 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
311 snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_Timer);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
312 write_label_var(30, 299, yPos, &FontT48, text);
1005
85f7e19c6688 Switch menu position of Buzzer and flipdisplay option:
Ideenmodellierer
parents: 1001
diff changeset
313 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
314 write_label_var(393, 800, yPos, &FontT48, "\016\016 [m:ss]\017");
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
315
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
316 write_buttonTextline(TXT2BYTE_ButtonMinus, TXT2BYTE_ButtonEnter, TXT2BYTE_ButtonPlus);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
317
1005
85f7e19c6688 Switch menu position of Buzzer and flipdisplay option:
Ideenmodellierer
parents: 1001
diff changeset
318 setEvent(StMOption_Timer_Value, (uint32_t)OnAction_Timer);
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
319 startEdit();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
320 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
321 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
322 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
323 SSettings *settings = settingsGetPointer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
324 uint8_t digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
325 switch (action) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
326 case ACTION_BUTTON_ENTER:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
327
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
328 return digitContent;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
329 case ACTION_BUTTON_ENTER_FINAL:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
330 {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
331 uint32_t timerM;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
332 uint32_t timerS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
333 evaluateNewString(editId, &timerM, &timerS, 0, 0);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
334 if (timerM > 9) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
335 timerM = 9;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
336 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
337 if (timerS > 59) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
338 timerS = 59;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
339 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
340
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
341 uint16_t timerDurationS = 60 * timerM + timerS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
342
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
343 if (timerDurationS < 1) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
344 timerDurationS = 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
345 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
346
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
347 if (timerDurationS != settings->timerDurationS) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
348 settings->timerDurationS = timerDurationS;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
349
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
350 disableTimer();
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
351
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
352 tMenuEdit_newInput(editId, settings->timerDurationS / 60, settings->timerDurationS % 60, 0, 0);
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
353 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
354
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
355 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
356
999
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
357 return EXIT_TO_MENU;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
358 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
359 case ACTION_BUTTON_NEXT:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
360 digitContentNew = digitContent + 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
361 if ((blockNumber == 1 && digitNumber == 0 && digitContentNew > '5') || digitContentNew > '9') {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
362 digitContentNew = '0';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
363 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
364
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
365 return digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
366 case ACTION_BUTTON_BACK:
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
367 digitContentNew = digitContent - 1;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
368 if (digitContentNew < '0') {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
369 if (blockNumber == 1 && digitNumber == 0) {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
370 digitContentNew = '5';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
371 } else {
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
372 digitContentNew = '9';
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
373 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
374 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
375
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
376 return digitContentNew;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
377 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
378
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
379 return EXIT_TO_MENU;
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
380 }
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
381
ac25c35a3c97 New Tab for dynamic configuration:
Ideenmodellierer
parents:
diff changeset
382