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 } |
