Mercurial > public > ostc4
annotate Discovery/Src/tMenuEditHardware.c @ 707:e81afd727993
Menu cleanup rebreather specific settings:
In the previous version the selection for Fix setpoint or sensor was in the deco menu and the Fallback option in the hardware menu. As they have a dependency and are only relevant for rebreather operation, they have been moved into the extra menu which is containing rebreather related data and which is only visible in rebreather mode.
author | Ideenmodellierer |
---|---|
date | Thu, 03 Nov 2022 20:44:21 +0100 |
parents | 2f457024049b |
children | 7e3bf2c0cd40 |
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: |
689 | 339 case O2_SENSOR_SOURCE_OPTIC: text[1] = TXT2BYTE_O2IFOptic; |
340 text[2] = 0; | |
341 break; | |
342 case O2_SENSOR_SOURCE_ANALOG: text[1] = TXT2BYTE_O2IFAnalog; | |
343 text[2] = 0; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
344 break; |
703
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
345 case O2_SENSOR_SOURCE_DIGITAL: text[1] = TXT2BYTE_O2IFDigital; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
346 text[2] = 0; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
347 break; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
348 case O2_SENSOR_SOURCE_ANADIG: text[1] = TXT2BYTE_O2IFAnalog; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
349 text[2] = ' '; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
350 text[3] = '+'; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
351 text[4] = ' '; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
352 text[5] = TXT_2BYTE; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
353 text[6] = TXT2BYTE_O2IFDigital; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
354 text[7] = 0; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
355 break; |
689 | 356 #ifdef ENABLE_SENTINEL_MODE |
357 case O2_SENSOR_SOURCE_SENTINEL: snprintf(text, 10,"Sentinel"); | |
358 break; | |
359 #endif | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
360 } |
689 | 361 |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
362 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
|
363 } |
38 | 364 tMenuEdit_refresh_field(StMHARD3_O2_Sensor1); |
365 tMenuEdit_refresh_field(StMHARD3_O2_Sensor2); | |
366 tMenuEdit_refresh_field(StMHARD3_O2_Sensor3); | |
367 tMenuEdit_refresh_field(StMHARD3_O2_Fallback); | |
368 | |
584 | 369 if(get_globalState() == StMHARD3_O2_Calibrate) |
370 { | |
371 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_O2Calib,TXT2BYTE_ButtonPlus); | |
372 } | |
373 else | |
374 { | |
375 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
376 } | |
38 | 377 } |
378 | |
379 | |
380 void openEdit_O2Sensors(void) | |
381 { | |
382 char text[2]; | |
383 uint8_t sensorActive[3]; | |
384 | |
385 sensorActive[0] = 1; | |
386 sensorActive[1] = 1; | |
387 sensorActive[2] = 1; | |
388 if(settingsGetPointer()->ppo2sensors_deactivated & 1) | |
389 sensorActive[0] = 0; | |
390 if(settingsGetPointer()->ppo2sensors_deactivated & 2) | |
391 sensorActive[1] = 0; | |
392 if(settingsGetPointer()->ppo2sensors_deactivated & 4) | |
393 sensorActive[2] = 0; | |
394 | |
395 write_field_on_off(StMHARD3_O2_Sensor1, 30, 95, ME_Y_LINE1, &FontT48, "", sensorActive[0]); | |
396 write_field_on_off(StMHARD3_O2_Sensor2, 30, 95, ME_Y_LINE2, &FontT48, "", sensorActive[1]); | |
397 write_field_on_off(StMHARD3_O2_Sensor3, 30, 95, ME_Y_LINE3, &FontT48, "", sensorActive[2]); | |
398 | |
703
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
399 if((settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANALOG) || (settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) |
689 | 400 #ifdef ENABLE_SENTINEL_MODE |
401 || (settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_SENTINEL) | |
402 #endif | |
403 ) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
404 { |
584 | 405 write_label_fix( 30, 800, ME_Y_LINE4, &FontT48, TXT2BYTE_O2Calib); |
406 write_label_var( 400, 800, ME_Y_LINE4, &FontT48, "\016\016 %\017"); | |
407 | |
673
d7c5d592076b
Show 98% in case of Oxygen as the calibrating gas
heinrichsweikamp
parents:
605
diff
changeset
|
408 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
|
409 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
410 |
38 | 411 text[0] = TXT_Fallback; |
412 text[1] = 1; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
413 |
38 | 414 write_field_on_off(StMHARD3_O2_Fallback, 30, 500, ME_Y_LINE5, &FontT48, text, settingsGetPointer()->fallbackToFixedSetpoint); |
415 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
416 if(DataEX_external_ADC_Present()) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
417 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
418 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
|
419 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
420 |
38 | 421 setEvent(StMHARD3_O2_Sensor1, (uint32_t)OnAction_Sensor1); |
422 setEvent(StMHARD3_O2_Sensor2, (uint32_t)OnAction_Sensor2); | |
423 setEvent(StMHARD3_O2_Sensor3, (uint32_t)OnAction_Sensor3); | |
703
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
424 if((settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANALOG) || (settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) |
689 | 425 #ifdef ENABLE_SENTINEL_MODE |
426 || (settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_SENTINEL) | |
427 #endif | |
428 ) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
429 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
430 setEvent(StMHARD3_O2_Calibrate, (uint32_t)OnAction_O2_Calibrate); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
431 } |
38 | 432 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
|
433 if(DataEX_external_ADC_Present()) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
434 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
435 setEvent(StMHARD3_O2_Source, (uint32_t)OnAction_O2_Source); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
436 } |
38 | 437 |
438 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
439 } | |
440 | |
441 | |
442 uint8_t OnAction_Sensor1(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
443 { | |
444 if(settingsGetPointer()->ppo2sensors_deactivated & 1) | |
445 { | |
446 settingsGetPointer()->ppo2sensors_deactivated &= 4+2; | |
447 tMenuEdit_set_on_off(editId, 1); | |
448 } | |
449 else | |
450 { | |
451 settingsGetPointer()->ppo2sensors_deactivated |= 1; | |
452 tMenuEdit_set_on_off(editId, 0); | |
453 } | |
454 | |
455 return UPDATE_DIVESETTINGS; | |
456 } | |
457 | |
458 | |
459 uint8_t OnAction_Sensor2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
460 { | |
461 if(settingsGetPointer()->ppo2sensors_deactivated & 2) | |
462 { | |
463 settingsGetPointer()->ppo2sensors_deactivated &= 4+1; | |
464 tMenuEdit_set_on_off(editId, 1); | |
465 } | |
466 else | |
467 { | |
468 settingsGetPointer()->ppo2sensors_deactivated |= 2; | |
469 tMenuEdit_set_on_off(editId, 0); | |
470 } | |
471 | |
472 return UPDATE_DIVESETTINGS; | |
473 } | |
474 | |
475 | |
476 uint8_t OnAction_Sensor3(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
477 { | |
478 if(settingsGetPointer()->ppo2sensors_deactivated & 4) | |
479 { | |
480 settingsGetPointer()->ppo2sensors_deactivated &= 2+1; | |
481 tMenuEdit_set_on_off(editId, 1); | |
482 } | |
483 else | |
484 { | |
485 settingsGetPointer()->ppo2sensors_deactivated |= 4; | |
486 tMenuEdit_set_on_off(editId, 0); | |
487 } | |
488 | |
489 return UPDATE_DIVESETTINGS; | |
490 } | |
491 | |
492 | |
493 uint8_t OnAction_O2_Fallback (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
494 { | |
495 uint8_t fallback = settingsGetPointer()->fallbackToFixedSetpoint; | |
496 | |
497 if(fallback) | |
498 fallback = 0; | |
499 else | |
500 fallback = 1; | |
501 | |
502 settingsGetPointer()->fallbackToFixedSetpoint = fallback; | |
503 tMenuEdit_set_on_off(editId, fallback); | |
504 return UPDATE_DIVESETTINGS; | |
505 } | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
506 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
|
507 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
508 uint8_t loop; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
509 const SDiveState *pStateReal = stateRealGetPointer(); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
510 SSettings* pSettings = settingsGetPointer(); |
584 | 511 uint8_t retVal = UNSPECIFIC_RETURN; |
512 float compensatedRef; | |
38 | 513 |
584 | 514 if(action == ACTION_BUTTON_ENTER_FINAL) |
515 { | |
516 if(O2_calib_gas == 21) | |
517 { | |
518 compensatedRef = O2_CALIB_FRACTION_AIR * pStateReal->lifeData.pressure_ambient_bar / 1.0; | |
519 } | |
520 else | |
521 { | |
605 | 522 compensatedRef = O2_CALIB_FRACTION_O2 * pStateReal->lifeData.pressure_ambient_bar / 1.0; |
584 | 523 } |
524 for(loop=0;loop<3;loop++) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
525 { |
584 | 526 if((pSettings->ppo2sensors_deactivated & (0x1 << loop)) == 0) |
527 { | |
528 if(pStateReal->lifeData.sensorVoltage_mV[loop] > 0.0001) /* sensor connected ?*/ | |
529 { | |
530 pSettings->ppo2sensors_calibCoeff[loop] = compensatedRef / pStateReal->lifeData.sensorVoltage_mV[loop]; | |
531 } | |
532 else | |
533 { | |
534 pSettings->ppo2sensors_calibCoeff[loop] = 0.0; | |
535 settingsGetPointer()->ppo2sensors_deactivated |= 0x1 << loop; | |
536 } | |
537 } | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
538 } |
584 | 539 tMenuEdit_newInput(editId, O2_calib_gas, 0, 0, 0); |
540 retVal = UPDATE_DIVESETTINGS; | |
541 } | |
542 if(action == ACTION_BUTTON_NEXT) | |
543 { | |
544 if(O2_calib_gas == 21) | |
545 { | |
673
d7c5d592076b
Show 98% in case of Oxygen as the calibrating gas
heinrichsweikamp
parents:
605
diff
changeset
|
546 O2_calib_gas = 98; |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
547 } |
584 | 548 else |
549 { | |
550 O2_calib_gas = 21; | |
551 } | |
552 } | |
553 retVal = O2_calib_gas; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
554 |
584 | 555 if(action == ACTION_BUTTON_BACK) |
556 { | |
557 exitMenuEditField(); | |
558 } | |
559 | |
560 return retVal; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
561 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
562 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
|
563 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
564 uint8_t source = settingsGetPointer()->ppo2sensors_source; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
565 |
689 | 566 source++; |
567 if(source == O2_SENSOR_SOURCE_MAX) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
568 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
569 source = O2_SENSOR_SOURCE_OPTIC; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
570 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
571 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
572 settingsGetPointer()->ppo2sensors_source = source; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
573 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
574 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
|
575 openEdit_O2Sensors(); |
703
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
576 tMenuEdit_select(StMHARD3_O2_Source); |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
577 return UPDATE_DIVESETTINGS; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
578 } |
38 | 579 |
580 void openEdit_Brightness(void) | |
581 { | |
582 uint8_t actualBrightness; | |
583 SSettings *pSettings = settingsGetPointer(); | |
584 | |
585 actualBrightness = pSettings->brightness; | |
586 actualBrightness++; | |
587 if(actualBrightness > 4) | |
588 actualBrightness = 0; | |
589 pSettings->brightness = actualBrightness; | |
590 exitEditWithUpdate(); | |
591 } | |
592 | |
593 | |
594 void buttonBalanceText_helper(uint8_t idOfButton, char *textOutput) | |
595 { | |
596 uint8_t txtcount = 0; | |
597 | |
598 if(idOfButton < 3) | |
599 { | |
600 textOutput[txtcount++] = '@' + settingsGetPointer()->buttonBalance[idOfButton]; | |
601 textOutput[txtcount++] = ' '; | |
602 textOutput[txtcount++] = ' '; | |
603 textOutput[txtcount++] = '('; | |
604 | |
605 switch(settingsGetPointer()->buttonBalance[idOfButton]) | |
606 { | |
607 case 1: | |
608 textOutput[txtcount++] = '-'; | |
609 textOutput[txtcount++] = '2'; | |
610 textOutput[txtcount++] = '0'; | |
611 break; | |
612 case 2: | |
613 textOutput[txtcount++] = '-'; | |
614 textOutput[txtcount++] = '1'; | |
615 textOutput[txtcount++] = '0'; | |
616 break; | |
617 case 3: | |
618 default: | |
619 textOutput[txtcount++] = '0'; | |
620 break; | |
621 case 4: | |
622 textOutput[txtcount++] = '+'; | |
623 textOutput[txtcount++] = '1'; | |
624 textOutput[txtcount++] = '0'; | |
625 break; | |
626 case 5: | |
627 textOutput[txtcount++] = '+'; | |
628 textOutput[txtcount++] = '2'; | |
629 textOutput[txtcount++] = '0'; | |
630 break; | |
631 } | |
632 textOutput[txtcount++] = ')'; | |
633 } | |
634 textOutput[txtcount++] = 0; | |
635 } | |
636 | |
637 /**# | |
638 ****************************************************************************** | |
639 * @brief BUTTONS | |
640 * @author heinrichs weikamp gmbh | |
641 * @version V 01 | |
642 * @date 15-Sept-2016 | |
643 ****************************************************************************** | |
644 * Button 0 is right, Button 1 is middle, Button 2 is left !!!! | |
645 * 2 1 0 (base value 3) | |
646 * Button 3 is used to store the base value, all others are balanced around this one! | |
647 * | |
648 */ | |
649 | |
650 void openEdit_ButtonSens(void) | |
651 { | |
652 char text[32]; | |
653 uint8_t sens; | |
654 const uint32_t eventListButtonBalance[3] = {StMHARD5_ButtonBalance1,StMHARD5_ButtonBalance2,StMHARD5_ButtonBalance3}; | |
655 | |
656 sens = (uint8_t)settingsGetPointer()->ButtonResponsiveness[3]; | |
657 write_field_3digit(StMHARD5_Button1, 360, 780, ME_Y_LINE1, &FontT48, "###", sens, 0, 0, 0); | |
658 | |
659 for(int i=2;i>=0;i--) | |
660 { | |
661 buttonBalanceText_helper(i,text); | |
662 write_field_button(eventListButtonBalance[i],360,500,ME_Y_LINE4-(i*ME_Y_LINE_STEP),&FontT48,text); | |
663 } | |
664 | |
665 | |
666 setEvent(StMHARD5_Button1, (uint32_t)OnAction_Button); | |
667 | |
668 for(int i=2;i>=0;i--) | |
669 { | |
670 setEvent(eventListButtonBalance[i], (uint32_t)OnAction_ButtonBalance); | |
671 } | |
672 | |
673 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
674 } | |
675 | |
676 | |
677 void refresh_ButtonValuesFromPIC(void) | |
678 { | |
679 uint8_t sens[3]; | |
680 char text[64]; | |
681 | |
682 text[0] = '\001'; | |
683 text[1] = TXT_2BYTE; | |
684 text[2] = TXT2BYTE_ButtonSensitivity; | |
685 text[3] = 0; | |
686 write_topline(text); | |
687 | |
688 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
689 | |
525
1f557e5f4b5a
Change color ID used in strings for light grey:
Ideenmodellierer
parents:
394
diff
changeset
|
690 text[0] = '\020'; // '\031'; |
38 | 691 text[1] = TXT_2BYTE; |
692 text[2] = TXT2BYTE_LowerIsLess; | |
693 text[3] = 0; | |
694 write_label_var( 20, 780, ME_Y_LINE5, &FontT42, text); | |
695 | |
696 for(int i=0;i<3;i++) | |
697 { | |
698 text[0] = TXT_2BYTE; | |
699 text[1] = TXT2BYTE_ButtonLeft+i; | |
700 text[2] = 0; | |
701 write_label_var( 20, 300, ME_Y_LINE2+(i*ME_Y_LINE_STEP), &FontT48, text); | |
702 } | |
703 | |
704 for(int i=0;i<3;i++) | |
705 { | |
706 sens[i] = settingsHelperButtonSens_translate_hwOS_values_to_percentage(stateRealGetPointer()->lifeData.buttonPICdata[i]); | |
707 } | |
708 snprintf(text,64,"(%03u %03u %03u)",sens[2],sens[1],sens[0]); | |
709 write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text); | |
710 | |
711 tMenuEdit_refresh_field(StMHARD5_Button1); | |
712 tMenuEdit_refresh_field(StMHARD5_ButtonBalance1); | |
713 tMenuEdit_refresh_field(StMHARD5_ButtonBalance2); | |
714 tMenuEdit_refresh_field(StMHARD5_ButtonBalance3); | |
715 } | |
716 | |
717 | |
718 uint8_t OnAction_Button(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
719 { | |
720 uint8_t digitContentNew, remainder; | |
721 uint32_t newSensitivityGlobal; | |
722 | |
723 if(action == ACTION_BUTTON_NEXT) | |
724 { | |
725 digitContentNew = digitContent - '0'; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
726 if(digitContentNew >= MAX_BUTTONRESPONSIVENESS_GUI) |
38 | 727 { |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
728 digitContentNew = MIN_BUTTONRESPONSIVENESS_GUI; |
38 | 729 } |
730 else | |
731 { | |
732 remainder = digitContentNew%5; | |
733 digitContentNew += 5 - remainder; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
734 if(digitContentNew >= MAX_BUTTONRESPONSIVENESS_GUI) |
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
735 digitContentNew = MAX_BUTTONRESPONSIVENESS_GUI; |
38 | 736 } |
737 return '0' + digitContentNew; | |
738 } | |
739 | |
740 if(action == ACTION_BUTTON_BACK) | |
741 { | |
742 digitContentNew = digitContent - '0'; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
743 if(digitContentNew <= MIN_BUTTONRESPONSIVENESS_GUI) |
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
744 digitContentNew = MAX_BUTTONRESPONSIVENESS_GUI; |
38 | 745 else |
746 { | |
747 remainder = digitContentNew%5; | |
748 if(remainder) | |
749 digitContentNew -= remainder; | |
750 else | |
751 digitContentNew -= 5; | |
752 } | |
753 return '0' + digitContentNew; | |
754 } | |
755 | |
756 if(action == ACTION_BUTTON_ENTER_FINAL) | |
757 { | |
758 evaluateNewString(editId, &newSensitivityGlobal, 0, 0, 0); | |
759 settingsHelperButtonSens_keepPercentageValues(newSensitivityGlobal, settingsGetPointer()->ButtonResponsiveness); | |
760 setButtonResponsiveness(settingsGetPointer()->ButtonResponsiveness); | |
761 return UNSPECIFIC_RETURN; | |
762 } | |
763 return digitContent; | |
764 } | |
765 | |
766 | |
767 uint8_t OnAction_ButtonBalance(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
768 { | |
769 int8_t idBalance = -1; | |
770 uint8_t *ptrSetting; | |
771 char text[32]; | |
772 | |
773 const uint32_t eventListButtonBalance[3] = {StMHARD5_ButtonBalance1,StMHARD5_ButtonBalance2,StMHARD5_ButtonBalance3}; | |
774 | |
775 idBalance = -1; | |
776 for(int i=0;i<3;i++) | |
777 { | |
778 if(editId == eventListButtonBalance[i]) | |
779 { | |
780 idBalance = i; | |
781 break; | |
782 } | |
783 } | |
784 | |
785 if((idBalance >= 0) && (idBalance < 3)) | |
786 { | |
787 ptrSetting = &settingsGetPointer()->buttonBalance[idBalance]; | |
788 | |
789 *ptrSetting += 1; | |
790 | |
791 if(*ptrSetting > 5) | |
792 *ptrSetting = 2; | |
793 | |
794 buttonBalanceText_helper(idBalance,text); | |
795 tMenuEdit_newButtonText(eventListButtonBalance[idBalance],text); | |
796 } | |
797 | |
798 return UNSPECIFIC_RETURN; | |
799 } |