Mercurial > public > ostc4
annotate Discovery/Src/tMenuEditHardware.c @ 682:8775d3dc6325 Betatest
Bugfix low ppO2 warning in bailout mode:
the code has different sources for divesettings (real and simulated). The ppo2 calculation code used the pointer to the real structure. As result in simulation mode an error occured caused by the ppo2 calculation which was not aware that a bailout happened (because the real structure was references instead of the simulator ones). The problem has been fixed by using the "stateUsed" pointer which is refering to the structure currenty in use.
author | Ideenmodellierer |
---|---|
date | Mon, 25 Apr 2022 21:15:01 +0200 |
parents | d7c5d592076b |
children | 4dd487b407f7 |
rev | line source |
---|---|
38 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Discovery/Src/tMenuEditHardware.c | |
5 /// \brief BUTTONS | |
6 /// \author heinrichs weikamp gmbh | |
7 /// \date 15-Sept-2016 | |
8 /// | |
9 /// \details | |
10 /// | |
11 /// $Id$ | |
12 /////////////////////////////////////////////////////////////////////////////// | |
13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh | |
14 /// | |
15 /// This program is free software: you can redistribute it and/or modify | |
16 /// it under the terms of the GNU General Public License as published by | |
17 /// the Free Software Foundation, either version 3 of the License, or | |
18 /// (at your option) any later version. | |
19 /// | |
20 /// This program is distributed in the hope that it will be useful, | |
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
23 /// GNU General Public License for more details. | |
24 /// | |
25 /// You should have received a copy of the GNU General Public License | |
26 /// along with this program. If not, see <http://www.gnu.org/licenses/>. | |
27 ////////////////////////////////////////////////////////////////////////////// | |
28 | |
29 /* Includes ------------------------------------------------------------------*/ | |
30 #include "tMenuEditHardware.h" | |
31 | |
32 #include "externCPU2bootloader.h" | |
33 #include "gfx_fonts.h" | |
34 #include "ostc.h" | |
35 #include "tCCR.h" | |
36 #include "tMenuEdit.h" | |
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
115
diff
changeset
|
37 #include "tHome.h" |
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
115
diff
changeset
|
38 #include "tInfo.h" |
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
115
diff
changeset
|
39 #include "tInfoLog.h" |
394
717f335cc5c9
Added start of module configuration after eache modul power on
ideenmodellierer
parents:
314
diff
changeset
|
40 #include "tComm.h" |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
41 #include "data_exchange_main.h" |
38 | 42 |
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
115
diff
changeset
|
43 extern void tM_build_pages(void); |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
44 |
38 | 45 /* Private function prototypes -----------------------------------------------*/ |
46 void openEdit_Bluetooth(void); | |
47 void openEdit_Compass(void); | |
48 void openEdit_O2Sensors(void); | |
49 void openEdit_Brightness(void); | |
50 //void openEdit_Luftintegration(void); | |
51 void openEdit_ButtonSens(void); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
52 void openEdit_FlipDisplay(void); |
38 | 53 |
54 /* Announced function prototypes -----------------------------------------------*/ | |
55 uint8_t OnAction_Compass (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
56 uint8_t OnAction_Bearing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
57 uint8_t OnAction_BearingClear (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
58 uint8_t OnAction_InertiaLevel (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
38 | 59 //uint8_t OnAction_ExitHardw (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
60 uint8_t OnAction_Sensor1 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
61 uint8_t OnAction_Sensor2 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
62 uint8_t OnAction_Sensor3 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
63 uint8_t OnAction_O2_Fallback (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
64 uint8_t OnAction_O2_Calibrate (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
65 uint8_t OnAction_O2_Source (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
38 | 66 uint8_t OnAction_Button (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
67 uint8_t OnAction_ButtonBalance (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
605 | 68 // not required uint8_t OnAction_Bluetooth (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
38 | 69 |
70 /* Exported functions --------------------------------------------------------*/ | |
71 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
72 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
73 #define O2_CALIB_FRACTION_AIR (0.209F) |
605 | 74 #define O2_CALIB_FRACTION_O2 (0.98F) |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
75 |
584 | 76 static uint8_t O2_calib_gas = 21; |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
77 |
38 | 78 void openEdit_Hardware(uint8_t line) |
79 { | |
80 set_globalState_Menu_Line(line); | |
81 resetMenuEdit(CLUT_MenuPageHardware); | |
82 | |
83 switch(line) | |
84 { | |
85 case 1: | |
86 default: | |
87 openEdit_Bluetooth(); | |
88 break; | |
89 case 2: | |
90 openEdit_Compass(); | |
91 break; | |
92 case 3: | |
93 openEdit_O2Sensors(); | |
94 break; | |
95 case 4: | |
96 openEdit_Brightness(); | |
97 break; | |
98 case 5: | |
99 openEdit_ButtonSens(); | |
100 break; | |
101 case 6: | |
138 | 102 openEdit_FlipDisplay(); |
38 | 103 break; |
104 } | |
105 } | |
106 | |
107 /* Private functions ---------------------------------------------------------*/ | |
108 void openEdit_Bluetooth(void) | |
109 { | |
110 /* does not work like this resetEnterPressedToStateBeforeButtonAction(); */ | |
111 | |
112 SSettings *pSettings = settingsGetPointer(); | |
113 | |
114 if(pSettings->bluetoothActive == 0) | |
115 { | |
116 pSettings->bluetoothActive = 1; | |
117 MX_Bluetooth_PowerOn(); | |
394
717f335cc5c9
Added start of module configuration after eache modul power on
ideenmodellierer
parents:
314
diff
changeset
|
118 tComm_StartBlueModConfig(); |
38 | 119 } |
120 else | |
121 { | |
122 pSettings->bluetoothActive = 0; | |
123 MX_Bluetooth_PowerOff(); | |
124 } | |
125 exitMenuEdit_to_Menu_with_Menu_Update_do_not_write_settings_for_this_only(); | |
126 } | |
127 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
128 void openEdit_FlipDisplay(void) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
129 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
130 /* does not work like this resetEnterPressedToStateBeforeButtonAction(); */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
131 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
132 SSettings *pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
133 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
134 if(pSettings->FlipDisplay == 0) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
135 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
136 pSettings->FlipDisplay = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
137 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
138 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
139 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
140 pSettings->FlipDisplay = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
141 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
142 /* reinit all views */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
143 tHome_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
144 tI_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
145 tM_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
146 tMenuEdit_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
147 tInfoLog_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
148 tM_build_pages(); |
314 | 149 GFX_build_logo_frame(); |
150 GFX_build_hw_background_frame(); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
151 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
152 exitEditWithUpdate(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
153 exitMenuEdit_to_Home(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
154 } |
38 | 155 |
156 void refresh_CompassEdit(void) | |
157 { | |
158 uint16_t heading; | |
159 char text[32]; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
160 uint8_t textIndex = 0; |
38 | 161 |
162 text[0] = '\001'; | |
163 text[1] = TXT_2BYTE; | |
164 text[2] = TXT2BYTE_Compass; | |
165 text[3] = 0; | |
166 write_topline(text); | |
167 | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
168 if(settingsGetPointer()->compassInertia) |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
169 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
170 heading = (uint16_t)compass_getCompensated(); |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
171 } |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
172 else |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
173 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
174 heading = (uint16_t)stateUsed->lifeData.compass_heading; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
175 } |
38 | 176 snprintf(text,32,"\001%03i`",heading); |
177 write_label_var( 0, 800, ME_Y_LINE1, &FontT54, text); | |
178 | |
179 tMenuEdit_refresh_field(StMHARD2_Compass_SetCourse); | |
180 tMenuEdit_refresh_field(StMHARD2_Compass_Calibrate); | |
181 tMenuEdit_refresh_field(StMHARD2_Compass_ResetCourse); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
182 text[textIndex++] = TXT_2BYTE; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
183 text[textIndex++] = TXT2BYTE_CompassInertia; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
184 text[textIndex++] = ':'; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
185 text[textIndex++] = ' '; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
186 text[textIndex++] = '0' + settingsGetPointer()->compassInertia; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
187 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
188 write_label_var(30, 800, ME_Y_LINE5, &FontT48, text); |
38 | 189 |
190 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
191 } | |
192 | |
193 | |
194 void openEdit_Compass(void) | |
195 { | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
196 char text[10]; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
197 uint8_t textIndex = 0; |
38 | 198 |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
199 text[textIndex++] = '\001'; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
200 text[textIndex++] = TXT_2BYTE; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
201 text[textIndex++] = TXT2BYTE_Compass; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
202 text[textIndex++] = 0; |
38 | 203 write_topline(text); |
204 | |
205 text[0] = TXT_2BYTE; | |
206 text[2] = 0; | |
207 | |
208 text[1] = TXT2BYTE_SetBearing; | |
209 write_field_button(StMHARD2_Compass_SetCourse, 30, 800, ME_Y_LINE2, &FontT48, text); | |
210 | |
211 text[1] = TXT2BYTE_CompassCalib; | |
212 write_field_button(StMHARD2_Compass_Calibrate, 30, 800, ME_Y_LINE3, &FontT48, text); | |
213 | |
214 text[1] = TXT2BYTE_ResetBearing; | |
215 write_field_button(StMHARD2_Compass_ResetCourse, 30, 800, ME_Y_LINE4, &FontT48, text); | |
216 | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
217 text[1] = TXT2BYTE_CompassInertia; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
218 textIndex = 2; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
219 text[textIndex++] = ':'; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
220 text[textIndex++] = ' '; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
221 text[textIndex++] = '0' + settingsGetPointer()->compassInertia; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
222 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
223 write_field_button(StMHARD2_Compass_Inertia, 30, 800, ME_Y_LINE5, &FontT48, text); |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
224 |
38 | 225 setEvent(StMHARD2_Compass_SetCourse, (uint32_t)OnAction_Bearing); |
226 setEvent(StMHARD2_Compass_Calibrate, (uint32_t)OnAction_Compass); | |
227 setEvent(StMHARD2_Compass_ResetCourse, (uint32_t)OnAction_BearingClear); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
228 setEvent(StMHARD2_Compass_Inertia, (uint32_t)OnAction_InertiaLevel); |
38 | 229 |
230 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
231 } | |
232 | |
233 | |
234 uint8_t OnAction_Compass (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
235 { | |
236 calibrateCompass(); | |
237 return EXIT_TO_INFO_COMPASS; | |
238 } | |
239 | |
240 | |
241 uint8_t OnAction_Bearing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
242 { | |
243 settingsGetPointer()->compassBearing = (int16_t)stateUsed->lifeData.compass_heading; | |
244 if(settingsGetPointer()->compassBearing == 0) | |
245 settingsGetPointer()->compassBearing = 360; | |
246 return UPDATE_AND_EXIT_TO_MENU; | |
247 } | |
248 | |
249 | |
250 uint8_t OnAction_BearingClear (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
251 { | |
252 settingsGetPointer()->compassBearing = 0; | |
253 return UPDATE_AND_EXIT_TO_MENU; | |
254 } | |
255 | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
256 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
257 uint8_t OnAction_InertiaLevel (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
258 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
259 uint8_t newLevel = 0; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
260 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
261 newLevel = settingsGetPointer()->compassInertia + 1; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
262 if(newLevel > MAX_COMPASS_COMP) |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
263 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
264 newLevel = 0; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
265 } |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
266 settingsGetPointer()->compassInertia = newLevel; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
267 return UPDATE_DIVESETTINGS; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
268 } |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
269 |
38 | 270 /* |
271 uint8_t OnAction_ExitHardw (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
272 { | |
273 return EXIT_TO_MENU; | |
274 } | |
275 */ | |
276 | |
277 void refresh_O2Sensors(void) | |
278 { | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
279 char text[32]; |
38 | 280 uint16_t y_line; |
281 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
282 const SDiveState *pStateReal = stateRealGetPointer(); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
283 |
38 | 284 text[0] = '\001'; |
285 text[1] = TXT_o2Sensors; | |
286 text[2] = 0; | |
287 write_topline(text); | |
288 | |
289 | |
290 text[0] = TXT_2BYTE; | |
291 text[1] = TXT2BYTE_Sensor; | |
292 text[2] = ' '; | |
293 text[3] = '1'; | |
294 text[4] = 0; | |
295 write_label_var( 96, 340, ME_Y_LINE1, &FontT48, text); | |
296 text[3] = '2'; | |
297 write_label_var( 96, 340, ME_Y_LINE2, &FontT48, text); | |
298 text[3] = '3'; | |
299 write_label_var( 96, 340, ME_Y_LINE3, &FontT48, text); | |
300 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
301 if(settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_OPTIC) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
302 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
303 text[0] = TXT_2BYTE; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
304 text[1] = TXT2BYTE_HUDbattery; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
305 text[2] = 0; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
306 write_label_var( 30, 340, ME_Y_LINE4, &FontT48, text); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
307 |
38 | 308 |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
309 snprintf(text, 20,"%01.3fV", get_HUD_battery_voltage_V()); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
310 write_label_var( 400, 800, ME_Y_LINE4, &FontT48, text); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
311 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
312 else |
38 | 313 { |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
314 text[0] = TXT_2BYTE; |
584 | 315 text[1] = TXT2BYTE_O2Calib; |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
316 text[2] = 0; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
317 write_label_var( 30, 340, ME_Y_LINE4, &FontT48, text); |
584 | 318 snprintf(text, 20,"%d%%", O2_calib_gas); |
319 write_label_var( 400, 800, ME_Y_LINE4, &FontT48, text); | |
38 | 320 } |
321 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
322 for(int i=0;i<3;i++) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
323 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
324 snprintf(text, 20,"%01.2f, %01.1fmV", pStateReal->lifeData.ppO2Sensor_bar[i], pStateReal->lifeData.sensorVoltage_mV[i]); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
325 y_line = ME_Y_LINE1 + (i * ME_Y_LINE_STEP); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
326 write_label_var( 400, 800, y_line, &FontT48, text); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
327 } |
38 | 328 |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
329 if(DataEX_external_ADC_Present()) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
330 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
331 text[0] = TXT_2BYTE; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
332 text[1] = TXT2BYTE_O2Interface; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
333 text[2] = 0; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
334 write_label_var( 30, 340, ME_Y_LINE6, &FontT48, text); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
335 text[0] = TXT_2BYTE; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
336 switch(settingsGetPointer()->ppo2sensors_source) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
337 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
338 default: |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
339 case O2_SENSOR_SOURCE_OPTIC: text[1] = TXT2BYTE_O2IFOptic; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
340 break; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
341 case O2_SENSOR_SOURCE_ANALOG: text[1] = TXT2BYTE_O2IFAnalog; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
342 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
343 text[2] = 0; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
344 write_label_var( 400, 800, ME_Y_LINE6, &FontT48, text); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
345 } |
38 | 346 tMenuEdit_refresh_field(StMHARD3_O2_Sensor1); |
347 tMenuEdit_refresh_field(StMHARD3_O2_Sensor2); | |
348 tMenuEdit_refresh_field(StMHARD3_O2_Sensor3); | |
349 tMenuEdit_refresh_field(StMHARD3_O2_Fallback); | |
350 | |
584 | 351 if(get_globalState() == StMHARD3_O2_Calibrate) |
352 { | |
353 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_O2Calib,TXT2BYTE_ButtonPlus); | |
354 } | |
355 else | |
356 { | |
357 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
358 } | |
38 | 359 } |
360 | |
361 | |
362 void openEdit_O2Sensors(void) | |
363 { | |
364 char text[2]; | |
365 uint8_t sensorActive[3]; | |
366 | |
367 sensorActive[0] = 1; | |
368 sensorActive[1] = 1; | |
369 sensorActive[2] = 1; | |
370 if(settingsGetPointer()->ppo2sensors_deactivated & 1) | |
371 sensorActive[0] = 0; | |
372 if(settingsGetPointer()->ppo2sensors_deactivated & 2) | |
373 sensorActive[1] = 0; | |
374 if(settingsGetPointer()->ppo2sensors_deactivated & 4) | |
375 sensorActive[2] = 0; | |
376 | |
377 write_field_on_off(StMHARD3_O2_Sensor1, 30, 95, ME_Y_LINE1, &FontT48, "", sensorActive[0]); | |
378 write_field_on_off(StMHARD3_O2_Sensor2, 30, 95, ME_Y_LINE2, &FontT48, "", sensorActive[1]); | |
379 write_field_on_off(StMHARD3_O2_Sensor3, 30, 95, ME_Y_LINE3, &FontT48, "", sensorActive[2]); | |
380 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
381 if(settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANALOG) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
382 { |
584 | 383 write_label_fix( 30, 800, ME_Y_LINE4, &FontT48, TXT2BYTE_O2Calib); |
384 write_label_var( 400, 800, ME_Y_LINE4, &FontT48, "\016\016 %\017"); | |
385 | |
673
d7c5d592076b
Show 98% in case of Oxygen as the calibrating gas
heinrichsweikamp
parents:
605
diff
changeset
|
386 write_field_toggle(StMHARD3_O2_Calibrate, 400, 800, ME_Y_LINE4, &FontT48, "", 21, 98); |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
387 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
388 |
38 | 389 text[0] = TXT_Fallback; |
390 text[1] = 1; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
391 |
38 | 392 write_field_on_off(StMHARD3_O2_Fallback, 30, 500, ME_Y_LINE5, &FontT48, text, settingsGetPointer()->fallbackToFixedSetpoint); |
393 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
394 if(DataEX_external_ADC_Present()) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
395 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
396 write_field_button(StMHARD3_O2_Source, 30, 800, ME_Y_LINE6, &FontT48, ""); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
397 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
398 |
38 | 399 setEvent(StMHARD3_O2_Sensor1, (uint32_t)OnAction_Sensor1); |
400 setEvent(StMHARD3_O2_Sensor2, (uint32_t)OnAction_Sensor2); | |
401 setEvent(StMHARD3_O2_Sensor3, (uint32_t)OnAction_Sensor3); | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
402 if(settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANALOG) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
403 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
404 setEvent(StMHARD3_O2_Calibrate, (uint32_t)OnAction_O2_Calibrate); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
405 } |
38 | 406 setEvent(StMHARD3_O2_Fallback, (uint32_t)OnAction_O2_Fallback); |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
407 if(DataEX_external_ADC_Present()) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
408 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
409 setEvent(StMHARD3_O2_Source, (uint32_t)OnAction_O2_Source); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
410 } |
38 | 411 |
412 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
413 } | |
414 | |
415 | |
416 uint8_t OnAction_Sensor1(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
417 { | |
418 if(settingsGetPointer()->ppo2sensors_deactivated & 1) | |
419 { | |
420 settingsGetPointer()->ppo2sensors_deactivated &= 4+2; | |
421 tMenuEdit_set_on_off(editId, 1); | |
422 } | |
423 else | |
424 { | |
425 settingsGetPointer()->ppo2sensors_deactivated |= 1; | |
426 tMenuEdit_set_on_off(editId, 0); | |
427 } | |
428 | |
429 return UPDATE_DIVESETTINGS; | |
430 } | |
431 | |
432 | |
433 uint8_t OnAction_Sensor2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
434 { | |
435 if(settingsGetPointer()->ppo2sensors_deactivated & 2) | |
436 { | |
437 settingsGetPointer()->ppo2sensors_deactivated &= 4+1; | |
438 tMenuEdit_set_on_off(editId, 1); | |
439 } | |
440 else | |
441 { | |
442 settingsGetPointer()->ppo2sensors_deactivated |= 2; | |
443 tMenuEdit_set_on_off(editId, 0); | |
444 } | |
445 | |
446 return UPDATE_DIVESETTINGS; | |
447 } | |
448 | |
449 | |
450 uint8_t OnAction_Sensor3(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
451 { | |
452 if(settingsGetPointer()->ppo2sensors_deactivated & 4) | |
453 { | |
454 settingsGetPointer()->ppo2sensors_deactivated &= 2+1; | |
455 tMenuEdit_set_on_off(editId, 1); | |
456 } | |
457 else | |
458 { | |
459 settingsGetPointer()->ppo2sensors_deactivated |= 4; | |
460 tMenuEdit_set_on_off(editId, 0); | |
461 } | |
462 | |
463 return UPDATE_DIVESETTINGS; | |
464 } | |
465 | |
466 | |
467 uint8_t OnAction_O2_Fallback (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
468 { | |
469 uint8_t fallback = settingsGetPointer()->fallbackToFixedSetpoint; | |
470 | |
471 if(fallback) | |
472 fallback = 0; | |
473 else | |
474 fallback = 1; | |
475 | |
476 settingsGetPointer()->fallbackToFixedSetpoint = fallback; | |
477 tMenuEdit_set_on_off(editId, fallback); | |
478 return UPDATE_DIVESETTINGS; | |
479 } | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
480 uint8_t OnAction_O2_Calibrate (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
481 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
482 uint8_t loop; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
483 const SDiveState *pStateReal = stateRealGetPointer(); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
484 SSettings* pSettings = settingsGetPointer(); |
584 | 485 uint8_t retVal = UNSPECIFIC_RETURN; |
486 float compensatedRef; | |
38 | 487 |
584 | 488 if(action == ACTION_BUTTON_ENTER_FINAL) |
489 { | |
490 if(O2_calib_gas == 21) | |
491 { | |
492 compensatedRef = O2_CALIB_FRACTION_AIR * pStateReal->lifeData.pressure_ambient_bar / 1.0; | |
493 } | |
494 else | |
495 { | |
605 | 496 compensatedRef = O2_CALIB_FRACTION_O2 * pStateReal->lifeData.pressure_ambient_bar / 1.0; |
584 | 497 } |
498 for(loop=0;loop<3;loop++) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
499 { |
584 | 500 if((pSettings->ppo2sensors_deactivated & (0x1 << loop)) == 0) |
501 { | |
502 if(pStateReal->lifeData.sensorVoltage_mV[loop] > 0.0001) /* sensor connected ?*/ | |
503 { | |
504 pSettings->ppo2sensors_calibCoeff[loop] = compensatedRef / pStateReal->lifeData.sensorVoltage_mV[loop]; | |
505 } | |
506 else | |
507 { | |
508 pSettings->ppo2sensors_calibCoeff[loop] = 0.0; | |
509 settingsGetPointer()->ppo2sensors_deactivated |= 0x1 << loop; | |
510 } | |
511 } | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
512 } |
584 | 513 tMenuEdit_newInput(editId, O2_calib_gas, 0, 0, 0); |
514 retVal = UPDATE_DIVESETTINGS; | |
515 } | |
516 if(action == ACTION_BUTTON_NEXT) | |
517 { | |
518 if(O2_calib_gas == 21) | |
519 { | |
673
d7c5d592076b
Show 98% in case of Oxygen as the calibrating gas
heinrichsweikamp
parents:
605
diff
changeset
|
520 O2_calib_gas = 98; |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
521 } |
584 | 522 else |
523 { | |
524 O2_calib_gas = 21; | |
525 } | |
526 } | |
527 retVal = O2_calib_gas; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
528 |
584 | 529 if(action == ACTION_BUTTON_BACK) |
530 { | |
531 exitMenuEditField(); | |
532 } | |
533 | |
534 return retVal; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
535 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
536 uint8_t OnAction_O2_Source (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
537 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
538 uint8_t source = settingsGetPointer()->ppo2sensors_source; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
539 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
540 if(source == O2_SENSOR_SOURCE_OPTIC) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
541 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
542 source = O2_SENSOR_SOURCE_ANALOG; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
543 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
544 else |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
545 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
546 source = O2_SENSOR_SOURCE_OPTIC; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
547 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
548 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
549 settingsGetPointer()->ppo2sensors_source = source; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
550 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
551 resetMenuEdit(CLUT_MenuPageHardware); /* rebuild menu structure (Hide HUD <=> Show Calibrate) */ |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
552 openEdit_O2Sensors(); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
553 return UPDATE_DIVESETTINGS; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
554 } |
38 | 555 |
556 void openEdit_Brightness(void) | |
557 { | |
558 uint8_t actualBrightness; | |
559 SSettings *pSettings = settingsGetPointer(); | |
560 | |
561 actualBrightness = pSettings->brightness; | |
562 actualBrightness++; | |
563 if(actualBrightness > 4) | |
564 actualBrightness = 0; | |
565 pSettings->brightness = actualBrightness; | |
566 exitEditWithUpdate(); | |
567 } | |
568 | |
569 | |
570 void buttonBalanceText_helper(uint8_t idOfButton, char *textOutput) | |
571 { | |
572 uint8_t txtcount = 0; | |
573 | |
574 if(idOfButton < 3) | |
575 { | |
576 textOutput[txtcount++] = '@' + settingsGetPointer()->buttonBalance[idOfButton]; | |
577 textOutput[txtcount++] = ' '; | |
578 textOutput[txtcount++] = ' '; | |
579 textOutput[txtcount++] = '('; | |
580 | |
581 switch(settingsGetPointer()->buttonBalance[idOfButton]) | |
582 { | |
583 case 1: | |
584 textOutput[txtcount++] = '-'; | |
585 textOutput[txtcount++] = '2'; | |
586 textOutput[txtcount++] = '0'; | |
587 break; | |
588 case 2: | |
589 textOutput[txtcount++] = '-'; | |
590 textOutput[txtcount++] = '1'; | |
591 textOutput[txtcount++] = '0'; | |
592 break; | |
593 case 3: | |
594 default: | |
595 textOutput[txtcount++] = '0'; | |
596 break; | |
597 case 4: | |
598 textOutput[txtcount++] = '+'; | |
599 textOutput[txtcount++] = '1'; | |
600 textOutput[txtcount++] = '0'; | |
601 break; | |
602 case 5: | |
603 textOutput[txtcount++] = '+'; | |
604 textOutput[txtcount++] = '2'; | |
605 textOutput[txtcount++] = '0'; | |
606 break; | |
607 } | |
608 textOutput[txtcount++] = ')'; | |
609 } | |
610 textOutput[txtcount++] = 0; | |
611 } | |
612 | |
613 /**# | |
614 ****************************************************************************** | |
615 * @brief BUTTONS | |
616 * @author heinrichs weikamp gmbh | |
617 * @version V 01 | |
618 * @date 15-Sept-2016 | |
619 ****************************************************************************** | |
620 * Button 0 is right, Button 1 is middle, Button 2 is left !!!! | |
621 * 2 1 0 (base value 3) | |
622 * Button 3 is used to store the base value, all others are balanced around this one! | |
623 * | |
624 */ | |
625 | |
626 void openEdit_ButtonSens(void) | |
627 { | |
628 char text[32]; | |
629 uint8_t sens; | |
630 const uint32_t eventListButtonBalance[3] = {StMHARD5_ButtonBalance1,StMHARD5_ButtonBalance2,StMHARD5_ButtonBalance3}; | |
631 | |
632 sens = (uint8_t)settingsGetPointer()->ButtonResponsiveness[3]; | |
633 write_field_3digit(StMHARD5_Button1, 360, 780, ME_Y_LINE1, &FontT48, "###", sens, 0, 0, 0); | |
634 | |
635 for(int i=2;i>=0;i--) | |
636 { | |
637 buttonBalanceText_helper(i,text); | |
638 write_field_button(eventListButtonBalance[i],360,500,ME_Y_LINE4-(i*ME_Y_LINE_STEP),&FontT48,text); | |
639 } | |
640 | |
641 | |
642 setEvent(StMHARD5_Button1, (uint32_t)OnAction_Button); | |
643 | |
644 for(int i=2;i>=0;i--) | |
645 { | |
646 setEvent(eventListButtonBalance[i], (uint32_t)OnAction_ButtonBalance); | |
647 } | |
648 | |
649 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
650 } | |
651 | |
652 | |
653 void refresh_ButtonValuesFromPIC(void) | |
654 { | |
655 uint8_t sens[3]; | |
656 char text[64]; | |
657 | |
658 text[0] = '\001'; | |
659 text[1] = TXT_2BYTE; | |
660 text[2] = TXT2BYTE_ButtonSensitivity; | |
661 text[3] = 0; | |
662 write_topline(text); | |
663 | |
664 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
665 | |
525
1f557e5f4b5a
Change color ID used in strings for light grey:
Ideenmodellierer
parents:
394
diff
changeset
|
666 text[0] = '\020'; // '\031'; |
38 | 667 text[1] = TXT_2BYTE; |
668 text[2] = TXT2BYTE_LowerIsLess; | |
669 text[3] = 0; | |
670 write_label_var( 20, 780, ME_Y_LINE5, &FontT42, text); | |
671 | |
672 for(int i=0;i<3;i++) | |
673 { | |
674 text[0] = TXT_2BYTE; | |
675 text[1] = TXT2BYTE_ButtonLeft+i; | |
676 text[2] = 0; | |
677 write_label_var( 20, 300, ME_Y_LINE2+(i*ME_Y_LINE_STEP), &FontT48, text); | |
678 } | |
679 | |
680 for(int i=0;i<3;i++) | |
681 { | |
682 sens[i] = settingsHelperButtonSens_translate_hwOS_values_to_percentage(stateRealGetPointer()->lifeData.buttonPICdata[i]); | |
683 } | |
684 snprintf(text,64,"(%03u %03u %03u)",sens[2],sens[1],sens[0]); | |
685 write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text); | |
686 | |
687 tMenuEdit_refresh_field(StMHARD5_Button1); | |
688 tMenuEdit_refresh_field(StMHARD5_ButtonBalance1); | |
689 tMenuEdit_refresh_field(StMHARD5_ButtonBalance2); | |
690 tMenuEdit_refresh_field(StMHARD5_ButtonBalance3); | |
691 } | |
692 | |
693 | |
694 uint8_t OnAction_Button(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
695 { | |
696 uint8_t digitContentNew, remainder; | |
697 uint32_t newSensitivityGlobal; | |
698 | |
699 if(action == ACTION_BUTTON_NEXT) | |
700 { | |
701 digitContentNew = digitContent - '0'; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
702 if(digitContentNew >= MAX_BUTTONRESPONSIVENESS_GUI) |
38 | 703 { |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
704 digitContentNew = MIN_BUTTONRESPONSIVENESS_GUI; |
38 | 705 } |
706 else | |
707 { | |
708 remainder = digitContentNew%5; | |
709 digitContentNew += 5 - remainder; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
710 if(digitContentNew >= MAX_BUTTONRESPONSIVENESS_GUI) |
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
711 digitContentNew = MAX_BUTTONRESPONSIVENESS_GUI; |
38 | 712 } |
713 return '0' + digitContentNew; | |
714 } | |
715 | |
716 if(action == ACTION_BUTTON_BACK) | |
717 { | |
718 digitContentNew = digitContent - '0'; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
719 if(digitContentNew <= MIN_BUTTONRESPONSIVENESS_GUI) |
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
720 digitContentNew = MAX_BUTTONRESPONSIVENESS_GUI; |
38 | 721 else |
722 { | |
723 remainder = digitContentNew%5; | |
724 if(remainder) | |
725 digitContentNew -= remainder; | |
726 else | |
727 digitContentNew -= 5; | |
728 } | |
729 return '0' + digitContentNew; | |
730 } | |
731 | |
732 if(action == ACTION_BUTTON_ENTER_FINAL) | |
733 { | |
734 evaluateNewString(editId, &newSensitivityGlobal, 0, 0, 0); | |
735 settingsHelperButtonSens_keepPercentageValues(newSensitivityGlobal, settingsGetPointer()->ButtonResponsiveness); | |
736 setButtonResponsiveness(settingsGetPointer()->ButtonResponsiveness); | |
737 return UNSPECIFIC_RETURN; | |
738 } | |
739 return digitContent; | |
740 } | |
741 | |
742 | |
743 uint8_t OnAction_ButtonBalance(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
744 { | |
745 int8_t idBalance = -1; | |
746 uint8_t *ptrSetting; | |
747 char text[32]; | |
748 | |
749 const uint32_t eventListButtonBalance[3] = {StMHARD5_ButtonBalance1,StMHARD5_ButtonBalance2,StMHARD5_ButtonBalance3}; | |
750 | |
751 idBalance = -1; | |
752 for(int i=0;i<3;i++) | |
753 { | |
754 if(editId == eventListButtonBalance[i]) | |
755 { | |
756 idBalance = i; | |
757 break; | |
758 } | |
759 } | |
760 | |
761 if((idBalance >= 0) && (idBalance < 3)) | |
762 { | |
763 ptrSetting = &settingsGetPointer()->buttonBalance[idBalance]; | |
764 | |
765 *ptrSetting += 1; | |
766 | |
767 if(*ptrSetting > 5) | |
768 *ptrSetting = 2; | |
769 | |
770 buttonBalanceText_helper(idBalance,text); | |
771 tMenuEdit_newButtonText(eventListButtonBalance[idBalance],text); | |
772 } | |
773 | |
774 return UNSPECIFIC_RETURN; | |
775 } |