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