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