Mercurial > public > ostc4
annotate Discovery/Src/tMenuEditHardware.c @ 710:8adf9b8fc7fa
Extension scrubber time:
In previous version only one scrubber timer was available. After movement of scruvver timer menu menu space became available allowing to upgrade the functionality to support two scrubbers. To make it easier to identify combination ID to used scrubber the date of the last usage of the scrubber timer has been added.
author | Ideenmodellierer |
---|---|
date | Tue, 08 Nov 2022 21:16:17 +0100 |
parents | c799151670d5 |
children | b9f699d2e3d0 |
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); | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
63 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
|
64 uint8_t OnAction_O2_Source (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
38 | 65 uint8_t OnAction_Button (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
66 uint8_t OnAction_ButtonBalance (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
605 | 67 // not required uint8_t OnAction_Bluetooth (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
38 | 68 |
69 /* Exported functions --------------------------------------------------------*/ | |
70 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
71 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
72 #define O2_CALIB_FRACTION_AIR (0.209F) |
605 | 73 #define O2_CALIB_FRACTION_O2 (0.98F) |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
74 |
584 | 75 static uint8_t O2_calib_gas = 21; |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
76 |
38 | 77 void openEdit_Hardware(uint8_t line) |
78 { | |
79 set_globalState_Menu_Line(line); | |
80 | |
81 switch(line) | |
82 { | |
83 case 1: | |
84 default: | |
85 openEdit_Bluetooth(); | |
86 break; | |
87 case 2: | |
708
7e3bf2c0cd40
Menu cleanup rebreather specific settings:
Ideenmodellierer
parents:
703
diff
changeset
|
88 resetMenuEdit(CLUT_MenuPageHardware); |
38 | 89 openEdit_Compass(); |
90 break; | |
91 case 3: | |
708
7e3bf2c0cd40
Menu cleanup rebreather specific settings:
Ideenmodellierer
parents:
703
diff
changeset
|
92 resetMenuEdit(CLUT_MenuPageHardware); |
38 | 93 openEdit_O2Sensors(); |
94 break; | |
95 case 4: | |
96 openEdit_Brightness(); | |
97 break; | |
98 case 5: | |
708
7e3bf2c0cd40
Menu cleanup rebreather specific settings:
Ideenmodellierer
parents:
703
diff
changeset
|
99 resetMenuEdit(CLUT_MenuPageHardware); |
38 | 100 openEdit_ButtonSens(); |
101 break; | |
102 case 6: | |
138 | 103 openEdit_FlipDisplay(); |
38 | 104 break; |
105 } | |
106 } | |
107 | |
108 /* Private functions ---------------------------------------------------------*/ | |
109 void openEdit_Bluetooth(void) | |
110 { | |
111 /* does not work like this resetEnterPressedToStateBeforeButtonAction(); */ | |
112 | |
113 SSettings *pSettings = settingsGetPointer(); | |
114 | |
115 if(pSettings->bluetoothActive == 0) | |
116 { | |
117 pSettings->bluetoothActive = 1; | |
118 MX_Bluetooth_PowerOn(); | |
394
717f335cc5c9
Added start of module configuration after eache modul power on
ideenmodellierer
parents:
314
diff
changeset
|
119 tComm_StartBlueModConfig(); |
38 | 120 } |
121 else | |
122 { | |
123 pSettings->bluetoothActive = 0; | |
124 MX_Bluetooth_PowerOff(); | |
125 } | |
126 exitMenuEdit_to_Menu_with_Menu_Update_do_not_write_settings_for_this_only(); | |
127 } | |
128 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
129 void openEdit_FlipDisplay(void) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
130 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
131 /* does not work like this resetEnterPressedToStateBeforeButtonAction(); */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
132 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
133 SSettings *pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
134 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
135 if(pSettings->FlipDisplay == 0) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
136 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
137 pSettings->FlipDisplay = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
138 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
139 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
140 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
141 pSettings->FlipDisplay = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
142 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
143 /* reinit all views */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
144 tHome_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
145 tI_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
146 tM_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
147 tMenuEdit_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
148 tInfoLog_init(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
149 tM_build_pages(); |
314 | 150 GFX_build_logo_frame(); |
151 GFX_build_hw_background_frame(); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
152 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
153 exitEditWithUpdate(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
154 exitMenuEdit_to_Home(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
155 } |
38 | 156 |
157 void refresh_CompassEdit(void) | |
158 { | |
159 uint16_t heading; | |
160 char text[32]; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
161 uint8_t textIndex = 0; |
38 | 162 |
163 text[0] = '\001'; | |
164 text[1] = TXT_2BYTE; | |
165 text[2] = TXT2BYTE_Compass; | |
166 text[3] = 0; | |
167 write_topline(text); | |
168 | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
169 if(settingsGetPointer()->compassInertia) |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
170 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
171 heading = (uint16_t)compass_getCompensated(); |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
172 } |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
173 else |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
174 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
175 heading = (uint16_t)stateUsed->lifeData.compass_heading; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
176 } |
38 | 177 snprintf(text,32,"\001%03i`",heading); |
178 write_label_var( 0, 800, ME_Y_LINE1, &FontT54, text); | |
179 | |
180 tMenuEdit_refresh_field(StMHARD2_Compass_SetCourse); | |
181 tMenuEdit_refresh_field(StMHARD2_Compass_Calibrate); | |
182 tMenuEdit_refresh_field(StMHARD2_Compass_ResetCourse); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
183 text[textIndex++] = TXT_2BYTE; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
184 text[textIndex++] = TXT2BYTE_CompassInertia; |
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++] = ' '; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
187 text[textIndex++] = '0' + settingsGetPointer()->compassInertia; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
188 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
189 write_label_var(30, 800, ME_Y_LINE5, &FontT48, text); |
38 | 190 |
191 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
192 } | |
193 | |
194 | |
195 void openEdit_Compass(void) | |
196 { | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
197 char text[10]; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
198 uint8_t textIndex = 0; |
38 | 199 |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
200 text[textIndex++] = '\001'; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
201 text[textIndex++] = TXT_2BYTE; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
202 text[textIndex++] = TXT2BYTE_Compass; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
203 text[textIndex++] = 0; |
38 | 204 write_topline(text); |
205 | |
206 text[0] = TXT_2BYTE; | |
207 text[2] = 0; | |
208 | |
209 text[1] = TXT2BYTE_SetBearing; | |
210 write_field_button(StMHARD2_Compass_SetCourse, 30, 800, ME_Y_LINE2, &FontT48, text); | |
211 | |
212 text[1] = TXT2BYTE_CompassCalib; | |
213 write_field_button(StMHARD2_Compass_Calibrate, 30, 800, ME_Y_LINE3, &FontT48, text); | |
214 | |
215 text[1] = TXT2BYTE_ResetBearing; | |
216 write_field_button(StMHARD2_Compass_ResetCourse, 30, 800, ME_Y_LINE4, &FontT48, text); | |
217 | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
218 text[1] = TXT2BYTE_CompassInertia; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
219 textIndex = 2; |
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++] = ' '; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
222 text[textIndex++] = '0' + settingsGetPointer()->compassInertia; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
223 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
224 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
|
225 |
38 | 226 setEvent(StMHARD2_Compass_SetCourse, (uint32_t)OnAction_Bearing); |
227 setEvent(StMHARD2_Compass_Calibrate, (uint32_t)OnAction_Compass); | |
228 setEvent(StMHARD2_Compass_ResetCourse, (uint32_t)OnAction_BearingClear); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
229 setEvent(StMHARD2_Compass_Inertia, (uint32_t)OnAction_InertiaLevel); |
38 | 230 |
231 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
232 } | |
233 | |
234 | |
235 uint8_t OnAction_Compass (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
236 { | |
237 calibrateCompass(); | |
238 return EXIT_TO_INFO_COMPASS; | |
239 } | |
240 | |
241 | |
242 uint8_t OnAction_Bearing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
243 { | |
709 | 244 if((int16_t)stateUsed->lifeData.compass_heading != -1) |
245 { | |
246 settingsGetPointer()->compassBearing = (int16_t)stateUsed->lifeData.compass_heading; | |
247 } | |
248 else | |
249 { | |
250 settingsGetPointer()->compassBearing = 0; | |
251 } | |
252 | |
38 | 253 if(settingsGetPointer()->compassBearing == 0) |
254 settingsGetPointer()->compassBearing = 360; | |
255 return UPDATE_AND_EXIT_TO_MENU; | |
256 } | |
257 | |
258 | |
259 uint8_t OnAction_BearingClear (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
260 { | |
261 settingsGetPointer()->compassBearing = 0; | |
262 return UPDATE_AND_EXIT_TO_MENU; | |
263 } | |
264 | |
539
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 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
|
267 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
268 uint8_t newLevel = 0; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
269 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
270 newLevel = settingsGetPointer()->compassInertia + 1; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
271 if(newLevel > MAX_COMPASS_COMP) |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
272 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
273 newLevel = 0; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
274 } |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
275 settingsGetPointer()->compassInertia = newLevel; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
276 return UPDATE_DIVESETTINGS; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
277 } |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
525
diff
changeset
|
278 |
38 | 279 /* |
280 uint8_t OnAction_ExitHardw (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
281 { | |
282 return EXIT_TO_MENU; | |
283 } | |
284 */ | |
285 | |
286 void refresh_O2Sensors(void) | |
287 { | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
288 char text[32]; |
38 | 289 uint16_t y_line; |
290 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
291 const SDiveState *pStateReal = stateRealGetPointer(); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
292 |
38 | 293 text[0] = '\001'; |
294 text[1] = TXT_o2Sensors; | |
295 text[2] = 0; | |
296 write_topline(text); | |
297 | |
298 | |
299 text[0] = TXT_2BYTE; | |
300 text[1] = TXT2BYTE_Sensor; | |
301 text[2] = ' '; | |
302 text[3] = '1'; | |
303 text[4] = 0; | |
304 write_label_var( 96, 340, ME_Y_LINE1, &FontT48, text); | |
305 text[3] = '2'; | |
306 write_label_var( 96, 340, ME_Y_LINE2, &FontT48, text); | |
307 text[3] = '3'; | |
308 write_label_var( 96, 340, ME_Y_LINE3, &FontT48, text); | |
309 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
310 if(settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_OPTIC) |
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 text[0] = TXT_2BYTE; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
313 text[1] = TXT2BYTE_HUDbattery; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
314 text[2] = 0; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
315 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
|
316 |
38 | 317 |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
318 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
|
319 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
|
320 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
321 else |
38 | 322 { |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
323 text[0] = TXT_2BYTE; |
584 | 324 text[1] = TXT2BYTE_O2Calib; |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
325 text[2] = 0; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
326 write_label_var( 30, 340, ME_Y_LINE4, &FontT48, text); |
584 | 327 snprintf(text, 20,"%d%%", O2_calib_gas); |
328 write_label_var( 400, 800, ME_Y_LINE4, &FontT48, text); | |
38 | 329 } |
330 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
331 for(int i=0;i<3;i++) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
332 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
333 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
|
334 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
|
335 write_label_var( 400, 800, y_line, &FontT48, text); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
336 } |
38 | 337 |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
338 if(DataEX_external_ADC_Present()) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
339 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
340 text[0] = TXT_2BYTE; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
341 text[1] = TXT2BYTE_O2Interface; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
342 text[2] = 0; |
708
7e3bf2c0cd40
Menu cleanup rebreather specific settings:
Ideenmodellierer
parents:
703
diff
changeset
|
343 write_label_var( 30, 340, ME_Y_LINE5, &FontT48, text); |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
344 text[0] = TXT_2BYTE; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
345 switch(settingsGetPointer()->ppo2sensors_source) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
346 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
347 default: |
689 | 348 case O2_SENSOR_SOURCE_OPTIC: text[1] = TXT2BYTE_O2IFOptic; |
349 text[2] = 0; | |
350 break; | |
351 case O2_SENSOR_SOURCE_ANALOG: text[1] = TXT2BYTE_O2IFAnalog; | |
352 text[2] = 0; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
353 break; |
703
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
354 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
|
355 text[2] = 0; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
356 break; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
357 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
|
358 text[2] = ' '; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
359 text[3] = '+'; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
360 text[4] = ' '; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
361 text[5] = TXT_2BYTE; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
362 text[6] = TXT2BYTE_O2IFDigital; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
363 text[7] = 0; |
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
364 break; |
689 | 365 #ifdef ENABLE_SENTINEL_MODE |
366 case O2_SENSOR_SOURCE_SENTINEL: snprintf(text, 10,"Sentinel"); | |
367 break; | |
368 #endif | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
369 } |
689 | 370 |
708
7e3bf2c0cd40
Menu cleanup rebreather specific settings:
Ideenmodellierer
parents:
703
diff
changeset
|
371 write_label_var( 400, 800, ME_Y_LINE5, &FontT48, text); |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
372 } |
38 | 373 tMenuEdit_refresh_field(StMHARD3_O2_Sensor1); |
374 tMenuEdit_refresh_field(StMHARD3_O2_Sensor2); | |
375 tMenuEdit_refresh_field(StMHARD3_O2_Sensor3); | |
376 | |
584 | 377 if(get_globalState() == StMHARD3_O2_Calibrate) |
378 { | |
379 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_O2Calib,TXT2BYTE_ButtonPlus); | |
380 } | |
381 else | |
382 { | |
383 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
384 } | |
38 | 385 } |
386 | |
387 | |
388 void openEdit_O2Sensors(void) | |
389 { | |
390 uint8_t sensorActive[3]; | |
391 | |
392 sensorActive[0] = 1; | |
393 sensorActive[1] = 1; | |
394 sensorActive[2] = 1; | |
395 if(settingsGetPointer()->ppo2sensors_deactivated & 1) | |
396 sensorActive[0] = 0; | |
397 if(settingsGetPointer()->ppo2sensors_deactivated & 2) | |
398 sensorActive[1] = 0; | |
399 if(settingsGetPointer()->ppo2sensors_deactivated & 4) | |
400 sensorActive[2] = 0; | |
401 | |
402 write_field_on_off(StMHARD3_O2_Sensor1, 30, 95, ME_Y_LINE1, &FontT48, "", sensorActive[0]); | |
403 write_field_on_off(StMHARD3_O2_Sensor2, 30, 95, ME_Y_LINE2, &FontT48, "", sensorActive[1]); | |
404 write_field_on_off(StMHARD3_O2_Sensor3, 30, 95, ME_Y_LINE3, &FontT48, "", sensorActive[2]); | |
405 | |
703
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
406 if((settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANALOG) || (settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) |
689 | 407 #ifdef ENABLE_SENTINEL_MODE |
408 || (settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_SENTINEL) | |
409 #endif | |
410 ) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
411 { |
584 | 412 write_label_fix( 30, 800, ME_Y_LINE4, &FontT48, TXT2BYTE_O2Calib); |
413 write_label_var( 400, 800, ME_Y_LINE4, &FontT48, "\016\016 %\017"); | |
414 | |
673
d7c5d592076b
Show 98% in case of Oxygen as the calibrating gas
heinrichsweikamp
parents:
605
diff
changeset
|
415 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
|
416 } |
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 if(DataEX_external_ADC_Present()) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
419 { |
708
7e3bf2c0cd40
Menu cleanup rebreather specific settings:
Ideenmodellierer
parents:
703
diff
changeset
|
420 write_field_button(StMHARD3_O2_Source, 30, 800, ME_Y_LINE5, &FontT48, ""); |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
421 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
422 |
38 | 423 setEvent(StMHARD3_O2_Sensor1, (uint32_t)OnAction_Sensor1); |
424 setEvent(StMHARD3_O2_Sensor2, (uint32_t)OnAction_Sensor2); | |
425 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
|
426 if((settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANALOG) || (settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) |
689 | 427 #ifdef ENABLE_SENTINEL_MODE |
428 || (settingsGetPointer()->ppo2sensors_source == O2_SENSOR_SOURCE_SENTINEL) | |
429 #endif | |
430 ) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
431 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
432 setEvent(StMHARD3_O2_Calibrate, (uint32_t)OnAction_O2_Calibrate); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
433 } |
708
7e3bf2c0cd40
Menu cleanup rebreather specific settings:
Ideenmodellierer
parents:
703
diff
changeset
|
434 |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
435 if(DataEX_external_ADC_Present()) |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
436 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
437 setEvent(StMHARD3_O2_Source, (uint32_t)OnAction_O2_Source); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
438 } |
38 | 439 |
440 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
441 } | |
442 | |
443 | |
444 uint8_t OnAction_Sensor1(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
445 { | |
446 if(settingsGetPointer()->ppo2sensors_deactivated & 1) | |
447 { | |
448 settingsGetPointer()->ppo2sensors_deactivated &= 4+2; | |
449 tMenuEdit_set_on_off(editId, 1); | |
450 } | |
451 else | |
452 { | |
453 settingsGetPointer()->ppo2sensors_deactivated |= 1; | |
454 tMenuEdit_set_on_off(editId, 0); | |
455 } | |
456 | |
457 return UPDATE_DIVESETTINGS; | |
458 } | |
459 | |
460 | |
461 uint8_t OnAction_Sensor2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
462 { | |
463 if(settingsGetPointer()->ppo2sensors_deactivated & 2) | |
464 { | |
465 settingsGetPointer()->ppo2sensors_deactivated &= 4+1; | |
466 tMenuEdit_set_on_off(editId, 1); | |
467 } | |
468 else | |
469 { | |
470 settingsGetPointer()->ppo2sensors_deactivated |= 2; | |
471 tMenuEdit_set_on_off(editId, 0); | |
472 } | |
473 | |
474 return UPDATE_DIVESETTINGS; | |
475 } | |
476 | |
477 | |
478 uint8_t OnAction_Sensor3(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
479 { | |
480 if(settingsGetPointer()->ppo2sensors_deactivated & 4) | |
481 { | |
482 settingsGetPointer()->ppo2sensors_deactivated &= 2+1; | |
483 tMenuEdit_set_on_off(editId, 1); | |
484 } | |
485 else | |
486 { | |
487 settingsGetPointer()->ppo2sensors_deactivated |= 4; | |
488 tMenuEdit_set_on_off(editId, 0); | |
489 } | |
490 | |
491 return UPDATE_DIVESETTINGS; | |
492 } | |
493 | |
494 | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
495 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
|
496 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
497 uint8_t loop; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
498 const SDiveState *pStateReal = stateRealGetPointer(); |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
499 SSettings* pSettings = settingsGetPointer(); |
584 | 500 uint8_t retVal = UNSPECIFIC_RETURN; |
501 float compensatedRef; | |
38 | 502 |
584 | 503 if(action == ACTION_BUTTON_ENTER_FINAL) |
504 { | |
505 if(O2_calib_gas == 21) | |
506 { | |
507 compensatedRef = O2_CALIB_FRACTION_AIR * pStateReal->lifeData.pressure_ambient_bar / 1.0; | |
508 } | |
509 else | |
510 { | |
605 | 511 compensatedRef = O2_CALIB_FRACTION_O2 * pStateReal->lifeData.pressure_ambient_bar / 1.0; |
584 | 512 } |
513 for(loop=0;loop<3;loop++) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
514 { |
584 | 515 if((pSettings->ppo2sensors_deactivated & (0x1 << loop)) == 0) |
516 { | |
517 if(pStateReal->lifeData.sensorVoltage_mV[loop] > 0.0001) /* sensor connected ?*/ | |
518 { | |
519 pSettings->ppo2sensors_calibCoeff[loop] = compensatedRef / pStateReal->lifeData.sensorVoltage_mV[loop]; | |
520 } | |
521 else | |
522 { | |
523 pSettings->ppo2sensors_calibCoeff[loop] = 0.0; | |
524 settingsGetPointer()->ppo2sensors_deactivated |= 0x1 << loop; | |
525 } | |
526 } | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
527 } |
584 | 528 tMenuEdit_newInput(editId, O2_calib_gas, 0, 0, 0); |
529 retVal = UPDATE_DIVESETTINGS; | |
530 } | |
531 if(action == ACTION_BUTTON_NEXT) | |
532 { | |
533 if(O2_calib_gas == 21) | |
534 { | |
673
d7c5d592076b
Show 98% in case of Oxygen as the calibrating gas
heinrichsweikamp
parents:
605
diff
changeset
|
535 O2_calib_gas = 98; |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
536 } |
584 | 537 else |
538 { | |
539 O2_calib_gas = 21; | |
540 } | |
541 } | |
542 retVal = O2_calib_gas; | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
543 |
584 | 544 if(action == ACTION_BUTTON_BACK) |
545 { | |
546 exitMenuEditField(); | |
547 } | |
548 | |
549 return retVal; | |
562
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 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
|
552 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
553 uint8_t source = settingsGetPointer()->ppo2sensors_source; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
554 |
689 | 555 source++; |
556 if(source == O2_SENSOR_SOURCE_MAX) | |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
557 { |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
558 source = O2_SENSOR_SOURCE_OPTIC; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
559 } |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
560 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
561 settingsGetPointer()->ppo2sensors_source = source; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
562 |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
563 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
|
564 openEdit_O2Sensors(); |
703
2f457024049b
Added selection of digital o2 sensor source to HW menu:
Ideenmodellierer
parents:
689
diff
changeset
|
565 tMenuEdit_select(StMHARD3_O2_Source); |
562
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
566 return UPDATE_DIVESETTINGS; |
ec76fa85009e
Added ADC sensor interface to O2 sensore menu structure:
Ideenmodellierer
parents:
539
diff
changeset
|
567 } |
38 | 568 |
569 void openEdit_Brightness(void) | |
570 { | |
571 uint8_t actualBrightness; | |
572 SSettings *pSettings = settingsGetPointer(); | |
573 | |
574 actualBrightness = pSettings->brightness; | |
575 actualBrightness++; | |
576 if(actualBrightness > 4) | |
577 actualBrightness = 0; | |
578 pSettings->brightness = actualBrightness; | |
579 exitEditWithUpdate(); | |
580 } | |
581 | |
582 | |
583 void buttonBalanceText_helper(uint8_t idOfButton, char *textOutput) | |
584 { | |
585 uint8_t txtcount = 0; | |
586 | |
587 if(idOfButton < 3) | |
588 { | |
589 textOutput[txtcount++] = '@' + settingsGetPointer()->buttonBalance[idOfButton]; | |
590 textOutput[txtcount++] = ' '; | |
591 textOutput[txtcount++] = ' '; | |
592 textOutput[txtcount++] = '('; | |
593 | |
594 switch(settingsGetPointer()->buttonBalance[idOfButton]) | |
595 { | |
596 case 1: | |
597 textOutput[txtcount++] = '-'; | |
598 textOutput[txtcount++] = '2'; | |
599 textOutput[txtcount++] = '0'; | |
600 break; | |
601 case 2: | |
602 textOutput[txtcount++] = '-'; | |
603 textOutput[txtcount++] = '1'; | |
604 textOutput[txtcount++] = '0'; | |
605 break; | |
606 case 3: | |
607 default: | |
608 textOutput[txtcount++] = '0'; | |
609 break; | |
610 case 4: | |
611 textOutput[txtcount++] = '+'; | |
612 textOutput[txtcount++] = '1'; | |
613 textOutput[txtcount++] = '0'; | |
614 break; | |
615 case 5: | |
616 textOutput[txtcount++] = '+'; | |
617 textOutput[txtcount++] = '2'; | |
618 textOutput[txtcount++] = '0'; | |
619 break; | |
620 } | |
621 textOutput[txtcount++] = ')'; | |
622 } | |
623 textOutput[txtcount++] = 0; | |
624 } | |
625 | |
626 /**# | |
627 ****************************************************************************** | |
628 * @brief BUTTONS | |
629 * @author heinrichs weikamp gmbh | |
630 * @version V 01 | |
631 * @date 15-Sept-2016 | |
632 ****************************************************************************** | |
633 * Button 0 is right, Button 1 is middle, Button 2 is left !!!! | |
634 * 2 1 0 (base value 3) | |
635 * Button 3 is used to store the base value, all others are balanced around this one! | |
636 * | |
637 */ | |
638 | |
639 void openEdit_ButtonSens(void) | |
640 { | |
641 char text[32]; | |
642 uint8_t sens; | |
643 const uint32_t eventListButtonBalance[3] = {StMHARD5_ButtonBalance1,StMHARD5_ButtonBalance2,StMHARD5_ButtonBalance3}; | |
644 | |
645 sens = (uint8_t)settingsGetPointer()->ButtonResponsiveness[3]; | |
646 write_field_3digit(StMHARD5_Button1, 360, 780, ME_Y_LINE1, &FontT48, "###", sens, 0, 0, 0); | |
647 | |
648 for(int i=2;i>=0;i--) | |
649 { | |
650 buttonBalanceText_helper(i,text); | |
651 write_field_button(eventListButtonBalance[i],360,500,ME_Y_LINE4-(i*ME_Y_LINE_STEP),&FontT48,text); | |
652 } | |
653 | |
654 | |
655 setEvent(StMHARD5_Button1, (uint32_t)OnAction_Button); | |
656 | |
657 for(int i=2;i>=0;i--) | |
658 { | |
659 setEvent(eventListButtonBalance[i], (uint32_t)OnAction_ButtonBalance); | |
660 } | |
661 | |
662 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
663 } | |
664 | |
665 | |
666 void refresh_ButtonValuesFromPIC(void) | |
667 { | |
668 uint8_t sens[3]; | |
669 char text[64]; | |
670 | |
671 text[0] = '\001'; | |
672 text[1] = TXT_2BYTE; | |
673 text[2] = TXT2BYTE_ButtonSensitivity; | |
674 text[3] = 0; | |
675 write_topline(text); | |
676 | |
677 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
678 | |
525
1f557e5f4b5a
Change color ID used in strings for light grey:
Ideenmodellierer
parents:
394
diff
changeset
|
679 text[0] = '\020'; // '\031'; |
38 | 680 text[1] = TXT_2BYTE; |
681 text[2] = TXT2BYTE_LowerIsLess; | |
682 text[3] = 0; | |
683 write_label_var( 20, 780, ME_Y_LINE5, &FontT42, text); | |
684 | |
685 for(int i=0;i<3;i++) | |
686 { | |
687 text[0] = TXT_2BYTE; | |
688 text[1] = TXT2BYTE_ButtonLeft+i; | |
689 text[2] = 0; | |
690 write_label_var( 20, 300, ME_Y_LINE2+(i*ME_Y_LINE_STEP), &FontT48, text); | |
691 } | |
692 | |
693 for(int i=0;i<3;i++) | |
694 { | |
695 sens[i] = settingsHelperButtonSens_translate_hwOS_values_to_percentage(stateRealGetPointer()->lifeData.buttonPICdata[i]); | |
696 } | |
697 snprintf(text,64,"(%03u %03u %03u)",sens[2],sens[1],sens[0]); | |
698 write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text); | |
699 | |
700 tMenuEdit_refresh_field(StMHARD5_Button1); | |
701 tMenuEdit_refresh_field(StMHARD5_ButtonBalance1); | |
702 tMenuEdit_refresh_field(StMHARD5_ButtonBalance2); | |
703 tMenuEdit_refresh_field(StMHARD5_ButtonBalance3); | |
704 } | |
705 | |
706 | |
707 uint8_t OnAction_Button(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
708 { | |
709 uint8_t digitContentNew, remainder; | |
710 uint32_t newSensitivityGlobal; | |
711 | |
712 if(action == ACTION_BUTTON_NEXT) | |
713 { | |
714 digitContentNew = digitContent - '0'; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
715 if(digitContentNew >= MAX_BUTTONRESPONSIVENESS_GUI) |
38 | 716 { |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
717 digitContentNew = MIN_BUTTONRESPONSIVENESS_GUI; |
38 | 718 } |
719 else | |
720 { | |
721 remainder = digitContentNew%5; | |
722 digitContentNew += 5 - remainder; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
723 if(digitContentNew >= MAX_BUTTONRESPONSIVENESS_GUI) |
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
724 digitContentNew = MAX_BUTTONRESPONSIVENESS_GUI; |
38 | 725 } |
726 return '0' + digitContentNew; | |
727 } | |
728 | |
729 if(action == ACTION_BUTTON_BACK) | |
730 { | |
731 digitContentNew = digitContent - '0'; | |
92
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
732 if(digitContentNew <= MIN_BUTTONRESPONSIVENESS_GUI) |
be35821a4974
Stable to test. button sensitiveness fix. + global_constants.
Dmitry Romanov <kitt@bk.ru>
parents:
38
diff
changeset
|
733 digitContentNew = MAX_BUTTONRESPONSIVENESS_GUI; |
38 | 734 else |
735 { | |
736 remainder = digitContentNew%5; | |
737 if(remainder) | |
738 digitContentNew -= remainder; | |
739 else | |
740 digitContentNew -= 5; | |
741 } | |
742 return '0' + digitContentNew; | |
743 } | |
744 | |
745 if(action == ACTION_BUTTON_ENTER_FINAL) | |
746 { | |
747 evaluateNewString(editId, &newSensitivityGlobal, 0, 0, 0); | |
748 settingsHelperButtonSens_keepPercentageValues(newSensitivityGlobal, settingsGetPointer()->ButtonResponsiveness); | |
749 setButtonResponsiveness(settingsGetPointer()->ButtonResponsiveness); | |
750 return UNSPECIFIC_RETURN; | |
751 } | |
752 return digitContent; | |
753 } | |
754 | |
755 | |
756 uint8_t OnAction_ButtonBalance(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
757 { | |
758 int8_t idBalance = -1; | |
759 uint8_t *ptrSetting; | |
760 char text[32]; | |
761 | |
762 const uint32_t eventListButtonBalance[3] = {StMHARD5_ButtonBalance1,StMHARD5_ButtonBalance2,StMHARD5_ButtonBalance3}; | |
763 | |
764 idBalance = -1; | |
765 for(int i=0;i<3;i++) | |
766 { | |
767 if(editId == eventListButtonBalance[i]) | |
768 { | |
769 idBalance = i; | |
770 break; | |
771 } | |
772 } | |
773 | |
774 if((idBalance >= 0) && (idBalance < 3)) | |
775 { | |
776 ptrSetting = &settingsGetPointer()->buttonBalance[idBalance]; | |
777 | |
778 *ptrSetting += 1; | |
779 | |
780 if(*ptrSetting > 5) | |
781 *ptrSetting = 2; | |
782 | |
783 buttonBalanceText_helper(idBalance,text); | |
784 tMenuEdit_newButtonText(eventListButtonBalance[idBalance],text); | |
785 } | |
786 | |
787 return UNSPECIFIC_RETURN; | |
788 } |