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