Mercurial > public > hwos_code
comparison src/menu_tree.asm @ 634:4050675965ea
3.10 stable release
author | heinrichsweikamp |
---|---|
date | Tue, 28 Apr 2020 17:34:31 +0200 |
parents | 185ba2f91f59 |
children | 9a64914a8fca |
comparison
equal
deleted
inserted
replaced
633:690c48db7b5b | 634:4050675965ea |
---|---|
1 ;============================================================================= | 1 ;============================================================================= |
2 ; | 2 ; |
3 ; File menu_tree.asm next combined generation V3.08.8 | 3 ; File menu_tree.asm * combined next generation V3.09.5 |
4 ; | 4 ; |
5 ; OSTC Surface Menus | 5 ; OSTC Surface Menus |
6 ; | 6 ; |
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. | 7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. |
8 ;============================================================================= | 8 ;============================================================================= |
9 ; HISTORY | 9 ; HISTORY |
10 ; 2011-07-11 : [jDG] Creation. | 10 ; 2011-07-11 : [jDG] Creation. |
11 | 11 |
12 | |
13 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
14 ; | |
15 ; ATTENTION | |
16 ; | |
17 ; All Calls made via the Menu Macros need to go to Addresses within 0x0xxxx ! | |
18 ; | |
19 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
20 | |
21 | |
12 #include "hwos.inc" ; mandatory header | 22 #include "hwos.inc" ; mandatory header |
23 #include "shared_definitions.h" ; mailbox from/to p2_deco.c | |
13 #include "gaslist.inc" | 24 #include "gaslist.inc" |
14 #include "menu_processor.inc" | 25 #include "menu_processor.inc" |
15 #include "start.inc" | 26 #include "start.inc" |
16 #include "comm.inc" | 27 #include "comm.inc" |
17 #include "logbook.inc" | |
18 #include "tft.inc" | 28 #include "tft.inc" |
19 #include "eeprom_rs232.inc" | 29 #include "eeprom_rs232.inc" |
20 #include "external_flash.inc" | 30 #include "external_flash.inc" |
21 #include "shared_definitions.h" ; mailbox from/to p2_deco.c | |
22 #include "ghostwriter.inc" | |
23 #include "adc_lightsensor.inc" | 31 #include "adc_lightsensor.inc" |
24 #include "wait.inc" | 32 #include "wait.inc" |
25 #include "i2c.inc" | 33 #include "i2c.inc" |
26 #include "calibrate.inc" | 34 #include "calibrate.inc" |
27 #include "math.inc" | 35 #include "math.inc" |
28 #include "rtc.inc" | 36 #include "rtc.inc" |
29 | 37 #include "strings.inc" |
30 | 38 #include "tft_outputs.inc" |
31 extern do_demo_divemode | 39 #include "convert.inc" |
32 extern restart | 40 #include "colorschemes.inc" |
41 | |
42 | |
43 extern surfloop | |
44 extern logbook | |
45 extern demo_divemode | |
46 extern demo_planner | |
47 extern piezo_config | |
48 extern comm_firmware_update_exec | |
49 | |
33 extern option_check_and_store_all | 50 extern option_check_and_store_all |
34 extern option_reset | 51 extern option_reset |
35 extern do_demo_planner | |
36 extern comm_mode_ble ; will also set CPU speed to normal | |
37 extern piezo_config | |
38 extern option_reset_all | 52 extern option_reset_all |
39 extern surfloop | 53 extern option_adjust_group_member |
40 extern oColorSetDive | 54 extern option_inc |
55 extern option_dec | |
56 extern option_draw | |
57 | |
58 extern get_cpu_version | |
41 extern eeprom_deco_data_write | 59 extern eeprom_deco_data_write |
60 | |
42 | 61 |
43 IFDEF _ccr_pscr | 62 IFDEF _ccr_pscr |
44 extern option_cleanup_oCCRMode | 63 extern option_cleanup_oCCRMode |
45 ENDIF | 64 ENDIF |
46 | 65 |
47 IFDEF _compass | 66 IFDEF _compass |
48 extern compass_calibration_loop | 67 extern compass_calibration |
49 ENDIF | 68 ENDIF |
50 | 69 |
51 | 70 IFDEF _rx_functions |
52 menu_tree CODE | 71 extern get_transmitter_id_by_slot |
53 | 72 ENDIF |
54 ;----------------------------------------------------------------------------- | |
55 | 73 |
56 | 74 |
57 ;============================================================================= | 75 ;============================================================================= |
58 ; Main Menu | 76 surf_menu CODE 0x01000 ; needs to be at 0x0xxxx |
59 | 77 ;============================================================================= |
78 | |
79 | |
80 ;----------------------------------------------------------------------------- | |
81 ; Returning from a Menu Item | |
82 ; | |
60 do_return_main_menu: | 83 do_return_main_menu: |
61 call menu_processor_double_pop ; drop exit line and back to last line | 84 call menu_processor_double_pop ; drop exit line and back to last line |
62 bra do_main_menu_common | 85 bra main_menu_common ; continue with menu |
63 | 86 |
64 global do_main_menu | 87 |
65 do_main_menu: | 88 ;----------------------------------------------------------------------------- |
89 ; Entry Point for Main Menu | |
90 ; | |
91 global main_menu | |
92 main_menu: | |
66 movff active_customview,customview_surfmode ; save last custom view | 93 movff active_customview,customview_surfmode ; save last custom view |
67 clrf MS_flags_imprint ; clear all flags for data imprinting | 94 clrf MS_flags_imprint ; clear all flags for data imprinting |
68 | |
69 global do_main_menu2 | |
70 do_main_menu2: ; entry point used by logbook.asm | |
71 call TFT_boot ; initialize display | 95 call TFT_boot ; initialize display |
72 call menu_processor_reset ; reset menu stack | 96 call menu_processor_reset ; reset menu stack |
73 | 97 |
74 do_main_menu_common: | 98 main_menu_common: |
75 IFDEF _ccr_pscr | 99 IFDEF _ccr_pscr |
76 MENU_BEGIN tMainMenu, .7 | 100 MENU_BEGIN tMainMenu, .7 |
77 MENU_CALL tLogbook, logbook | 101 MENU_CALL tLogbook, do_logbook |
78 MENU_CALL tGasSetup, do_gas_menu | 102 MENU_CALL tGasSetup, do_menu_gas |
79 MENU_CALL tCCRSetup, do_ccr_menu | 103 MENU_CALL tCCRSetup, do_menu_ccr |
80 MENU_CALL tDiveModeMenu, do_divemode_menu | 104 MENU_CALL tDiveModeMenu, do_menu_dive |
81 MENU_CALL tSimulator, do_simulator_menu | 105 MENU_CALL tSimulator, do_menu_simulator |
82 MENU_CALL tSystSets, do_settings_menu | 106 MENU_CALL tSystSets, do_menu_settings |
83 MENU_CALL tExit, do_restart | 107 MENU_CALL tExit, do_restart |
84 MENU_END | 108 MENU_END |
85 ELSE | 109 ELSE |
86 MENU_BEGIN tMainMenu, .6 | 110 MENU_BEGIN tMainMenu, .6 |
87 MENU_CALL tLogbook, logbook | 111 MENU_CALL tLogbook, do_logbook |
88 MENU_CALL tGasSetup, do_gas_menu | 112 MENU_CALL tGasSetup, do_menu_gas |
89 MENU_CALL tDiveModeMenu, do_divemode_menu | 113 MENU_CALL tDiveModeMenu, do_menu_dive |
90 MENU_CALL tSimulator, do_simulator_menu | 114 MENU_CALL tSimulator, do_menu_simulator |
91 MENU_CALL tSystSets, do_settings_menu | 115 MENU_CALL tSystSets, do_menu_settings |
92 MENU_CALL tExit, do_restart | 116 MENU_CALL tExit, do_restart |
93 MENU_END | 117 MENU_END |
94 ENDIF | 118 ENDIF ; _ccr_pscr |
95 | 119 |
96 | 120 |
121 ;----------------------------------------------------------------------------- | |
122 ; Call Function - start Logbook | |
123 ; | |
124 do_logbook: | |
125 goto logbook ; code is hosted in logbook.asm | |
126 | |
127 | |
128 ;----------------------------------------------------------------------------- | |
129 ; Call Function - exit Menu | |
130 ; | |
97 do_restart: | 131 do_restart: |
98 bsf restart_fast ; skip logos and waits an restart | 132 bsf restart_fast ; skip logos and waits an restart |
99 goto restart ; restart into surface mode | 133 goto restart ; restart into surface mode |
100 | 134 |
101 ;============================================================================= | |
102 ; CCR Setup | |
103 | 135 |
104 IFDEF _ccr_pscr | 136 IFDEF _ccr_pscr |
105 | 137 |
106 do_return_ccr_menu: | 138 ;----------------------------------------------------------------------------- |
139 ; returning to CCR / pSCR Setup | |
140 ; | |
141 do_return_menu_ccr: | |
107 call menu_processor_double_pop ; drop exit line and back to last line | 142 call menu_processor_double_pop ; drop exit line and back to last line |
108 | 143 ;bra do_menu_ccr |
109 do_ccr_menu: | 144 |
145 | |
146 ;----------------------------------------------------------------------------- | |
147 ; CCR / pSCR Setup - 1st Level | |
148 ; | |
149 do_menu_ccr: | |
110 call option_cleanup_oCCRMode ; in pSCR mode, revert AutoSP (2) to calculated SP (0) | 150 call option_cleanup_oCCRMode ; in pSCR mode, revert AutoSP (2) to calculated SP (0) |
111 | 151 |
112 IFDEF _external_sensor | 152 IFDEF _external_sensor |
153 | |
113 bcf imprint_sensor_mv ; stop imprinting of live O2 sensor mV data | 154 bcf imprint_sensor_mv ; stop imprinting of live O2 sensor mV data |
114 btfsc analog_o2_input | 155 btfss ext_input_s8_ana ; S8/analog sensor input available? |
115 bra do_ccr_menu_cR | 156 bra do_menu_ccr_2 ; NO - do OSTC 2 menu |
116 ENDIF | 157 ;bra do_menu_ccr_cR ; YES - do OSTC cR menu |
117 | 158 |
118 MENU_BEGIN tCCRSetup, .5 ; OSTC3 menu (and currently also the OSTC2 menu) | 159 do_menu_ccr_cR: ; OSTC cR menu |
119 MENU_OPTION tCCRMode, oCCRMode, 0 | 160 MENU_BEGIN tCCRSetup, .6 |
120 MENU_CALL tDiluentSetup, do_diluent_setup | 161 MENU_OPT_INC tCCRMode, oCCRMode |
121 MENU_CALL tFixedSetpoints, do_fixed_setpoints | 162 MENU_CALL tCalibrateMenu, do_menu_calibrate |
122 MENU_CALL tMore, do_ccr_menu_more | 163 MENU_CALL tDiluentSetup, do_menu_diluent |
164 MENU_CALL tFixedSetpoints, do_menu_setpoints | |
165 MENU_CALL tMore, do_menu_ccr_more | |
123 MENU_CALL tBack, do_return_main_menu | 166 MENU_CALL tBack, do_return_main_menu |
124 MENU_END | 167 MENU_END |
125 | 168 |
126 | 169 ENDIF ; _external_sensor |
170 | |
171 do_menu_ccr_2: | |
172 MENU_BEGIN tCCRSetup, .5 ; OSTC 2 menu | |
173 MENU_OPT_INC tCCRMode, oCCRMode | |
174 MENU_CALL tDiluentSetup, do_menu_diluent | |
175 MENU_CALL tFixedSetpoints, do_menu_setpoints | |
176 MENU_CALL tMore, do_menu_ccr_more | |
177 MENU_CALL tBack, do_return_main_menu | |
178 MENU_END | |
179 | |
180 | |
181 ;----------------------------------------------------------------------------- | |
182 ; CCR / pSCR Setup - 2nd Level | |
183 ; | |
184 do_menu_ccr_more: | |
127 IFDEF _external_sensor | 185 IFDEF _external_sensor |
128 | 186 MENU_BEGIN tCCRSetup, .7 ; CCR/pSCR more menu |
129 do_ccr_menu_cR: ; cR menu | 187 MENU_OPT_INC tS8Mode, oS8Mode |
130 MENU_BEGIN tCCRSetup, .6 | 188 MENU_OPT_INC tCCmaxFracO2, oCCmaxFracO2 |
131 MENU_OPTION tCCRMode, oCCRMode, 0 | 189 MENU_OPT_INC tDilppO2Check, oDilppO2Check |
132 MENU_CALL tCalibrateMenu, do_calibrate_menu | 190 MENU_OPT_INC tGasDensityCheck, oGasDensityCheck |
133 MENU_CALL tDiluentSetup, do_diluent_setup | 191 MENU_OPT_INC tPSCR_O2_drop, oPSCR_drop |
134 MENU_CALL tFixedSetpoints, do_fixed_setpoints | 192 MENU_OPT_INC tPSCR_lungratio, oPSCR_lungratio |
135 MENU_CALL tMore, do_ccr_menu_more | 193 MENU_CALL tBack, do_return_menu_ccr |
136 MENU_CALL tBack, do_return_main_menu | 194 MENU_END |
137 MENU_END | 195 ELSE |
138 | 196 MENU_BEGIN tCCRSetup, .6 ; CCR/pSCR more menu |
139 | 197 MENU_OPT_INC tCCmaxFracO2, oCCmaxFracO2 |
140 do_calibrate_menu: | 198 MENU_OPT_INC tDilppO2Check, oDilppO2Check |
141 call enable_ir_s8 ; enable IR/S8-Port | 199 MENU_OPT_INC tGasDensityCheck, oGasDensityCheck |
200 MENU_OPT_INC tPSCR_O2_drop, oPSCR_drop | |
201 MENU_OPT_INC tPSCR_lungratio, oPSCR_lungratio | |
202 MENU_CALL tBack, do_return_menu_ccr | |
203 MENU_END | |
204 ENDIF ; _external_sensor | |
205 | |
206 ENDIF ; _ccr_pscr | |
207 | |
208 | |
209 IFDEF _external_sensor | |
210 | |
211 ;----------------------------------------------------------------------------- | |
212 ; Calibration Menu | |
213 ; | |
214 do_menu_calibrate: | |
215 call enable_ir_s8_analog ; enable IR/S8/analog interface | |
142 bsf imprint_sensor_mv ; start imprinting of live O2 sensor mV data | 216 bsf imprint_sensor_mv ; start imprinting of live O2 sensor mV data |
143 | 217 |
144 do_calibrate_menu2: | |
145 MENU_BEGIN tCalibrateMenu, .6 | 218 MENU_BEGIN tCalibrateMenu, .6 |
146 MENU_CALL tDiveHudMask1, 0 | 219 MENU_CALL tDiveHudMask1, 0 ; data will be superimposed by housekeeping |
147 MENU_CALL tDiveHudMask2, 0 | 220 MENU_CALL tDiveHudMask2, 0 ; ... |
148 MENU_CALL tDiveHudMask3, 0 | 221 MENU_CALL tDiveHudMask3, 0 ; ... |
149 MENU_OPTION tCalibrationGas, oCalGasO2, 0 | 222 MENU_OPT_INC tCalibrationGas, oCalGasO2 |
150 MENU_CALL tCalibrate, do_calibrate_mix | 223 MENU_CALL tCalibrate, do_calibrate |
151 MENU_CALL tBack, do_return_ccr_menu | 224 MENU_CALL tBack, do_return_menu_ccr |
152 MENU_END | 225 MENU_END |
153 | 226 |
154 | 227 |
155 do_calibrate_mix: | 228 ;----------------------------------------------------------------------------- |
229 ; Call Function - start Calibration, returns to Surface Mode | |
230 ; | |
231 do_calibrate: | |
156 call calibrate_mix ; calibrate with opt_calibration_O2_ratio, also calibrate S8 HUD if connected | 232 call calibrate_mix ; calibrate with opt_calibration_O2_ratio, also calibrate S8 HUD if connected |
157 WAITMS d'250' ; wait for HUD v3 | 233 WAITMS d'250' ; wait for HUD v3 |
158 movlw .9 | 234 movlw .9 ; load index of sensor mV custom view |
159 movff WREG,customview_surfmode ; show sensor mV custom view after restart | 235 movff WREG,customview_surfmode ; show this custom view when back in surface mode |
160 bsf restart_fast ; skip logos and waits an restart | 236 bra do_restart ; exit menu |
161 goto restart ; restart into surface mode | |
162 | 237 |
163 ENDIF ; _external_sensor | 238 ENDIF ; _external_sensor |
164 | 239 |
165 | 240 |
166 do_diluent_setup: | 241 IFDEF _ccr_pscr |
242 | |
243 ;----------------------------------------------------------------------------- | |
244 ; Diluent Setup | |
245 ; | |
246 do_menu_diluent: | |
167 bsf is_diluent_menu ; setting up diluents | 247 bsf is_diluent_menu ; setting up diluents |
168 bcf short_gas_descriptions ; do not use short versions of gaslist_strcat_gas_cd and gaslist_strcat_setpoint | 248 bcf short_gas_descriptions ; use long gas description format |
169 bcf better_gas_hint ; do not mark the best gas/diluent (to be used in dive mode only) | 249 bcf better_gas_hint ; do not mark the best gas/diluent (to be used in dive mode only) |
170 call gaslist_cleanup_list ; take care that only one gas can be first | 250 call gaslist_cleanup_list ; make sure there is only one gas being first |
171 | 251 |
172 MENU_BEGIN tDiluentSetup, .6 | 252 MENU_BEGIN tDiluentSetup, .6 |
173 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 253 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
174 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 254 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
175 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 255 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
176 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 256 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
177 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 257 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
178 MENU_CALL tBack, do_return_ccr_menu | 258 MENU_CALL tBack, do_return_menu_ccr |
179 MENU_END | 259 MENU_END |
180 | 260 |
181 | 261 |
182 do_return_fixed_setpoints: | 262 ;----------------------------------------------------------------------------- |
263 ; dynamic Title - show full Gas Description (just for info, active code is in other place) | |
264 ; | |
265 ;dyn_strcat_gas_PRODL: | |
266 ; goto gaslist_strcat_gas_PRODL ; code is hosted in gaslist.asm | |
267 | |
268 | |
269 ;----------------------------------------------------------------------------- | |
270 ; returning to Setpoint Setup | |
271 ; | |
272 do_return_menu_setpoints: | |
183 call menu_processor_double_pop ; drop exit line and back to last line | 273 call menu_processor_double_pop ; drop exit line and back to last line |
184 | 274 bcf block_option_value ; resume displaying of option values |
185 do_fixed_setpoints: | 275 ;bra do_menu_setpoints ; continue |
186 bcf short_gas_descriptions ; =1: use short versions of gaslist_strcat_gas_cd and gaslist_strcat_setpoint | 276 |
277 | |
278 ;----------------------------------------------------------------------------- | |
279 ; Setpoint Setup - 1st Level | |
280 ; | |
281 do_menu_setpoints: | |
282 bcf short_gas_descriptions ; use long gas description format | |
187 bcf better_gas_hint ; do not mark the best gas/diluent (to be used in dive mode only) | 283 bcf better_gas_hint ; do not mark the best gas/diluent (to be used in dive mode only) |
188 | 284 |
189 MENU_BEGIN tFixedSetpoints, .6 | 285 MENU_BEGIN tFixedSetpoints, .6 |
190 MENU_DYNAMIC gaslist_strcat_setpoint, do_edit_sp_menu | 286 MENU_DYNAMIC dyn_strcat_setpoint_prodl, do_menu_edit_sp |
191 MENU_DYNAMIC gaslist_strcat_setpoint, do_edit_sp_menu | 287 MENU_DYNAMIC dyn_strcat_setpoint_prodl, do_menu_edit_sp |
192 MENU_DYNAMIC gaslist_strcat_setpoint, do_edit_sp_menu | 288 MENU_DYNAMIC dyn_strcat_setpoint_prodl, do_menu_edit_sp |
193 MENU_DYNAMIC gaslist_strcat_setpoint, do_edit_sp_menu | 289 MENU_DYNAMIC dyn_strcat_setpoint_prodl, do_menu_edit_sp |
194 MENU_DYNAMIC gaslist_strcat_setpoint, do_edit_sp_menu | 290 MENU_DYNAMIC dyn_strcat_setpoint_prodl, do_menu_edit_sp |
195 MENU_CALL tBack, do_return_ccr_menu | 291 MENU_CALL tBack, do_return_menu_ccr |
196 MENU_END | 292 MENU_END |
197 | 293 |
198 | 294 |
199 do_edit_sp_menu: | 295 ;----------------------------------------------------------------------------- |
296 ; dynamic Title - show Setpoint Data | |
297 ; | |
298 dyn_strcat_setpoint_prodl: | |
299 goto gaslist_strcat_setpoint_PRODL ; function is hosted in gaslist.asm | |
300 | |
301 | |
302 ;----------------------------------------------------------------------------- | |
303 ; Setpoint Setup - 2nd Level | |
304 ; | |
305 do_menu_edit_sp: | |
200 movff PRODL,gaslist_gas ; get menu item we came from (0-4) | 306 movff PRODL,gaslist_gas ; get menu item we came from (0-4) |
307 bsf block_option_value ; suspend displaying of option values | |
201 | 308 |
202 MENU_BEGIN tFixedSetpoints, .5 | 309 MENU_BEGIN tFixedSetpoints, .5 |
203 MENU_DYNAMIC gaslist_strcat_setpoint_0, 0 | 310 MENU_DYNAMIC dyn_strcat_setpoint, 0 |
204 MENU_CALL tSPPlus, gaslist_spplus | 311 MENU_GRP_INC tSPPlus, oSP1ppO2 |
205 MENU_CALL tDepthPlus, gaslist_spdepthplus | 312 MENU_GRP_INCS tDepthPlus, oSP1Depth |
206 MENU_CALL tDepthMinus, gaslist_spdepthminus | 313 MENU_GRP_DECS tDepthMinus, oSP1Depth |
207 MENU_CALL tBack, do_return_fixed_setpoints | 314 MENU_CALL tBack, do_return_menu_setpoints |
208 MENU_END | 315 MENU_END |
209 | 316 |
210 | 317 |
211 do_ccr_menu_more: | 318 ;----------------------------------------------------------------------------- |
212 IFDEF _external_sensor | 319 ; dynamic Title - show Setpoint Data |
213 MENU_BEGIN tCCRSetup, .6 ; CCR/pSCR more menu | 320 ; |
214 MENU_OPTION tS8Mode, oS8Mode, 0 | 321 dyn_strcat_setpoint: |
215 MENU_OPTION tCCmaxFracO2, oCCmaxFracO2, 0 | 322 goto gaslist_strcat_setpoint ; function is hosted in gaslist.asm |
216 MENU_OPTION tDilppO2Check, oDilppO2Check, 0 | |
217 MENU_OPTION tPSCR_O2_drop, oPSCR_drop, 0 | |
218 MENU_OPTION tPSCR_lungratio, oPSCR_lungratio, 0 | |
219 MENU_CALL tBack, do_return_ccr_menu | |
220 MENU_END | |
221 ELSE | |
222 MENU_BEGIN tCCRSetup, .5 ; CCR/pSCR more menu | |
223 MENU_OPTION tCCmaxFracO2, oCCmaxFracO2, 0 | |
224 MENU_OPTION tDilppO2Check, oDilppO2Check, 0 | |
225 MENU_OPTION tPSCR_O2_drop, oPSCR_drop, 0 | |
226 MENU_OPTION tPSCR_lungratio, oPSCR_lungratio, 0 | |
227 MENU_CALL tBack, do_return_ccr_menu | |
228 MENU_END | |
229 ENDIF ; _external_sensor | |
230 | 323 |
231 ENDIF ; _ccr_pscr | 324 ENDIF ; _ccr_pscr |
232 | 325 |
233 ;============================================================================= | 326 |
234 ; OC Gas Setup | 327 ;----------------------------------------------------------------------------- |
235 | 328 ; returning from Gas / Diluent Setup |
236 do_return_gas_menu: | 329 ; |
330 do_return_menu_gas: | |
237 call menu_processor_double_pop ; drop exit line and back to last line | 331 call menu_processor_double_pop ; drop exit line and back to last line |
238 | 332 |
239 IFDEF _ccr_pscr | 333 IFDEF _ccr_pscr |
240 btfsc is_diluent_menu ; return from setting up diluents? | 334 btfsc is_diluent_menu ; return from setting up diluents? |
241 bra do_diluent_setup ; YES | 335 bra do_menu_diluent ; YES - continue with diluent menu |
336 ;bra do_menu_gas ; NO - continue with OC gas menu | |
242 ENDIF | 337 ENDIF |
243 | 338 |
244 do_gas_menu: | 339 |
340 ;----------------------------------------------------------------------------- | |
341 ; OC Gas Setup - 1st Level | |
342 ; | |
343 do_menu_gas: | |
245 bcf is_diluent_menu ; setting up OC gases | 344 bcf is_diluent_menu ; setting up OC gases |
246 bcf short_gas_descriptions ; do not use short versions of gaslist_strcat_gas_cd and gaslist_strcat_setpoint | 345 bcf short_gas_descriptions ; use long gas description format |
247 bcf better_gas_hint ; do not mark the best gas/diluent (to be used in dive mode only) | 346 bcf better_gas_hint ; do not mark the best gas/diluent (to be used in dive mode only) |
248 call gaslist_cleanup_list ; takes care that only one gas can be first | 347 call gaslist_cleanup_list ; make sure there is only one gas being first |
249 | 348 |
250 MENU_BEGIN tGaslist, .6 | 349 MENU_BEGIN tGaslist, .6 |
251 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 350 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
252 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 351 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
253 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 352 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
254 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 353 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
255 MENU_DYNAMIC gaslist_strcat_gas_cd, do_edit_gas_menu | 354 MENU_DYNAMIC dyn_strcat_gas_PRODL, do_menu_edit_gas |
256 MENU_CALL tBack, do_return_main_menu | 355 MENU_CALL tBack, do_return_main_menu |
257 MENU_END | 356 MENU_END |
258 | 357 |
259 | 358 |
260 do_return_edit_gas_menu: | 359 ;----------------------------------------------------------------------------- |
360 ; dynamic Title - show full Gas Description | |
361 ; | |
362 dyn_strcat_gas_PRODL: | |
363 goto gaslist_strcat_gas_PRODL ; code is hosted in gaslist.asm | |
364 | |
365 | |
366 ;----------------------------------------------------------------------------- | |
367 ; return to OC Gas Setup from Sub-Menu | |
368 ; | |
369 do_return_menu_edit_gas: | |
261 IFDEF _rx_functions | 370 IFDEF _rx_functions |
262 bcf imprint_xmitter_pres ; stop imprinting of transmitter pressure data | 371 bcf imprint_xmitter_pres ; stop imprinting of transmitter pressure data |
263 bcf imprint_xmitter_ID ; not in transmitter selection menu any more (back to normal timeout) | 372 bcf imprint_xmitter_ID ; not in transmitter selection menu any more (back to normal timeout) |
264 ENDIF | 373 ENDIF |
265 call menu_processor_double_pop ; drop exit line and back to last line | 374 call menu_processor_double_pop ; drop exit line and back to last line |
266 bra do_edit_gas_menu_common | 375 bcf block_option_value ; resume displaying of option values |
267 | 376 bra do_menu_edit_gas_common ; continue with common part |
268 do_edit_gas_menu: | 377 |
378 | |
379 ;----------------------------------------------------------------------------- | |
380 ; OC Gas Setup - 2nd Level | |
381 ; | |
382 do_menu_edit_gas: | |
269 movff PRODL,gaslist_gas ; get menu item we came from (0-4) | 383 movff PRODL,gaslist_gas ; get menu item we came from (0-4) |
270 movlw .5 ; offset between gases and diluents | 384 movlw .5 ; offset between gases and diluents |
271 btfsc is_diluent_menu ; setting up diluents? | 385 btfsc is_diluent_menu ; setting up diluents? |
272 addwf gaslist_gas,F ; YES - add the offset | 386 addwf gaslist_gas,F ; YES - add the offset |
273 | 387 |
274 do_edit_gas_menu_common: | 388 do_menu_edit_gas_common: |
275 MENU_BEGIN tGasEdit, .7 | 389 MENU_BEGIN tGasEdit, .7 |
276 MENU_DYNAMIC gaslist_gastitle, 0 | 390 MENU_DYNAMIC dyn_gastitle, 0 |
277 MENU_DYNAMIC gaslist_MOD_END, 0 | 391 MENU_DYNAMIC dyn_MOD_END, 0 |
278 MENU_DYNAMIC gaslist_show_type, gaslist_toggle_type | 392 MENU_GRP_INC tType, oGas1 |
279 MENU_CALL tSetup_GasMix, do_setup_mix_menu | 393 MENU_CALL tSetup_GasMix, do_menu_gas_mix |
280 MENU_DYNAMIC gaslist_GasDepth, do_setup_depth_menu | 394 MENU_DYNAMIC dyn_show_depth, do_menu_gas_depth |
281 MENU_CALL tSetup_Tank, do_setup_tank_menu | 395 MENU_CALL tSetup_Tank, do_menu_gas_tank |
282 MENU_CALL tBack, do_return_gas_menu | 396 MENU_CALL tBack, do_return_menu_gas |
283 MENU_END | 397 MENU_END |
284 | 398 |
285 | 399 |
286 do_setup_mix_menu: | 400 ;----------------------------------------------------------------------------- |
401 ; dynamic Title - show full Gas Description | |
402 ; | |
403 dyn_gastitle: | |
404 goto gaslist_strcat_gas ; code is hosted in gaslist.asm | |
405 | |
406 | |
407 ;----------------------------------------------------------------------------- | |
408 ; dynamic Title - show MOD and END | |
409 ; | |
410 dyn_MOD_END: | |
411 goto gaslist_MOD_END ; code is hosted in gaslist.asm | |
412 | |
413 | |
414 ;----------------------------------------------------------------------------- | |
415 ; dynamic Title - show Change Depth | |
416 ; | |
417 dyn_show_depth: | |
418 movf gaslist_gas,W ; load gas/dil index into WREG (0-9) | |
419 lfsr FSR1,opt_gas_change ; load base address of change depths | |
420 tstfsz PLUSW1 ; change depth = 0 ? | |
421 bra dyn_show_depth_1 ; NO - print in normal color | |
422 lfsr FSR1,opt_gas_type ; YES - load base address of opt_gas_type | |
423 tstfsz PLUSW1 ; - type = disabled ? | |
424 FONT_COLOR_ATTENTION ; NO - print in attention color (yellow) | |
425 dyn_show_depth_1: | |
426 STRCAT_TEXT tSetup_GasDepth ; print text | |
427 return ; done | |
428 | |
429 | |
430 ;----------------------------------------------------------------------------- | |
431 ; OC Gas Setup - 3rd Level - Mix | |
432 ; | |
433 do_menu_gas_mix: | |
434 bsf block_option_value ; suspend displaying of option values | |
435 | |
287 IFDEF _helium | 436 IFDEF _helium |
288 MENU_BEGIN tGasEdit, .7 | 437 MENU_BEGIN tGasEdit, .7 |
289 MENU_DYNAMIC gaslist_gastitle, 0 | 438 MENU_DYNAMIC dyn_gastitle, 0 |
290 MENU_DYNAMIC gaslist_MOD_END, 0 | 439 MENU_DYNAMIC dyn_MOD_END, 0 |
291 MENU_CALL tO2Plus, gaslist_pO2 | 440 MENU_GRP_INCS tO2Plus, oGas1O2 |
292 MENU_CALL tO2Minus, gaslist_mO2 | 441 MENU_GRP_DECS tO2Minus, oGas1O2 |
293 MENU_CALL tHePlus, gaslist_pHe | 442 MENU_GRP_INCS tHePlus, oGas1He |
294 MENU_CALL tHeMinus, gaslist_mHe | 443 MENU_GRP_DECS tHeMinus, oGas1He |
295 MENU_CALL tBack, do_return_edit_gas_menu | 444 MENU_CALL tBack, do_return_menu_edit_gas |
296 MENU_END | 445 MENU_END |
297 ELSE | 446 ELSE |
298 MENU_BEGIN tGasEdit, .5 | 447 MENU_BEGIN tGasEdit, .5 |
299 MENU_DYNAMIC gaslist_gastitle, 0 | 448 MENU_DYNAMIC dyn_gastitle, 0 |
300 MENU_DYNAMIC gaslist_MOD_END, 0 | 449 MENU_DYNAMIC dyn_MOD_END, 0 |
301 MENU_CALL tO2Plus, gaslist_pO2 | 450 MENU_GRP_INCS tO2Plus, oGas1O2 |
302 MENU_CALL tO2Minus, gaslist_mO2 | 451 MENU_GRP_DECS tO2Minus, oGas1O2 |
303 MENU_CALL tBack, do_return_edit_gas_menu | 452 MENU_CALL tBack, do_return_menu_edit_gas |
304 MENU_END | 453 MENU_END |
305 ENDIF | 454 ENDIF |
306 | 455 |
307 | 456 |
308 do_setup_tank_menu: | 457 ;----------------------------------------------------------------------------- |
458 ; OC Gas Setup - 3rd Level - Change Depth | |
459 ; | |
460 do_menu_gas_depth: | |
461 bsf block_option_value ; suspend displaying of option values | |
462 | |
463 MENU_BEGIN tGasEdit, .7 | |
464 MENU_DYNAMIC dyn_gastitle, 0 | |
465 MENU_DYNAMIC dyn_MOD_END, 0 | |
466 MENU_DYNAMIC dyn_ppo2, 0 | |
467 MENU_GRP_INCS tDepthPlus, oGas1Depth | |
468 MENU_GRP_DECS tDepthMinus, oGas1Depth | |
469 MENU_DYNAMIC dyn_reset_mod_title, do_gas_depth_reset | |
470 MENU_CALL tBack, do_return_menu_edit_gas | |
471 MENU_END | |
472 | |
473 | |
474 ;----------------------------------------------------------------------------- | |
475 ; dynamic Title - show Gas Description | |
476 ; | |
477 ;dyn_gastitle: | |
478 ; goto gaslist_strcat_gas ; code is hosted in gaslist.asm | |
479 | |
480 | |
481 ;----------------------------------------------------------------------------- | |
482 ; dynamic Title - show MOD and END | |
483 ; | |
484 ;dyn_MOD_END: | |
485 ; goto gaslist_MOD_END ; code is hosted in gaslist.asm | |
486 | |
487 | |
488 ;----------------------------------------------------------------------------- | |
489 ; dynamic Title - show ppO2 and Change Depth | |
490 ; | |
491 dyn_ppo2: | |
492 goto gaslist_ppo2 ; code is hosted in gaslist.asm | |
493 | |
494 | |
495 ;----------------------------------------------------------------------------- | |
496 ; dynamic Title - show 'Rest to MOD' Dialog | |
497 ; | |
498 dyn_reset_mod_title: | |
499 goto gaslist_reset_mod_title ; code is hosted in gaslist.asm | |
500 | |
501 | |
502 ;----------------------------------------------------------------------------- | |
503 ; Call Function - reset Change Depth to MOD | |
504 ; | |
505 do_gas_depth_reset: | |
506 call gaslist_calc_mod ; compute MOD, result in WREG | |
507 movwf lo ; copy result to lo | |
508 lfsr FSR1,opt_gas_change ; load base address of opt_gas_change | |
509 movf gaslist_gas,W ; load index | |
510 movff lo,PLUSW1 ; update change depth | |
511 bsf option_changed ; flag that EEPROM needs to be updated | |
512 return ; done | |
513 | |
514 | |
515 ;----------------------------------------------------------------------------- | |
516 ; OC Gas Setup - 3rd Level - Tank Setup | |
517 ; | |
518 do_menu_gas_tank: | |
309 IFDEF _rx_functions | 519 IFDEF _rx_functions |
310 TSTOSC opt_TR_mode ; TR functions switched on? | 520 TSTOSC opt_TR_mode ; TR functions switched on? |
311 bra do_setup_tank_menu_rx ; YES | 521 bra do_menu_gas_tank_rx ; YES |
312 ENDIF | 522 ENDIF |
313 | 523 |
314 IFDEF _ccr_pscr | 524 IFDEF _ccr_pscr |
315 MENU_BEGIN tSetup_Tank, .6 | 525 MENU_BEGIN tSetup_Tank, .5 |
316 MENU_DYNAMIC gaslist_gastitle, 0 | 526 MENU_DYNAMIC dyn_gastitle, 0 |
317 MENU_DYNAMIC gaslist_tank_size_pres, 0 | 527 MENU_GRP_INC tTankSize, oTankSizeOC1 |
318 MENU_CALL tTankSize, gaslist_tank_size | 528 MENU_GRP_INC tTankUsablePress, oTankPresOC1 |
319 MENU_CALL tTankUsablePress, gaslist_tank_pres | 529 MENU_CALL tCopyDilToOC, do_copy_dil_to_oc |
320 MENU_CALL tCopyDilToOC, gaslist_copy_dil_to_oc | 530 MENU_CALL tBack, do_return_menu_edit_gas |
321 MENU_CALL tBack, do_return_edit_gas_menu | |
322 MENU_END | 531 MENU_END |
323 ELSE | 532 ELSE |
324 MENU_BEGIN tSetup_Tank, .5 | 533 MENU_BEGIN tSetup_Tank, .4 |
325 MENU_DYNAMIC gaslist_gastitle, 0 | 534 MENU_DYNAMIC dyn_gastitle, 0 |
326 MENU_DYNAMIC gaslist_tank_size_pres, 0 | 535 MENU_GRP_INC tTankSize, oTankSizeOC1 |
327 MENU_CALL tTankSize, gaslist_tank_size | 536 MENU_GRP_INC tTankUsablePress, oTankPresOC1 |
328 MENU_CALL tTankUsablePress, gaslist_tank_pres | 537 MENU_CALL tBack, do_return_menu_edit_gas |
329 MENU_CALL tBack, do_return_edit_gas_menu | 538 MENU_END |
330 MENU_END | 539 ENDIF ; _ccr_pscr |
331 ENDIF | |
332 | 540 |
333 | 541 |
334 IFDEF _rx_functions | 542 IFDEF _rx_functions |
335 do_setup_tank_menu_rx: | 543 do_menu_gas_tank_rx: |
336 setf pairing_slot ; prime slot number with 255 aka -1, used in pairing function | 544 setf pairing_slot ; prime slot number with 255 aka -1, used in pairing function |
337 bsf imprint_xmitter_ID ; in transmitter selection menu (longer timeout) | 545 bsf imprint_xmitter_ID ; in transmitter selection menu (longer timeout) |
338 | 546 |
547 IFDEF _ccr_pscr | |
339 MENU_BEGIN tSetup_Tank, .7 | 548 MENU_BEGIN tSetup_Tank, .7 |
340 MENU_DYNAMIC gaslist_gastitle, 0 | 549 MENU_DYNAMIC dyn_gastitle, 0 |
341 MENU_DYNAMIC gaslist_tank_id_pres, 0 ; when changing position, adopt TFT_menu_tank_pres! | 550 MENU_DYNAMIC dyn_tank_id_pres, 0 ; pressure will be superimposed by housekeeping |
342 MENU_DYNAMIC gaslist_tank_size_pres, 0 | 551 MENU_CALL tTankPairing, do_tank_pairing |
343 MENU_CALL tTankPairing, gaslist_tank_pairing | 552 MENU_GRP_INC tTankSize, oTankSizeOC1 |
344 MENU_CALL tTankSize, gaslist_tank_size | 553 MENU_GRP_INC tTankUsablePress, oTankPresOC1 |
345 MENU_CALL tTankUsablePress, gaslist_tank_pres | 554 MENU_CALL tCopyDilToOC, do_copy_dil_to_oc |
346 MENU_CALL tBack, do_return_edit_gas_menu | 555 MENU_CALL tBack, do_return_menu_edit_gas |
347 MENU_END | 556 MENU_END |
348 ENDIF | 557 ELSE |
349 | 558 MENU_BEGIN tSetup_Tank, .6 |
350 | 559 MENU_DYNAMIC dyn_gastitle, 0 |
351 do_setup_depth_menu: | 560 MENU_DYNAMIC dyn_tank_id_pres, 0 ; pressure will be superimposed by housekeeping |
352 | 561 MENU_CALL tTankPairing, do_tank_pairing |
353 MENU_BEGIN tGasEdit, .7 | 562 MENU_GRP_INC tTankSize, oTankSizeOC1 |
354 MENU_DYNAMIC gaslist_gastitle, 0 | 563 MENU_GRP_INC tTankUsablePress, oTankPresOC1 |
355 MENU_DYNAMIC gaslist_MOD_END, 0 | 564 MENU_CALL tBack, do_return_menu_edit_gas |
356 MENU_DYNAMIC gaslist_ppo2, 0 ; ppO2 at change depth | 565 MENU_END |
357 MENU_CALL tDepthPlus, gaslist_pDepth | 566 ENDIF ; _ccr_pscr |
358 MENU_CALL tDepthMinus, gaslist_mDepth | 567 |
359 MENU_DYNAMIC gaslist_reset_mod_title, gaslist_reset_mod | 568 |
360 MENU_CALL tBack, do_return_edit_gas_menu | 569 ;----------------------------------------------------------------------------- |
361 MENU_END | 570 ; dynamic Title - show Transmitter ID |
362 | 571 ; |
363 | 572 dyn_tank_id_pres: |
364 ;============================================================================= | 573 STRCAT " ID: " ; print header |
365 ; Simulator Menus | 574 ; get ID |
366 | 575 lfsr FSR1,opt_transmitter_id_1 ; load base address of opt_transmitter_id |
367 do_return_planner_menu: | 576 movf gaslist_gas,W ; load index (0-9) |
577 rlncf WREG,W ; multiply by 2 because IDs are 2 byte in size | |
578 movff PLUSW1,lo ; copy opt_transmitter_id+0[gaslist_gas] to lo | |
579 incf WREG,W ; increment index | |
580 movff PLUSW1,hi ; copy opt_transmitter_id+1[gaslist_gas] to hi | |
581 ; check if a transmitter is paired to this tank | |
582 tstfsz hi ; high byte of ID <> 0 ? | |
583 bra dyn_tank_id_pres_1 ; YES - a transmitter is paired to the tank | |
584 tstfsz lo ; low byte of ID <> 0 ? | |
585 bra dyn_tank_id_pres_1 ; YES - a transmitter is paired to the tank | |
586 STRCAT "----" ; NO - no transmitter paired | |
587 bcf imprint_xmitter_pres ; - stop imprinting of transmitter pressure data | |
588 return ; - done | |
589 dyn_tank_id_pres_1: ; show ID | |
590 movf hi,W ; copy high byte of ID to WREG | |
591 output_hex ; print it | |
592 movf lo,W ; copy low byte of ID to WREG | |
593 output_hex ; print it | |
594 bsf imprint_xmitter_pres ; start imprinting of transmitter pressure data | |
595 return ; done | |
596 | |
597 | |
598 ;----------------------------------------------------------------------------- | |
599 ; Call Function - pair a Transmitter to a Tank | |
600 ; | |
601 do_tank_pairing: | |
602 incf pairing_slot,F ; goto next RX data slot | |
603 btfsc pairing_slot,3 ; slot = 8? | |
604 bra do_tank_pairing_none ; YES - offer unpairing | |
605 movf pairing_slot,W ; NO - copy slot to WREG | |
606 call get_transmitter_id_by_slot ; WREG = slot (0-7) -> hi:lo = transmitter ID | |
607 tstfsz hi ; transmitter found (probe on high byte)? | |
608 bra do_tank_pairing_common ; YES - select this transmitter | |
609 tstfsz hi ; transmitter found (probe on low byte)? | |
610 bra do_tank_pairing_common ; YES - select this transmitter | |
611 bra do_tank_pairing ; NO - try next slot | |
612 do_tank_pairing_common: | |
613 lfsr FSR1,opt_transmitter_id_1 ; load base address of opt_transmitter_id | |
614 movf gaslist_gas,W ; load index into WREG (0-9) | |
615 rlncf WREG,W ; multiply by 2 because IDs are 2 byte in size | |
616 movff lo,PLUSW1 ; copy lo to opt_transmitter_id+0[gaslist_gas] | |
617 incf WREG,W ; increment index | |
618 movff hi,PLUSW1 ; copy hi to opt_transmitter_id+1[gaslist_gas] | |
619 bsf option_changed ; flag that EEPROM needs to be updated | |
620 return ; done | |
621 do_tank_pairing_none: | |
622 setf pairing_slot ; prime slot number with 255 aka -1 | |
623 clrf hi ; adjust "no transmitter" ID | |
624 clrf lo ; adjust "no transmitter" ID | |
625 bra do_tank_pairing_common ; continue with common part | |
626 | |
627 ENDIF ; _rx_functions | |
628 | |
629 | |
630 IFDEF _ccr_pscr | |
631 | |
632 ;----------------------------------------------------------------------------- | |
633 ; Call Function - copy Diluent Setup to OC Gases | |
634 ; | |
635 do_copy_dil_to_oc: | |
636 bcf copying_dil ; default to copying a gas | |
637 movf gaslist_gas,W ; copy current gas or diluent number to WREG | |
638 btfss is_diluent_menu ; setting up diluents? | |
639 bra do_copy_dil_to_oc_1 ; NO - gaslist_gas is already pointing to an OC gas | |
640 addlw -.5 ; YES - subtract offset between diluents and gases | |
641 movwf gaslist_gas ; - let gaslist_gas point to the corresponding OC gas | |
642 bsf copying_dil ; - we are copying a diluent | |
643 bcf is_diluent_menu ; - pretend we are setting up OC gases | |
644 do_copy_dil_to_oc_1: | |
645 lfsr FSR0,opt_dil_O2_ratio ; load base address of diluents settings, ASM variables | |
646 lfsr FSR1,opt_gas_O2_ratio ; load base address of gas settings, ASM variables | |
647 movff PLUSW0,PLUSW1 ; copy O2 ratio | |
648 addlw .10 ; add offset from O2 ratios to He ratios | |
649 movff PLUSW0,PLUSW1 ; copy He ratio | |
650 addlw .10 ; add offset from He ratios to types | |
651 movff PLUSW0,PLUSW1 ; copy type | |
652 addlw .10 ; add offset from type to change depth | |
653 movff PLUSW0,PLUSW1 ; copy change depth | |
654 addlw -.30 ; wind back to initial gas number | |
655 lfsr FSR0,char_I_gas_avail_size+5; load base address of diluents settings, shared variables | |
656 lfsr FSR1,char_I_gas_avail_size+0; load base address of gas settings, shared variables | |
657 movff PLUSW0,PLUSW1 ; copy tank size | |
658 addlw .10 ; add offset from tank sizes to pressure budget | |
659 movff PLUSW0,PLUSW1 ; copy pressure budget | |
660 call gaslist_cleanup_list ; make sure there is only one gas being first | |
661 bsf option_changed ; flag that EEPROM needs to be updated | |
662 btfss copying_dil ; are we copying a diluent? | |
663 return ; NO - done | |
664 bsf is_diluent_menu ; YES - restore to be setting up diluents | |
665 movlw .5 ; - offset between OC gases and diluents | |
666 addwf gaslist_gas,F ; - let gaslist_gas point to the diluent again | |
667 WIN_BOX_BLACK .30,.239,.0,.159 ; - create some visual effect to show activity | |
668 WAITMS .200 ; - pause for 200 ms | |
669 return ; - done | |
670 | |
671 ENDIF ; _ccr_pscr | |
672 | |
673 | |
674 ;----------------------------------------------------------------------------- | |
675 ; return to Simulator (Deco Calculator) Menu from Sub-Menu | |
676 ; | |
677 do_return_menu_simulator: | |
368 call menu_processor_double_pop ; drop exit line and back to last line | 678 call menu_processor_double_pop ; drop exit line and back to last line |
369 bra do_planner_common_1 | 679 bra do_menu_simulator_common_2 ; continue |
370 | 680 |
371 global do_return_demo_planner | 681 |
372 do_return_demo_planner: | 682 ;----------------------------------------------------------------------------- |
683 ; return to Simulator (Deco Calculator) Menu from Deco Calculator | |
684 ; | |
685 global do_return_menu_simulator_planner | |
686 do_return_menu_simulator_planner: | |
373 call menu_processor_pop ; back to last line | 687 call menu_processor_pop ; back to last line |
374 bra do_planner_common | 688 bra do_menu_simulator_common_1 ; continue |
375 | 689 |
376 do_simulator_menu: | 690 |
691 ;----------------------------------------------------------------------------- | |
692 ; Simulator (Deco Calculator) Menu | |
693 ; | |
694 do_menu_simulator: | |
377 ; reset planning parameters to default values | 695 ; reset planning parameters to default values |
378 lfsr FSR0,odiveInterval | 696 lfsr FSR0,odiveInterval ; surface interval |
379 call option_reset | 697 call option_reset ; reset to default |
380 lfsr FSR0,obottomTime | 698 lfsr FSR0,obottomTime ; bottom time |
381 call option_reset | 699 call option_reset ; reset to default |
382 lfsr FSR0,obottomDepth | 700 lfsr FSR0,obottomDepth ; bottom depth |
383 call option_reset | 701 call option_reset ; reset to default |
384 lfsr FSR0,oSimAGF | 702 lfsr FSR0,oSimAGF ; GF/aGF |
385 call option_reset | 703 call option_reset ; reset to default |
386 | 704 |
387 IFDEF _gas_contingency | 705 IFDEF _gas_contingency |
388 ; switch off gas contingency mode by default when entering the simulator menu | 706 lfsr FSR0,oGasContingencySim ; gas contingency |
389 clrf WREG | 707 call option_reset ; reset to default (volatile option) |
390 movff WREG,opt_gas_contingency_sim | 708 ENDIF ; _gas_contingency |
391 ENDIF | 709 |
392 | 710 do_menu_simulator_common_1: |
393 do_planner_common: | |
394 call restart_set_modes_and_flags ; initialize dive mode settings | 711 call restart_set_modes_and_flags ; initialize dive mode settings |
395 do_planner_common_1: | 712 |
713 do_menu_simulator_common_2: | |
714 | |
715 IFDEF _ccr_pscr | |
716 | |
396 movff opt_dive_mode,WREG ; get dive mode: 0=OC, 1=CCR, 2=Gauge, 3=Apnea, 4=pSCR | 717 movff opt_dive_mode,WREG ; get dive mode: 0=OC, 1=CCR, 2=Gauge, 3=Apnea, 4=pSCR |
397 dcfsnz WREG,W ; subtract one, became zero? | 718 decfsz WREG,W ; subtract one, became zero? |
398 bra do_planner_common_ccr ; YES - use CCR version | 719 bra do_menu_simulator_common_oc ; NO - use OC version |
399 | 720 ;bra do_menu_simulator_common_ccr; YES - use CCR version |
721 | |
722 do_menu_simulator_common_ccr: | |
400 MENU_BEGIN tSimulator, .7 | 723 MENU_BEGIN tSimulator, .7 |
401 MENU_OPTION tIntvl, odiveInterval, 0 | 724 MENU_OPT_INC tIntvl, odiveInterval |
402 MENU_OPTION tBtDep, obottomDepth, 0 | 725 MENU_OPT_INC tBtDep, obottomDepth |
403 MENU_CALL tInter, do_demo_divemode | 726 MENU_CALL tInter, do_demo_divemode |
404 MENU_OPTION tBtTm, obottomTime, 0 | 727 MENU_OPT_INC tBtTm, obottomTime |
405 MENU_OPTION tuseAGF, oSimAGF, 0 | 728 MENU_CALL tCalculatorSetup, do_menu_simulator_more |
406 MENU_CALL tDeco, do_demo_planner | 729 MENU_CALL tDeco, do_demo_planner |
407 MENU_CALL tBack, do_return_main_menu | 730 MENU_CALL tBack, do_return_main_menu |
408 MENU_END | 731 MENU_END |
409 | 732 |
410 do_planner_common_ccr: | 733 ENDIF ; _ccr_pscr |
734 | |
735 do_menu_simulator_common_oc: | |
411 MENU_BEGIN tSimulator, .7 | 736 MENU_BEGIN tSimulator, .7 |
412 MENU_OPTION tIntvl, odiveInterval, 0 | 737 MENU_OPT_INC tIntvl, odiveInterval |
413 MENU_OPTION tBtDep, obottomDepth, 0 | 738 MENU_OPT_INC tBtDep, obottomDepth |
414 MENU_CALL tInter, do_demo_divemode | 739 MENU_CALL tInter, do_demo_divemode |
415 MENU_OPTION tBtTm, obottomTime, 0 | 740 MENU_OPT_INC tBtTm, obottomTime |
416 MENU_CALL tCalculatorSetup, do_planner_config | 741 MENU_OPT_INC tuseAGF, oSimAGF |
417 MENU_CALL tDeco, do_demo_planner | 742 MENU_CALL tDeco, do_demo_planner |
418 MENU_CALL tBack, do_return_main_menu | 743 MENU_CALL tBack, do_return_main_menu |
419 MENU_END | 744 MENU_END |
420 | 745 |
421 do_planner_config: | 746 |
747 ;----------------------------------------------------------------------------- | |
748 ; Call Function - start Simulator Mode | |
749 ; | |
750 do_demo_divemode: | |
751 goto demo_divemode ; code is hosted in divemode.asm | |
752 | |
753 | |
754 ;----------------------------------------------------------------------------- | |
755 ; Call Function - start Deco Calculator | |
756 ; | |
757 do_demo_planner: | |
758 goto demo_planner ; code is hosted in simulator.asm | |
759 | |
760 | |
761 ;----------------------------------------------------------------------------- | |
762 ; Simulator (Deco Calculator) Menu - 2nd Layer | |
763 ; | |
764 do_menu_simulator_more: | |
422 IFDEF _gas_contingency | 765 IFDEF _gas_contingency |
423 MENU_BEGIN tSimulator, .4 | 766 MENU_BEGIN tSimulator, .4 |
424 MENU_OPTION tSelectSetpoint, oSimSetpoint, 0 | 767 MENU_OPT_INC tSelectSetpoint, oSimSetpoint |
425 MENU_OPTION tuseAGF, oSimAGF, 0 | 768 MENU_OPT_INC tuseAGF, oSimAGF |
426 MENU_OPTION tGasContingencySim, oGasContingencySim, 0 | 769 MENU_OPT_INC tGasContingencySim, oGasContingencySim |
427 MENU_CALL tBack, do_return_planner_menu | 770 MENU_CALL tBack, do_return_menu_simulator |
428 MENU_END | 771 MENU_END |
429 ELSE | 772 ELSE |
430 MENU_BEGIN tSimulator, .3 | 773 MENU_BEGIN tSimulator, .3 |
431 MENU_OPTION tSelectSetpoint, oSimSetpoint, 0 | 774 MENU_OPT_INC tSelectSetpoint, oSimSetpoint |
432 MENU_OPTION tuseAGF, oSimAGF, 0 | 775 MENU_OPT_INC tuseAGF, oSimAGF |
433 MENU_CALL tBack, do_return_planner_menu | 776 MENU_CALL tBack, do_return_menu_simulator |
434 MENU_END | 777 MENU_END |
435 ENDIF | 778 ENDIF ; _gas_contingency |
436 | 779 |
437 | 780 |
438 ;============================================================================= | 781 ;----------------------------------------------------------------------------- |
439 ; Divemode Menu | 782 ; return to Dive Settings Menu from Sub-Menu |
440 | 783 ; |
441 do_return_divemode_menu: | 784 do_return_menu_dive: |
442 call menu_processor_double_pop ; drop exit line and back to last line | 785 call menu_processor_double_pop ; drop exit line and back to last line |
443 | 786 ;bra do_menu_dive ; continue |
444 do_divemode_menu: | 787 |
788 ;----------------------------------------------------------------------------- | |
789 ; Dive Settings Menu - 1st Layer | |
790 ; | |
791 do_menu_dive: | |
445 MENU_BEGIN tDiveModeMenu, .6 | 792 MENU_BEGIN tDiveModeMenu, .6 |
446 MENU_CALL tDiveSetup, do_dive_menu ; dive setup | 793 MENU_CALL tDiveSetup, do_menu_dive_dive ; dive setup |
447 MENU_CALL tDecoSetup, do_deco_menu ; deco setup | 794 MENU_CALL tDecoSetup, do_menu_dive_deco ; deco setup |
448 MENU_CALL tSACSetup, do_SAC_menu ; SAC setup | 795 MENU_CALL tSACSetup, do_menu_dive_SAC ; SAC setup |
449 MENU_CALL tppO2Setup, do_ppo2_menu ; ppO2 limits | 796 MENU_CALL tppO2Setup, do_menu_dive_ppO2 ; ppO2 limits |
450 MENU_CALL tStopsSetup, do_stops_menu ; stops setup | 797 MENU_CALL tStopsSetup, do_menu_dive_stops ; stops setup |
451 MENU_CALL tBack, do_return_main_menu | 798 MENU_CALL tBack, do_return_main_menu |
452 MENU_END | 799 MENU_END |
453 | 800 |
454 | 801 ;----------------------------------------------------------------------------- |
455 do_dive_menu: | 802 ; Dive Settings Menu - 2nd Layer - Dive Mode |
803 ; | |
804 do_menu_dive_dive: | |
456 IFDEF _cave_mode | 805 IFDEF _cave_mode |
457 MENU_BEGIN tDiveModeMenu, .6 | 806 MENU_BEGIN tDiveModeMenu, .6 |
458 MENU_OPTION tDvMode, oDiveMode, 0 ; dive mode | 807 MENU_OPT_INC tDvMode, oDiveMode ; dive mode |
459 MENU_OPTION tCvMode, oCaveMode, 0 ; cave mode | 808 MENU_OPT_INC tCvMode, oCaveMode ; cave mode |
460 MENU_OPTION tFTTSMenu, oExtraTime, 0 ; fTTS/delay | 809 MENU_OPT_INC tFTTSMenu, oExtraTime ; fTTS/delay |
461 MENU_OPTION tTimeoutDive, oDiveTimeout, 0 ; dive timeout | 810 MENU_OPT_INC tTimeoutDive, oDiveTimeout ; dive timeout |
462 MENU_OPTION tStoreApnoeDive, oStoreApnoe, 0 ; store apnoe | 811 MENU_OPT_INC tStoreApnoeDive, oStoreApnoe ; store apnoe |
463 MENU_CALL tBack, do_return_divemode_menu | 812 MENU_CALL tBack, do_return_menu_dive |
464 MENU_END | 813 MENU_END |
465 ELSE | 814 ELSE |
466 MENU_BEGIN tDiveModeMenu, .5 | 815 MENU_BEGIN tDiveModeMenu, .5 |
467 MENU_OPTION tDvMode, oDiveMode, 0 ; dive mode | 816 MENU_OPT_INC tDvMode, oDiveMode ; dive mode |
468 MENU_OPTION tFTTSMenu, oExtraTime, 0 ; fTTS/delay | 817 MENU_OPT_INC tFTTSMenu, oExtraTime ; fTTS/delay |
469 MENU_OPTION tTimeoutDive, oDiveTimeout, 0 ; dive timeout | 818 MENU_OPT_INC tTimeoutDive, oDiveTimeout ; dive timeout |
470 MENU_OPTION tStoreApnoeDive, oStoreApnoe, 0 ; store apnoe | 819 MENU_OPT_INC tStoreApnoeDive, oStoreApnoe ; store apnoe |
471 MENU_CALL tBack, do_return_divemode_menu | 820 MENU_CALL tBack, do_return_menu_dive |
472 MENU_END | 821 MENU_END |
473 ENDIF | 822 ENDIF |
474 | 823 |
475 | 824 |
476 do_return_deco_menu: | 825 ;----------------------------------------------------------------------------- |
826 ; return to Dive Settings Menu from Sub-Menu | |
827 ; | |
828 do_return_menu_dive_deco: | |
477 call menu_processor_double_pop ; drop exit line and back to last line | 829 call menu_processor_double_pop ; drop exit line and back to last line |
478 | 830 ;bra do_menu_dive_deco ; continue |
479 do_deco_menu: | 831 |
832 | |
833 ;----------------------------------------------------------------------------- | |
834 ; Dive Settings Menu - 2nd Layer - Deco Mode | |
835 ; | |
836 do_menu_dive_deco: | |
480 MENU_BEGIN tDecoSetup, .6 | 837 MENU_BEGIN tDecoSetup, .6 |
481 MENU_OPTION tDkMode, oDecoMode, 0 ; ZH-L16 /GF | 838 MENU_OPT_INC tDkMode, oDecoMode ; ZH-L16 /GF |
482 MENU_OPTION tSaturationMult, osatmultgf, 0 ; saturation | 839 MENU_OPT_INC tSaturationMult, osatmultgf ; saturation |
483 MENU_OPTION tDesaturationMult, odesatmultgf, 0 ; desaturation | 840 MENU_OPT_INC tDesaturationMult, odesatmultgf ; desaturation |
484 MENU_OPTION tAltMode, oAltMode, 0 ; altitude mode | 841 MENU_OPT_INC tAltMode, oAltMode ; altitude mode |
485 MENU_CALL tGFMenu, do_GF_menu ; GF settings | 842 MENU_CALL tGFMenu, do_menu_dive_deco_GF ; GF settings |
486 MENU_CALL tBack, do_return_divemode_menu | 843 MENU_CALL tBack, do_return_menu_dive |
487 MENU_END | 844 MENU_END |
488 | 845 |
489 | 846 |
490 do_SAC_menu: | 847 ;----------------------------------------------------------------------------- |
848 ; Dive Settings Menu - 3nd Layer - Deco Mode - GF Settings | |
849 ; | |
850 do_menu_dive_deco_GF: | |
851 MENU_BEGIN tGFMenu, .6 | |
852 MENU_OPT_INC tGF_low, oGF_low ; GF low | |
853 MENU_OPT_INC tGF_high, oGF_high ; GF high | |
854 MENU_OPT_INC taGFenable, oEnable_aGF ; aGF selectable | |
855 MENU_OPT_INC taGF_low, oaGF_low ; aGF low | |
856 MENU_OPT_INC taGF_high, oaGF_high ; aGF high | |
857 MENU_CALL tBack, do_return_menu_dive_deco | |
858 MENU_END | |
859 | |
860 | |
861 ;----------------------------------------------------------------------------- | |
862 ; Dive Settings Menu - 2nd Layer - SAC Setup | |
863 ; | |
864 do_menu_dive_SAC: | |
491 IFDEF _gas_contingency | 865 IFDEF _gas_contingency |
492 MENU_BEGIN tSACSetup, .6 | 866 MENU_BEGIN tSACSetup, .6 |
493 MENU_OPTION tCalcGasNeeds, oCalcAscGas, 0 ; calc.gas | 867 MENU_OPT_INC tCalcGasNeeds, oCalcAscGas ; calc.gas |
494 MENU_OPTION tGasContingencyDive, oGasContingencyDive, 0 ; switch tank if used up | 868 MENU_OPT_INC tGasContingencyDive, oGasContingencyDive ; switch tank if used up |
495 MENU_OPTION tGasChangeTime, oGasChangeTime, 0 ; gas change time | 869 MENU_OPT_INC tGasChangeTime, oGasChangeTime ; gas change time |
496 MENU_OPTION tSetWorkSAC, oWork_SAC, 0 ; work SAC | 870 MENU_OPT_INC tSetWorkSAC, oWork_SAC ; work SAC |
497 MENU_OPTION tSetDecoSAC, oDeco_SAC, 0 ; deco SAC | 871 MENU_OPT_INC tSetDecoSAC, oDeco_SAC ; deco SAC |
498 MENU_CALL tBack, do_return_divemode_menu | 872 MENU_CALL tBack, do_return_menu_dive |
499 MENU_END | 873 MENU_END |
500 ELSE | 874 ELSE |
501 MENU_BEGIN tSACSetup, .5 | 875 MENU_BEGIN tSACSetup, .5 |
502 MENU_OPTION tCalcGasNeeds, oCalcAscGas, 0 ; calc.gas | 876 MENU_OPT_INC tCalcGasNeeds, oCalcAscGas ; calc.gas |
503 MENU_OPTION tGasChangeTime, oGasChangeTime, 0 ; gas change time | 877 MENU_OPT_INC tGasChangeTime, oGasChangeTime ; gas change time |
504 MENU_OPTION tSetWorkSAC, oWork_SAC, 0 ; work SAC | 878 MENU_OPT_INC tSetWorkSAC, oWork_SAC ; work SAC |
505 MENU_OPTION tSetDecoSAC, oDeco_SAC, 0 ; deco SAC | 879 MENU_OPT_INC tSetDecoSAC, oDeco_SAC ; deco SAC |
506 MENU_CALL tBack, do_return_divemode_menu | 880 MENU_CALL tBack, do_return_menu_dive |
507 MENU_END | 881 MENU_END |
508 ENDIF | 882 ENDIF |
509 | 883 |
510 | 884 |
511 do_ppo2_menu: | 885 ;----------------------------------------------------------------------------- |
886 ; Dive Settings Menu - 2nd Layer - ppO2 Setup | |
887 ; | |
888 do_menu_dive_ppO2: | |
512 IFDEF _ccr_pscr | 889 IFDEF _ccr_pscr |
513 IFDEF _helium | 890 IFDEF _helium |
514 MENU_BEGIN tppO2Setup, .6 | 891 MENU_BEGIN tppO2Setup, .6 |
515 MENU_DYNAMIC divesets_ppo2_max, do_toggle_ppo2_max_work ; max work | 892 MENU_DYNAMIC dyn_ppo2_max, do_toggle_ppO2_max_work ; max work |
516 MENU_DYNAMIC divesets_ppo2_max_deco, do_toggle_ppo2_max_deco ; max deco | 893 MENU_DYNAMIC dyn_ppo2_max_deco, do_toggle_ppO2_max_deco ; max deco |
517 MENU_DYNAMIC divesets_ppo2_min, do_toggle_ppo2_min ; min OC | 894 MENU_DYNAMIC dyn_ppo2_min, do_toggle_ppO2_min ; min OC |
518 MENU_DYNAMIC divesets_ppo2_min_cc, do_toggle_ppo2_min_cc ; min loop | 895 MENU_DYNAMIC dyn_ppo2_min_cc, do_toggle_ppO2_min_cc ; min loop |
519 MENU_OPTION tIBCDwarning, oEnable_IBCD, 0 ; IBCD warning | 896 MENU_OPT_INC tIBCDwarning, oEnable_IBCD ; IBCD warning |
520 MENU_CALL tBack, do_return_divemode_menu | 897 MENU_CALL tBack, do_return_menu_dive |
521 MENU_END | 898 MENU_END |
522 ELSE | 899 ELSE |
523 MENU_BEGIN tppO2Setup, .5 | 900 MENU_BEGIN tppO2Setup, .5 |
524 MENU_DYNAMIC divesets_ppo2_max, do_toggle_ppo2_max_work ; max work | 901 MENU_DYNAMIC dyn_ppo2_max, do_toggle_ppO2_max_work ; max work |
525 MENU_DYNAMIC divesets_ppo2_max_deco, do_toggle_ppo2_max_deco ; max deco | 902 MENU_DYNAMIC dyn_ppo2_max_deco, do_toggle_ppO2_max_deco ; max deco |
526 MENU_DYNAMIC divesets_ppo2_min, do_toggle_ppo2_min ; min OC | 903 MENU_DYNAMIC dyn_ppo2_min, do_toggle_ppO2_min ; min OC |
527 MENU_DYNAMIC divesets_ppo2_min_cc, do_toggle_ppo2_min_cc ; min loop | 904 MENU_DYNAMIC dyn_ppo2_min_cc, do_toggle_ppO2_min_cc ; min loop |
528 MENU_CALL tBack, do_return_divemode_menu | 905 MENU_CALL tBack, do_return_menu_dive |
529 MENU_END | 906 MENU_END |
530 ENDIF ; _helium | 907 ENDIF ; _helium |
531 ELSE | 908 ELSE |
532 IFDEF _helium | 909 IFDEF _helium |
533 MENU_BEGIN tppO2Setup, .5 | 910 MENU_BEGIN tppO2Setup, .5 |
534 MENU_DYNAMIC divesets_ppo2_max, do_toggle_ppo2_max_work ; max work | 911 MENU_DYNAMIC dyn_ppo2_max, do_toggle_ppO2_max_work ; max work |
535 MENU_DYNAMIC divesets_ppo2_max_deco, do_toggle_ppo2_max_deco ; max deco | 912 MENU_DYNAMIC dyn_ppo2_max_deco, do_toggle_ppO2_max_deco ; max deco |
536 MENU_DYNAMIC divesets_ppo2_min, do_toggle_ppo2_min ; min OC | 913 MENU_DYNAMIC dyn_ppo2_min, do_toggle_ppO2_min ; min OC |
537 MENU_OPTION tIBCDwarning, oEnable_IBCD, 0 ; IBCD warning | 914 MENU_OPT_INC tIBCDwarning, oEnable_IBCD ; IBCD warning |
538 MENU_CALL tBack, do_return_divemode_menu | 915 MENU_CALL tBack, do_return_menu_dive |
539 ELSE | 916 ELSE |
540 MENU_BEGIN tppO2Setup, .4 | 917 MENU_BEGIN tppO2Setup, .4 |
541 MENU_DYNAMIC divesets_ppo2_max, do_toggle_ppo2_max_work ; max work | 918 MENU_DYNAMIC dyn_ppo2_max, do_toggle_ppO2_max_work ; max work |
542 MENU_DYNAMIC divesets_ppo2_max_deco, do_toggle_ppo2_max_deco ; max deco | 919 MENU_DYNAMIC dyn_ppo2_max_deco, do_toggle_ppO2_max_deco ; max deco |
543 MENU_DYNAMIC divesets_ppo2_min, do_toggle_ppo2_min ; min OC | 920 MENU_DYNAMIC dyn_ppo2_min, do_toggle_ppO2_min ; min OC |
544 MENU_CALL tBack, do_return_divemode_menu | 921 MENU_CALL tBack, do_return_menu_dive |
545 MENU_END | 922 MENU_END |
546 ENDIF ; _helium | 923 ENDIF ; _helium |
547 ENDIF ; _ccr_pscr | 924 ENDIF ; _ccr_pscr |
548 | 925 |
549 | 926 |
550 do_stops_menu: | 927 ;----------------------------------------------------------------------------- |
928 ; dynamic Title - show maximum ppO2 - Work | |
929 ; | |
930 dyn_ppo2_max: | |
931 STRCAT_TEXT tPPO2Max ; print text | |
932 movff char_I_ppO2_max_work,lo ; get value | |
933 movlw ppo2_warning_high_default ; load default | |
934 bra dyn_ppo2_common ; continue with common part | |
935 | |
936 | |
937 ;----------------------------------------------------------------------------- | |
938 ; dynamic Title - show maximum ppO2 - Deco | |
939 ; | |
940 dyn_ppo2_max_deco: | |
941 STRCAT_TEXT tPPO2DECO ; print text | |
942 movff char_I_ppO2_max_deco,lo ; get value | |
943 movlw ppo2_warning_deco_default ; load default | |
944 bra dyn_ppo2_common ; continue with common part | |
945 | |
946 | |
947 ;----------------------------------------------------------------------------- | |
948 ; dynamic Title - show minimum ppO2 | |
949 ; | |
950 dyn_ppo2_min: | |
951 STRCAT_TEXT tPPO2MIN ; print text | |
952 movff char_I_ppO2_min,lo ; get value | |
953 movlw ppo2_warning_low_default ; load default | |
954 bra dyn_ppo2_common ; continue with common part | |
955 | |
956 | |
957 IFDEF _ccr_pscr | |
958 | |
959 ;----------------------------------------------------------------------------- | |
960 ; dynamic Title - show minimum ppO2 - Loop Modes | |
961 ; | |
962 dyn_ppo2_min_cc: | |
963 STRCAT_TEXT tPPO2MINCC ; print text | |
964 movff char_I_ppO2_min_loop,lo ; get value | |
965 movlw ppo2_warning_loop_default ; load default | |
966 ;bra dyn_ppo2_common ; continue with common part | |
967 | |
968 ENDIF | |
969 | |
970 | |
971 ;----------------------------------------------------------------------------- | |
972 ; Helper Function to all show ppO2 dynamic Titles | |
973 ; | |
974 dyn_ppo2_common: | |
975 movwf up ; copy default to up | |
976 clrf hi ; clear hi | |
977 bsf leftbind ; print left-aligned | |
978 bsf decimal_digit2 ; place a decimal point in front of digit 2 | |
979 output_256 ; print ppO2 as x.xx | |
980 STRCAT_TEXT tbar ; append unit | |
981 movf up,W ; get default value into WREG | |
982 cpfseq lo ; current value = default value ? | |
983 bra divesets_ppo2_common2 ; NO - add an "*" | |
984 return ; YES - done | |
985 divesets_ppo2_common2: | |
986 PUTC "*" ; append a star | |
987 return ; done | |
988 | |
989 | |
990 ;----------------------------------------------------------------------------- | |
991 ; Call Function - increment maximum ppO2 - Work | |
992 ; | |
993 do_toggle_ppO2_max_work: ; add 0.1 bar | |
994 movff char_I_ppO2_max_work,lo ; bank-safe copy | |
995 movlw .10 | |
996 addwf lo,F | |
997 movlw ppo2_warning_high_highest | |
998 cpfsgt lo | |
999 bra do_toggle_ppo2_max2 | |
1000 movlw ppo2_warning_high_lowest | |
1001 movwf lo | |
1002 do_toggle_ppo2_max2: | |
1003 movff lo,char_I_ppO2_max_work | |
1004 return | |
1005 | |
1006 | |
1007 ;----------------------------------------------------------------------------- | |
1008 ; Call Function - increment maximum ppO2 - Deco | |
1009 ; | |
1010 do_toggle_ppO2_max_deco: ; add 0.1 bar | |
1011 movff char_I_ppO2_max_deco,lo ; bank-safe copy | |
1012 movlw .10 | |
1013 addwf lo,F | |
1014 movlw ppo2_warning_deco_highest | |
1015 cpfsgt lo | |
1016 bra do_toggle_ppO2_max_deco2 | |
1017 movlw ppo2_warning_deco_lowest | |
1018 movwf lo | |
1019 do_toggle_ppO2_max_deco2: | |
1020 movff lo,char_I_ppO2_max_deco | |
1021 return | |
1022 | |
1023 | |
1024 ;----------------------------------------------------------------------------- | |
1025 ; Call Function - increment minimum ppO2 | |
1026 ; | |
1027 do_toggle_ppO2_min: ; sub 0.1 bar | |
1028 movff char_I_ppO2_min,lo ; bank-safe copy | |
1029 incf lo,F | |
1030 movlw ppo2_warning_low_highest | |
1031 cpfsgt lo | |
1032 bra do_toggle_ppO2_min2 | |
1033 movlw ppo2_warning_low_lowest | |
1034 movwf lo | |
1035 do_toggle_ppO2_min2: | |
1036 movff lo,char_I_ppO2_min | |
1037 return | |
1038 | |
1039 | |
1040 ;----------------------------------------------------------------------------- | |
1041 ; Call Function - increment minimum ppO2 - Loop Modes | |
1042 ; | |
1043 do_toggle_ppO2_min_cc: ; sub 0.1 bar | |
1044 movff char_I_ppO2_min_loop,lo ; bank-safe copy | |
1045 incf lo,F | |
1046 movlw ppo2_warning_loop_highest | |
1047 cpfsgt lo | |
1048 bra do_toggle_ppO2_min_cc2 | |
1049 movlw ppo2_warning_loop_lowest | |
1050 movwf lo | |
1051 do_toggle_ppO2_min_cc2: | |
1052 movff lo,char_I_ppO2_min_loop | |
1053 return | |
1054 | |
1055 | |
1056 ;----------------------------------------------------------------------------- | |
1057 ; Dive Settings Menu - 2nd Layer - Stops & Depth | |
1058 ; | |
1059 do_menu_dive_stops: | |
551 MENU_BEGIN tStopsSetup, .6 | 1060 MENU_BEGIN tStopsSetup, .6 |
552 MENU_OPTION tSafetyStop, oSafetyStop, 0 ; safety stop | 1061 MENU_OPT_INC tSafetyStop, oSafetyStop ; safety stop |
553 MENU_OPTION tExtendedStops, oExtendedStops, 0 ; extended stops | 1062 MENU_OPT_INC tExtendedStops, oExtendedStops ; extended stops |
554 MENU_OPTION tLastDecostop, oLastDeco, 0 ; last deco stop | 1063 MENU_OPT_INC tLastDecostop, oLastDeco ; last deco stop |
555 MENU_OPTION tDvSalinity, oDiveSalinity, 0 ; salinity | 1064 MENU_OPT_INC tDvSalinity, oDiveSalinity ; salinity |
556 MENU_OPTION tDepthWarn, oMaxDepth, 0 ; depth limit | 1065 MENU_OPT_INC tDepthWarn, oMaxDepth ; depth limit |
557 MENU_CALL tBack, do_return_divemode_menu | 1066 MENU_CALL tBack, do_return_menu_dive |
558 MENU_END | 1067 MENU_END |
559 | 1068 |
560 | 1069 |
561 do_GF_menu: | 1070 ;----------------------------------------------------------------------------- |
562 MENU_BEGIN tGFMenu, .6 | 1071 ; return to Settings Menu from Sub-Sub-Menu |
563 MENU_OPTION tGF_low, oGF_low, 0 ; GF low | 1072 ; |
564 MENU_OPTION tGF_high, oGF_high, 0 ; GF high | 1073 do_return_menu_settings_deeper: ; entry point for return from info menu 2 |
565 MENU_OPTION taGFenable, oEnable_aGF, 0 ; aGF selectable | |
566 MENU_OPTION taGF_low, oaGF_low, 0 ; aGF low | |
567 MENU_OPTION taGF_high, oaGF_high, 0 ; aGF high | |
568 MENU_CALL tBack, do_return_deco_menu | |
569 MENU_END | |
570 | |
571 | |
572 ;============================================================================= | |
573 ; Setup Menu | |
574 do_return_settings_deeper: ; entry point for return from info menu 2 | |
575 call menu_processor_pop ; drop one more stack entry | 1074 call menu_processor_pop ; drop one more stack entry |
576 | 1075 ;bra do_return_menu_settings ; continue |
577 do_return_settings: | 1076 |
1077 | |
1078 ;----------------------------------------------------------------------------- | |
1079 ; return to Settings Menu from Sub-Menu | |
1080 ; | |
1081 do_return_menu_settings: | |
578 bcf imprint_time_date ; stop imprinting of current time & date | 1082 bcf imprint_time_date ; stop imprinting of current time & date |
579 call menu_processor_double_pop ; drop exit line and back to last line | 1083 call menu_processor_double_pop ; drop exit line and back to last line |
580 | 1084 |
581 IFDEF _rx_mode | 1085 IFDEF _rx_mode |
582 bcf tr_functions_activated ; set TR functions as deactivated by default | 1086 bcf tr_functions_activated ; set TR functions as deactivated by default |
583 btfss ostc_rx_present ; TR model / TR module up & running? | 1087 btfss ostc_rx_present ; TR model / TR module up & running? |
584 bra do_settings_menu ; NO - use version w/o TR | 1088 bra do_menu_settings ; NO - keep deactivated |
585 movff opt_TR_mode,WREG ; YES - get TR mode | 1089 movff opt_TR_mode,WREG ; YES - get TR mode |
586 tstfsz WREG ; - TR mode <> off ? | 1090 tstfsz WREG ; - TR mode <> off ? |
587 bsf tr_functions_activated ; YES - set TR functions as activated | 1091 bsf tr_functions_activated ; YES - set TR functions as activated |
588 ENDIF | 1092 ENDIF |
589 | 1093 |
590 do_settings_menu: | 1094 |
1095 ;----------------------------------------------------------------------------- | |
1096 ; Settings Menu - 1st Layer | |
1097 ; | |
1098 do_menu_settings: | |
591 IFDEF _hwos_sport | 1099 IFDEF _hwos_sport |
592 bsf ble_available ; for very old OSTC sport | 1100 bsf ble_available ; required for very old OSTC sport |
593 ENDIF | 1101 ENDIF |
594 btfsc ble_available ; BLE available? | 1102 btfsc ble_available ; BT available? |
595 bra do_settings_menu_ble ; YES | 1103 bra do_menu_settings_bt ; YES - do BT menu |
596 | 1104 |
597 MENU_BEGIN tSystSets, .5 | 1105 MENU_BEGIN tSystSets, .5 |
598 MENU_CALL tInfoMenu, do_info_menu | 1106 MENU_CALL tInfoMenu, do_menu_info |
599 MENU_CALL tSetTimeDate, do_date_time_menu | 1107 MENU_CALL tSetTimeDate, do_menu_date_time |
600 MENU_CALL tDispSets, do_dispsets_menu | 1108 MENU_CALL tDispSets, do_menu_dispsets |
601 MENU_CALL tSysSets, do_syssets_menu | 1109 MENU_CALL tSysSets, do_menu_syssets |
602 MENU_CALL tBack, do_return_main_menu | 1110 MENU_CALL tBack, do_return_main_menu |
603 MENU_END | 1111 MENU_END |
604 | 1112 |
605 | 1113 do_menu_settings_bt: |
606 do_settings_menu_ble: | |
607 IFDEF _rx_functions | 1114 IFDEF _rx_functions |
608 btfss ostc_rx_present ; TR model and TR activated? | 1115 btfss ostc_rx_present ; TR model and TR activated? |
609 bra do_settings_menu_noRX ; NO | 1116 bra do_menu_settings_noRX ; NO |
610 | 1117 |
611 MENU_BEGIN tSystSets, .7 | 1118 MENU_BEGIN tSystSets, .7 |
612 MENU_CALL tInfoMenu, do_info_menu | 1119 MENU_CALL tInfoMenu, do_menu_info |
613 MENU_CALL tBleTitle, comm_mode_ble | 1120 MENU_CALL tBleTitle, do_comm_mode_bt |
614 MENU_CALL tTrSettings, do_settings_menu_TR | 1121 MENU_CALL tTrSettings, do_menu_settings_TR |
615 MENU_CALL tSetTimeDate, do_date_time_menu | 1122 MENU_CALL tSetTimeDate, do_menu_date_time |
616 MENU_CALL tDispSets, do_dispsets_menu | 1123 MENU_CALL tDispSets, do_menu_dispsets |
617 MENU_CALL tSysSets, do_syssets_menu | 1124 MENU_CALL tSysSets, do_menu_syssets |
618 MENU_CALL tBack, do_return_main_menu | 1125 MENU_CALL tBack, do_return_main_menu |
619 MENU_END | 1126 MENU_END |
620 ENDIF | 1127 ENDIF |
621 | 1128 |
622 do_settings_menu_noRX: | 1129 do_menu_settings_noRX: |
623 MENU_BEGIN tSystSets, .6 | 1130 MENU_BEGIN tSystSets, .6 |
624 MENU_CALL tInfoMenu, do_info_menu | 1131 MENU_CALL tInfoMenu, do_menu_info |
625 MENU_CALL tBleTitle, comm_mode_ble | 1132 MENU_CALL tBleTitle, do_comm_mode_bt |
626 MENU_CALL tSetTimeDate, do_date_time_menu | 1133 MENU_CALL tSetTimeDate, do_menu_date_time |
627 MENU_CALL tDispSets, do_dispsets_menu | 1134 MENU_CALL tDispSets, do_menu_dispsets |
628 MENU_CALL tSysSets, do_syssets_menu | 1135 MENU_CALL tSysSets, do_menu_syssets |
629 MENU_CALL tBack, do_return_main_menu | 1136 MENU_CALL tBack, do_return_main_menu |
630 MENU_END | 1137 MENU_END |
631 | 1138 |
632 | 1139 |
633 do_info_menu: | 1140 ;----------------------------------------------------------------------------- |
1141 ; Call Function - start Communication Mode (BT) | |
1142 ; | |
1143 do_comm_mode_bt: | |
1144 goto comm_mode_bt ; code hosted in comm.asm | |
1145 | |
1146 | |
1147 ;----------------------------------------------------------------------------- | |
1148 ; Settings Menu - 2nd Layer - System Infos - Page 1 | |
1149 ; | |
1150 do_menu_info: | |
634 IFDEF _rx_functions | 1151 IFDEF _rx_functions |
635 btfss ostc_rx_present ; TR model? | 1152 btfss ostc_rx_present ; TR model? |
636 bra do_info_menu_noRX ; NO | 1153 bra do_menu_info_noRX ; NO |
637 | 1154 |
638 MENU_BEGIN tInfoMenu, .7 | 1155 MENU_BEGIN tInfoMenu, .7 |
639 MENU_DYNAMIC info_menu_uptime, 0 | 1156 MENU_DYNAMIC dyn_show_uptime, 0 |
640 MENU_DYNAMIC info_menu_serial, 0 | 1157 MENU_DYNAMIC dyn_show_serial, 0 |
641 MENU_DYNAMIC info_menu_firmware, 0 | 1158 MENU_DYNAMIC dyn_show_firmware_ostc, 0 |
642 MENU_DYNAMIC info_menu_fw_cration_date, 0 | 1159 MENU_DYNAMIC dyn_show_fw_creation_date, 0 |
643 MENU_DYNAMIC info_menu_firmware_rx, 0 | 1160 MENU_DYNAMIC dyn_show_firmware_rx, 0 |
644 MENU_DYNAMIC info_menu_total_dives, 0 | 1161 MENU_DYNAMIC dyn_show_total_dives, 0 |
645 MENU_CALL tMore, do_info_menu2 | 1162 MENU_CALL tMore, do_menu_info2 |
646 MENU_END | 1163 MENU_END |
647 ENDIF | 1164 ENDIF |
648 | 1165 |
649 do_info_menu_noRX: | 1166 do_menu_info_noRX: |
650 MENU_BEGIN tInfoMenu, .6 | 1167 MENU_BEGIN tInfoMenu, .6 |
651 MENU_DYNAMIC info_menu_uptime, 0 | 1168 MENU_DYNAMIC dyn_show_uptime, 0 |
652 MENU_DYNAMIC info_menu_serial, 0 | 1169 MENU_DYNAMIC dyn_show_serial, 0 |
653 MENU_DYNAMIC info_menu_firmware, 0 | 1170 MENU_DYNAMIC dyn_show_firmware_ostc, 0 |
654 MENU_DYNAMIC info_menu_fw_cration_date, 0 | 1171 MENU_DYNAMIC dyn_show_fw_creation_date, 0 |
655 MENU_DYNAMIC info_menu_total_dives, 0 | 1172 MENU_DYNAMIC dyn_show_total_dives, 0 |
656 MENU_CALL tMore, do_info_menu2 | 1173 MENU_CALL tMore, do_menu_info2 |
657 MENU_END | 1174 MENU_END |
658 | 1175 |
659 do_info_menu2: | 1176 |
1177 ;----------------------------------------------------------------------------- | |
1178 ; dynamic Title - show Uptime | |
1179 ; | |
1180 dyn_show_uptime: | |
1181 STRCAT_TEXT tUptime ; print title | |
1182 SMOVQQ uptime,xC ; ISR-safe copy of uptime:4 to xC:4 | |
1183 goto output_secs_as_days_hours ; print seconds as days and hours and return | |
1184 | |
1185 | |
1186 ;----------------------------------------------------------------------------- | |
1187 ; dynamic Title - show Uptime | |
1188 ; | |
1189 dyn_show_serial: | |
1190 STRCAT_TEXT tSerial ; print title | |
1191 goto TFT_cat_serial ; print serial number and return | |
1192 | |
1193 ;----------------------------------------------------------------------------- | |
1194 ; dynamic Title - show Firmware Version | |
1195 ; | |
1196 dyn_show_firmware_ostc: | |
1197 STRCAT_TEXT tFirmware ; print title | |
1198 call TFT_cat_firmware ; print firmware version | |
1199 PUTC " " ; print a dot | |
1200 goto TFT_cat_beta_short ; print beta/release state and return | |
1201 | |
1202 | |
1203 ;----------------------------------------------------------------------------- | |
1204 ; dynamic Title - show Firmware creation Date | |
1205 ; | |
1206 dyn_show_fw_creation_date: | |
1207 STRCAT_TEXT tFirmwareDate ; print title | |
1208 movlw firmware_creation_year ; get firmware creation year | |
1209 movwf lo ; copy to lo | |
1210 movlw firmware_creation_month ; get firmware creation month | |
1211 movwf hi ; copy to hi | |
1212 movlw firmware_creation_day ; get firmware creation day | |
1213 movwf up ; copy to up | |
1214 goto output_date ; print date and return | |
1215 | |
1216 | |
1217 IFDEF _rx_functions | |
1218 | |
1219 ;----------------------------------------------------------------------------- | |
1220 ; dynamic Title - show RX Firmware Version (also used by start.asm) | |
1221 ; | |
1222 global dyn_show_firmware_rx | |
1223 dyn_show_firmware_rx: | |
1224 STRCAT_TEXT tFirmware_rx ; print title | |
1225 movff rx_firmware_cur_major,lo ; get major version | |
1226 bsf leftbind ; print left-aligned | |
1227 output_99 ; print major (0-99) | |
1228 PUTC '.' ; print a dot | |
1229 movff rx_firmware_cur_minor,lo ; get minor | |
1230 output_99x ; print minor (00-99) | |
1231 return ; done | |
1232 | |
1233 ENDIF ; _rx_functions | |
1234 | |
1235 | |
1236 ;----------------------------------------------------------------------------- | |
1237 ; dynamic Title - show total Number of Dives | |
1238 ; | |
1239 dyn_show_total_dives: | |
1240 STRCAT_TEXT tTotalDives ; print title | |
1241 call eeprom_total_dives_read ; read total number of dives | |
1242 bsf leftbind ; print left-aligned | |
1243 output_65535 ; print number of total dives (0-65535) | |
1244 return ; done | |
1245 | |
1246 | |
1247 ;----------------------------------------------------------------------------- | |
1248 ; Settings Menu - 2nd Layer - System Infos - Page 2 | |
1249 ; | |
1250 do_menu_info2: | |
1251 IFNDEF _comm_debug | |
660 MENU_BEGIN tInfoMenu, .5 | 1252 MENU_BEGIN tInfoMenu, .5 |
661 MENU_DYNAMIC info_menu_battery_volts, 0 | 1253 MENU_DYNAMIC dyn_show_battery_volts, 0 |
662 MENU_DYNAMIC info_menu_config, 0 | 1254 MENU_DYNAMIC dyn_show_config, 0 |
663 MENU_DYNAMIC info_menu_sensor_calib, 0 | 1255 MENU_DYNAMIC dyn_show_sensor_calib, 0 |
664 MENU_DYNAMIC info_menu_sensor_offset, 0 | 1256 MENU_DYNAMIC dyn_show_sensor_offset, 0 |
665 MENU_CALL tBack, do_return_settings_deeper | 1257 MENU_CALL tBack, do_return_menu_settings_deeper |
666 MENU_END | 1258 MENU_END |
1259 ELSE | |
1260 MENU_BEGIN tInfoMenu, .6 | |
1261 MENU_DYNAMIC dyn_show_battery_volts, 0 | |
1262 MENU_DYNAMIC dyn_show_config, 0 | |
1263 MENU_DYNAMIC dyn_show_sensor_calib, 0 | |
1264 MENU_DYNAMIC dyn_show_sensor_offset, 0 | |
1265 MENU_OPT_INC tCommTimeout, oCommTimeout | |
1266 MENU_CALL tBack, do_return_menu_settings_deeper | |
1267 MENU_END | |
1268 ENDIF | |
1269 | |
1270 | |
1271 ;----------------------------------------------------------------------------- | |
1272 ; dynamic Title - show Battery Volts and Type | |
1273 ; | |
1274 dyn_show_battery_volts: | |
1275 STRCAT_TEXT tBatteryV ; print text | |
1276 MOVII batt_voltage,mpr ; get battery voltage | |
1277 bsf decimal_digit3 ; place a decimal point in front of digit 3 | |
1278 bsf omit_digit_1 ; do not print 1st digit | |
1279 output_9999 ; print as x.yy- | |
1280 STRCAT " V(T" ; append fix legend | |
1281 movff battery_type,lo ; =0:1.5V, =1:3.6V Saft, =2:LiIon 3.7V/0.8Ah, =3:LiIon 3.7V/3.1Ah, =4: LiIon 3.7V/2.3Ah | |
1282 output_9 ; print battery type code (0-9) | |
1283 PUTC ")" ; append fix legend | |
1284 return ; done | |
1285 | |
1286 | |
1287 ;----------------------------------------------------------------------------- | |
1288 ; dynamic Title - show Hardware / Software Configuration | |
1289 ; | |
1290 dyn_show_config: | |
1291 STRCAT_TEXT tHardware ; print text | |
1292 call I2C_init_compass ; start compass to get compass configuration | |
1293 movf HW_descriptor,W ; copy hardware descriptor to WREG | |
1294 output_hex ; print as hex | |
1295 movf HW_variants,W ; copy hardware variants to WREG | |
1296 output_hex ; print as hex | |
1297 PUTC "-" ; print a separator | |
1298 movlw FW_CONF ; get firmware configuration | |
1299 output_hex ; print as hex | |
1300 call get_cpu_version ; get CPU version | |
1301 output_hex ; print as hex | |
1302 return ; done | |
1303 | |
1304 | |
1305 ;----------------------------------------------------------------------------- | |
1306 ; dynamic Title - show Pressure Sensor Calibration Data C1 and C5 | |
1307 ; | |
1308 dyn_show_sensor_calib: | |
1309 STRCAT_TEXT tSensorC ; print label | |
1310 movff C1+1,WREG ; get C1, high byte | |
1311 output_hex ; print C1, high byte | |
1312 movff C1+0,WREG ; get C1, low byte | |
1313 output_hex ; print C1, low byte | |
1314 PUTC "-" ; print a separator | |
1315 movff C5+1,WREG ; get C5, high byte | |
1316 output_hex ; print C5, high byte | |
1317 movff C5+0,WREG ; get C5, low byte | |
1318 output_hex ; print C5, low byte | |
1319 return ; done | |
1320 | |
1321 | |
1322 ;----------------------------------------------------------------------------- | |
1323 ; dynamic Title - show Pressure Sensor Offset Setting | |
1324 ; | |
1325 dyn_show_sensor_offset: | |
1326 STRCAT_TEXT tSensorD ; print label | |
1327 movff opt_pressure_adjust,lo ; get pressure sensor offset | |
1328 movf lo,F ; excite flags | |
1329 bz dyn_show_sensor_offset_zero ; sensor offset = 0 | |
1330 bn dyn_show_sensor_offset_neg ; sensor offset < 0 | |
1331 ;bnn dyn_show_sensor_offset_pos ; sensor offset > 0 | |
1332 dyn_show_sensor_offset_pos: | |
1333 PUTC "+" ; print plus sign | |
1334 bra dyn_show_sensor_offset_com ; continue with common part | |
1335 dyn_show_sensor_offset_zero: | |
1336 PUTC " " ; print a space | |
1337 bra dyn_show_sensor_offset_com ; continue with common part | |
1338 dyn_show_sensor_offset_neg: | |
1339 PUTC "-" ; print a minus sign | |
1340 negf lo ; negate lo | |
1341 ;bra dyn_show_sensor_offset_com ; continue with common part | |
1342 dyn_show_sensor_offset_com: | |
1343 PUTC " " ; print a space | |
1344 bsf leftbind ; print left-aligned | |
1345 output_99 ; print value (0-99) | |
1346 PUTC " " ; print a space | |
1347 STRCAT_TEXT tMBAR ; print unit | |
1348 return ; done | |
667 | 1349 |
668 | 1350 |
669 IFDEF _rx_functions | 1351 IFDEF _rx_functions |
670 | 1352 |
671 do_settings_menu_TR: | 1353 ;----------------------------------------------------------------------------- |
1354 ; Settings Menu - 2nd Layer - TR Settings | |
1355 ; | |
1356 do_menu_settings_TR: | |
672 movff opt_dive_mode,WREG ; get dive mode: 0=OC, 1=CCR, 2=Gauge, 3=Apnea, 4=pSCR | 1357 movff opt_dive_mode,WREG ; get dive mode: 0=OC, 1=CCR, 2=Gauge, 3=Apnea, 4=pSCR |
673 incf WREG,W ; add 1 | 1358 incf WREG,W ; add 1 |
674 dcfsnz WREG,W ; subtract one, became zero? | 1359 dcfsnz WREG,W ; subtract one, became zero? |
675 bra do_settings_menu_TR_MaxDelta; YES - OC | 1360 bra do_menu_settings_TR_MaxDelta; YES - OC |
676 dcfsnz WREG,W ; subtract one, became zero? | 1361 dcfsnz WREG,W ; subtract one, became zero? |
677 bra do_settings_menu_TR_BailPres; YES - CCR | 1362 bra do_menu_settings_TR_BailPres; YES - CCR |
678 dcfsnz WREG,W ; subtract one, became zero? | 1363 dcfsnz WREG,W ; subtract one, became zero? |
679 bra do_settings_menu_TR_MaxDelta; YES - Gauge | 1364 bra do_menu_settings_TR_MaxDelta; YES - Gauge |
680 dcfsnz WREG,W ; subtract one, became zero? | 1365 dcfsnz WREG,W ; subtract one, became zero? |
681 bra do_settings_menu_TR_abort ; YES - Apnea, abort | 1366 bra do_menu_settings_TR_abort ; YES - Apnea, abort |
682 dcfsnz WREG,W ; subtract one, became zero? | 1367 dcfsnz WREG,W ; subtract one, became zero? |
683 bra do_settings_menu_TR_both ; YES - pSCR | 1368 bra do_menu_settings_TR_both ; YES - pSCR |
684 do_settings_menu_TR_abort: | 1369 |
685 call menu_processor_pop ; drop last menu selection | 1370 do_menu_settings_TR_abort: |
686 bra do_settings_menu ; back to last menu | 1371 call menu_processor_pop ; drop button press |
687 | 1372 bra do_menu_settings ; back to same menu |
688 do_settings_menu_TR_MaxDelta: ; menu with oTrMaxDeltaPres | 1373 |
1374 | |
1375 ;----------------------------------------------------------------------------- | |
1376 ; Settings Menu - 3rd Layer - TR Settings - Sidemount Mode | |
1377 ; | |
1378 do_menu_settings_TR_MaxDelta: ; menu with oTrMaxDeltaPres | |
689 MENU_BEGIN tTrSettings, .5 | 1379 MENU_BEGIN tTrSettings, .5 |
690 MENU_OPTION tTrMode, oTrMode, 0 | 1380 MENU_OPT_INC tTrMode, oTrMode |
691 MENU_OPTION tTr1stPres, oTr1stPres, 0 | 1381 MENU_OPT_INC tTr1stPres, oTr1stPres |
692 MENU_OPTION tTr2ndPres, oTr2ndPres, 0 | 1382 MENU_OPT_INC tTr2ndPres, oTr2ndPres |
693 MENU_DYNAMIC do_toggle_max_pres_diff_label,do_toggle_max_pres_diff | 1383 MENU_DYNAMIC dyn_toggle_max_pres_diff, do_toggle_max_pres_diff |
694 MENU_CALL tBack, do_return_settings | 1384 MENU_CALL tBack, do_return_menu_settings |
695 MENU_END | 1385 MENU_END |
696 | 1386 |
697 do_settings_menu_TR_BailPres: ; menu with oTrBailPres | 1387 |
1388 ;----------------------------------------------------------------------------- | |
1389 ; Settings Menu - 3rd Layer - TR Settings - CCR Mode | |
1390 ; | |
1391 do_menu_settings_TR_BailPres: ; menu with oTrBailPres | |
698 MENU_BEGIN tTrSettings, .5 | 1392 MENU_BEGIN tTrSettings, .5 |
699 MENU_OPTION tTrMode, oTrMode, 0 | 1393 MENU_OPT_INC tTrMode, oTrMode |
700 MENU_OPTION tTr1stPres, oTr1stPres, 0 | 1394 MENU_OPT_INC tTr1stPres, oTr1stPres |
701 MENU_OPTION tTr2ndPres, oTr2ndPres, 0 | 1395 MENU_OPT_INC tTr2ndPres, oTr2ndPres |
702 MENU_OPTION tTrBailPres, oTrBailPres, 0 | 1396 MENU_OPT_INC tTrBailPres, oTrBailPres |
703 MENU_CALL tBack, do_return_settings | 1397 MENU_CALL tBack, do_return_menu_settings |
704 MENU_END | 1398 MENU_END |
705 | 1399 |
706 do_settings_menu_TR_both: ; menu with oTrBailPres and oTrMaxDeltaPres | 1400 |
1401 ;----------------------------------------------------------------------------- | |
1402 ; Settings Menu - 3rd Layer - TR Settings - pSCR Mode | |
1403 ; | |
1404 do_menu_settings_TR_both: ; menu with oTrBailPres and oTrMaxDeltaPres | |
707 MENU_BEGIN tTrSettings, .6 | 1405 MENU_BEGIN tTrSettings, .6 |
708 MENU_OPTION tTrMode, oTrMode, 0 | 1406 MENU_OPT_INC tTrMode, oTrMode |
709 MENU_OPTION tTr1stPres, oTr1stPres, 0 | 1407 MENU_OPT_INC tTr1stPres, oTr1stPres |
710 MENU_OPTION tTr2ndPres, oTr2ndPres, 0 | 1408 MENU_OPT_INC tTr2ndPres, oTr2ndPres |
711 MENU_OPTION tTrBailPres, oTrBailPres, 0 | 1409 MENU_OPT_INC tTrBailPres, oTrBailPres |
712 MENU_DYNAMIC do_toggle_max_pres_diff_label,do_toggle_max_pres_diff | 1410 MENU_DYNAMIC dyn_toggle_max_pres_diff, do_toggle_max_pres_diff |
713 MENU_CALL tBack, do_return_settings | 1411 MENU_CALL tBack, do_return_menu_settings |
714 MENU_END | 1412 MENU_END |
715 | 1413 |
716 | 1414 |
1415 ;----------------------------------------------------------------------------- | |
1416 ; dynamic Title - max. Delta Pressure for Swap Tanks Advice | |
1417 ; | |
1418 dyn_toggle_max_pres_diff: | |
1419 movff opt_TR_mode,WREG ; get TR mode | |
1420 xorlw .2 ; compare with 2 (ind.double) | |
1421 tstfsz WREG ; equal? | |
1422 FONT_COLOR_DISABLED ; NO - print in disabled color | |
1423 STRCAT_TEXT tTrMaxDeltaP ; output label | |
1424 movff char_I_max_pres_diff,lo ; get configured deltaP | |
1425 output_99 ; print deltaP (0-99) | |
1426 STRCAT_TEXT tbar ; append " bar" | |
1427 return ; done | |
1428 | |
1429 | |
1430 ;----------------------------------------------------------------------------- | |
1431 ; Call Function - adjust max. Delta Pressure for Swap Tanks Advice | |
1432 ; | |
717 do_toggle_max_pres_diff: ; add 5 bar, with hard-coded max. | 1433 do_toggle_max_pres_diff: ; add 5 bar, with hard-coded max. |
718 movff char_I_max_pres_diff,lo ; get current value | 1434 movff char_I_max_pres_diff,lo ; get current value |
719 movlw .5 ; load increment | 1435 movlw .5 ; load increment |
720 addwf lo,F ; add increment | 1436 addwf lo,F ; add increment |
721 movlw max_pres_diff_max ; load maximum value | 1437 movlw max_pres_diff_max ; load maximum value |
728 return ; done | 1444 return ; done |
729 | 1445 |
730 ENDIF ; _rx_functions | 1446 ENDIF ; _rx_functions |
731 | 1447 |
732 | 1448 |
733 do_return_settings_more_deeper: ; entry point for returns from reset sub-menu | 1449 ;----------------------------------------------------------------------------- |
1450 ; return to Settings Menu from Sub-Menu | |
1451 ; | |
1452 do_return_menu_date_time: | |
1453 call menu_processor_double_pop ; drop exit line and back to last line | |
1454 | |
1455 | |
1456 ;----------------------------------------------------------------------------- | |
1457 ; Settings Menu - 2nd Layer - set Time & Date | |
1458 ; | |
1459 do_menu_date_time: | |
1460 bsf imprint_time_date ; start imprinting current time & date | |
1461 bcf block_option_value ; resume displaying of option values | |
1462 | |
1463 MENU_BEGIN tSetTimeDate, .4 | |
1464 MENU_CALL tSetTime, do_menu_set_time | |
1465 MENU_CALL tSetDate, do_menu_set_date | |
1466 MENU_OPT_INC tDateFormat, oDateFormat | |
1467 MENU_CALL tBack, do_return_menu_settings | |
1468 MENU_END | |
1469 | |
1470 | |
1471 ;----------------------------------------------------------------------------- | |
1472 ; Settings Menu - 3rd Layer - set Time & Date - set Time | |
1473 ; | |
1474 do_menu_set_time: | |
1475 bsf block_option_value ; suspend displaying of option values | |
1476 | |
1477 MENU_BEGIN tSetTime, .4 | |
1478 MENU_OPT_INC tSetHours, oSetHours | |
1479 MENU_OPT_INC tSetMinutes, oSetMinutes | |
1480 MENU_OPT_INC tSetSeconds, oClearSeconds | |
1481 MENU_CALL tBack, do_return_menu_date_time | |
1482 MENU_END | |
1483 | |
1484 | |
1485 ;----------------------------------------------------------------------------- | |
1486 ; Settings Menu - 3rd Layer - set Time & Date - set Date | |
1487 ; | |
1488 do_menu_set_date: | |
1489 bsf block_option_value ; suspend displaying of option values | |
1490 | |
1491 MENU_BEGIN tSetDate, .4 | |
1492 MENU_OPT_INC tSetDay, oSetDay | |
1493 MENU_OPT_INC tSetMonth, oSetMonth | |
1494 MENU_OPT_INC tSetYear, oSetYear | |
1495 MENU_CALL tBack, do_return_menu_date_time | |
1496 MENU_END | |
1497 | |
1498 | |
1499 ;----------------------------------------------------------------------------- | |
1500 ; return to Display Settings from Sub-Menu | |
1501 ; | |
1502 do_return_dispsets_menu: | |
1503 bcf imprint_color_schemes ; deactivate color schemes demonstration | |
1504 call menu_processor_double_pop ; drop exit line and back to last line | |
1505 ;bra do_menu_dispsets ; continue | |
1506 | |
1507 | |
1508 ;----------------------------------------------------------------------------- | |
1509 ; Settings Menu - 2nd Layer - Display Settings - Page 1 | |
1510 ; | |
1511 do_menu_dispsets: | |
1512 IF _language_2!=none | |
1513 MENU_BEGIN tDispSets, .7 | |
1514 MENU_OPT_INC tBright, oBrightness | |
1515 MENU_OPT_INC tLayout, oLayout | |
1516 MENU_OPT_INC tUnits, oUnits | |
1517 MENU_OPT_INC tLanguage, oLanguage | |
1518 MENU_OPT_INC tFlip, oFlipScreen | |
1519 MENU_CALL tColorScheme, do_menu_color_scheme | |
1520 MENU_CALL tMore, do_menu_dispsets_more | |
1521 MENU_END | |
1522 ELSE | |
1523 MENU_BEGIN tDispSets, .6 | |
1524 MENU_OPT_INC tBright, oBrightness | |
1525 MENU_OPT_INC tLayout, oLayout | |
1526 MENU_OPT_INC tUnits, oUnits | |
1527 MENU_OPT_INC tFlip, oFlipScreen | |
1528 MENU_CALL tColorScheme, do_menu_color_scheme | |
1529 MENU_CALL tMore, do_menu_dispsets_more | |
1530 MENU_END | |
1531 ENDIF | |
1532 | |
1533 | |
1534 ;----------------------------------------------------------------------------- | |
1535 ; Settings Menu - 3rd Layer - Display Settings - Color Schemes | |
1536 ; | |
1537 do_menu_color_scheme: | |
1538 bsf imprint_color_schemes ; activate color schemes demonstration | |
1539 | |
1540 ; menu with 4 leading empty menu lines to give space for the color scheme imprinting | |
1541 MENU_BEGIN_OFFSET tColorScheme, .2, .4 | |
1542 MENU_OPT_INC tColorSetDive, oColorSetDive | |
1543 MENU_CALL tBack, do_return_dispsets_menu | |
1544 MENU_END | |
1545 | |
1546 | |
1547 ;----------------------------------------------------------------------------- | |
1548 ; Settings Menu - 2nd Layer - Display Settings - Page 2 | |
1549 ; | |
1550 do_menu_dispsets_more: | |
1551 IFDEF _helium | |
1552 MENU_BEGIN tDispSets, .7 | |
1553 MENU_OPT_INC tVSIgraph, oVSIgraph | |
1554 MENU_OPT_INC tVSItext2, oVSItext | |
1555 MENU_OPT_INC tShowppO2, oShowppO2 | |
1556 MENU_OPT_INC tDepthWarning, oDepthWarn | |
1557 MENU_OPT_INC t2ndDepth, o2ndDepthDisp | |
1558 MENU_OPT_INC tTissueGraphics, oTissueGraphics | |
1559 MENU_CALL tBack, do_return_menu_settings_deeper | |
1560 MENU_END | |
1561 ELSE | |
1562 MENU_BEGIN tDispSets, .6 | |
1563 MENU_OPT_INC tVSIgraph, oVSIgraph | |
1564 MENU_OPT_INC tVSItext2, oVSItext | |
1565 MENU_OPT_INC tShowppO2, oShowppO2 | |
1566 MENU_OPT_INC tDepthWarning, oDepthWarn | |
1567 MENU_OPT_INC t2ndDepth, o2ndDepthDisp | |
1568 MENU_CALL tBack, do_return_menu_settings_deeper | |
1569 MENU_END | |
1570 ENDIF | |
1571 | |
1572 | |
1573 ;----------------------------------------------------------------------------- | |
1574 ; return to System Settings Menu from Sub-Sub-Menu | |
1575 ; | |
1576 do_return_menu_syssets_more_more: ; entry point for returns from reset sub-menu | |
734 call menu_processor_pop ; drop one more stack entry | 1577 call menu_processor_pop ; drop one more stack entry |
735 | 1578 ;bra do_return_menu_syssets_more ; continue |
736 do_return_settings_more: | 1579 |
1580 | |
1581 ;----------------------------------------------------------------------------- | |
1582 ; return to System Settings Menu from Sub-Menu | |
1583 ; | |
1584 do_return_menu_syssets_more: | |
737 call menu_processor_double_pop ; drop exit line and back to last line | 1585 call menu_processor_double_pop ; drop exit line and back to last line |
738 | 1586 bra do_menu_syssets ; continue |
739 do_syssets_menu: | 1587 |
1588 | |
1589 ;----------------------------------------------------------------------------- | |
1590 ; return to System Settings Menu from Piezo-Sub-Menu | |
1591 ; | |
1592 do_return_menu_syssets_piezo: | |
1593 call menu_processor_double_pop ; drop exit line and back to last line | |
1594 call TFT_ClearScreen ; clear the screen | |
1595 call piezo_config ; configure buttons | |
1596 ;bra do_menu_syssets ; continue | |
1597 | |
1598 | |
1599 ;----------------------------------------------------------------------------- | |
1600 ; Settings Menu - 2nd Layer - System Settings | |
1601 ; | |
1602 do_menu_syssets: | |
740 btfsc battery_gauge_available ; piezo buttons available? | 1603 btfsc battery_gauge_available ; piezo buttons available? |
741 bra do_syssets_menu_piezo ; YES | 1604 bra do_menu_syssets_piezo ; YES |
742 | 1605 |
743 IFDEF _compass | 1606 IFDEF _compass |
744 MENU_BEGIN tSystSets, .4 ; All MENU_CALLs in this menu | 1607 MENU_BEGIN tSystSets, .4 ; All MENU_CALLs in this menu |
745 MENU_CALL tCompassMenu, do_compass_menu ; need to stay together on this | 1608 MENU_CALL tCompassMenu, do_menu_compass ; need to stay together on this |
746 MENU_CALL tLogOffset, do_log_offset_menu ; menu level in order to not | 1609 MENU_CALL tLogOffset, do_menu_log_offset ; menu level in order to not |
747 MENU_CALL tResetMenu, do_reset_menu ; mess up the menu stack on doing | 1610 MENU_CALL tResetMenu, do_menu_reset ; mess up the menu stack on doing |
748 MENU_CALL tBack, do_return_settings ; the do_return_settings ! | 1611 MENU_CALL tBack, do_return_menu_settings ; the do_return_menu_settings ! |
749 MENU_END | 1612 MENU_END |
750 ELSE | 1613 ELSE |
751 MENU_BEGIN tSystSets, .3 ; see above | 1614 MENU_BEGIN tSystSets, .3 ; see above |
752 MENU_CALL tLogOffset, do_log_offset_menu ; | 1615 MENU_CALL tLogOffset, do_menu_log_offset ; |
753 MENU_CALL tResetMenu, do_reset_menu ; | 1616 MENU_CALL tResetMenu, do_menu_reset ; |
754 MENU_CALL tBack, do_return_settings ; | 1617 MENU_CALL tBack, do_return_menu_settings ; |
755 MENU_END | 1618 MENU_END |
756 ENDIF ; _compass | 1619 ENDIF ; _compass |
757 | 1620 |
758 | 1621 do_menu_syssets_piezo: |
759 do_return_syssets_menu_piezo: | |
760 call TFT_ClearScreen | |
761 call piezo_config ; configure buttons | |
762 call menu_processor_double_pop ; drop exit line and back to last line | |
763 | |
764 do_syssets_menu_piezo: | |
765 IFDEF _compass | 1622 IFDEF _compass |
766 MENU_BEGIN tSystSets, .6 | 1623 MENU_BEGIN tSystSets, .5 |
767 MENU_CALL tCompassMenu, do_compass_menu ; see above | 1624 MENU_CALL tCompassMenu, do_menu_compass ; see above |
768 MENU_CALL tLogOffset, do_log_offset_menu ; | 1625 MENU_CALL tLogOffset, do_menu_log_offset ; |
769 MENU_DYNAMIC info_menu_total_dives, 0 | 1626 MENU_CALL tResetMenu, do_menu_reset ; |
770 MENU_CALL tResetMenu, do_reset_menu ; | 1627 MENU_CALL tPiezo, do_menu_piezo ; |
771 MENU_CALL tPiezo, do_settings_piezo_menu ; | 1628 MENU_CALL tBack, do_return_menu_settings ; |
772 MENU_CALL tBack, do_return_settings ; | |
773 MENU_END | 1629 MENU_END |
774 ELSE | 1630 ELSE |
775 MENU_BEGIN tSystSets, .5 | 1631 MENU_BEGIN tSystSets, .4 |
776 MENU_CALL tLogOffset, do_log_offset_menu ; see above | 1632 MENU_CALL tLogOffset, do_menu_log_offset ; see above |
777 MENU_DYNAMIC info_menu_total_dives, 0 | 1633 MENU_CALL tResetMenu, do_menu_reset ; |
778 MENU_CALL tResetMenu, do_reset_menu ; | 1634 MENU_CALL tPiezo, do_menu_piezo ; |
779 MENU_CALL tPiezo, do_settings_piezo_menu ; | 1635 MENU_CALL tBack, do_return_menu_settings ; |
780 MENU_CALL tBack, do_return_settings ; | |
781 MENU_END | 1636 MENU_END |
782 ENDIF | 1637 ENDIF |
783 | 1638 |
784 | 1639 |
785 do_settings_piezo_menu: | |
786 ; Menu with features only available in piezo button hardware | |
787 MENU_BEGIN tPiezo, .3 | |
788 MENU_OPTION tButtonleft, ocR_button_left, 0 ; left button sensitivity | |
789 MENU_OPTION tButtonright, ocR_button_right, 0 ; right button sensitivity | |
790 MENU_CALL tBack, do_return_syssets_menu_piezo | |
791 MENU_END | |
792 | |
793 | |
794 IFDEF _compass | 1640 IFDEF _compass |
795 | 1641 |
796 do_compass_menu: | 1642 ;----------------------------------------------------------------------------- |
1643 ; Settings Menu - 3rd Layer - System Settings - Compass | |
1644 ; | |
1645 do_menu_compass: | |
797 MENU_BEGIN tCompassMenu, .5 | 1646 MENU_BEGIN tCompassMenu, .5 |
798 MENU_CALL tCompassMenu, compass_calibration_loop ; exits to surface loop | 1647 MENU_CALL tCompassCalibration, do_compass_calibration |
799 ; MENU_OPTION tCompassGain, oCompassGain, 0 | 1648 ; MENU_OPT_INC tCompassGain, oCompassGain |
800 MENU_DYNAMIC menu_cal_x, 0 | 1649 MENU_DYNAMIC dyn_compass_cal_x, 0 |
801 MENU_DYNAMIC menu_cal_y, 0 | 1650 MENU_DYNAMIC dyn_compass_cal_y, 0 |
802 MENU_DYNAMIC menu_cal_z, 0 | 1651 MENU_DYNAMIC dyn_compass_cal_z, 0 |
803 MENU_CALL tBack, do_return_settings_more | 1652 MENU_CALL tBack, do_return_menu_syssets_more |
804 MENU_END | 1653 MENU_END |
1654 | |
1655 | |
1656 ;----------------------------------------------------------------------------- | |
1657 ; Call Function - start Compass Calibration | |
1658 ; | |
1659 do_compass_calibration: | |
1660 goto compass_calibration ; code hosted in compass_ops.asm | |
1661 | |
1662 | |
1663 ;----------------------------------------------------------------------------- | |
1664 ; dynamic Title - Calibration Value X | |
1665 ; | |
1666 dyn_compass_cal_x: | |
1667 STRCAT_TEXT tCalX ; print label | |
1668 lfsr FSR0,compass_CX_f ; address calibration value X | |
1669 bra dyn_compass_cal_common ; continue with common part | |
1670 | |
1671 | |
1672 ;----------------------------------------------------------------------------- | |
1673 ; dynamic Title - Calibration Value Y | |
1674 ; | |
1675 dyn_compass_cal_y: | |
1676 STRCAT_TEXT tCalY ; print label | |
1677 lfsr FSR0,compass_CY_f ; address calibration value Y | |
1678 bra dyn_compass_cal_common ; continue with common part | |
1679 | |
1680 | |
1681 ;----------------------------------------------------------------------------- | |
1682 ; dynamic Title - Calibration Value Z | |
1683 ; | |
1684 dyn_compass_cal_z: | |
1685 STRCAT_TEXT tCalZ ; print label | |
1686 lfsr FSR0,compass_CZ_f ; address calibration value Z | |
1687 ;bra dyn_compass_cal_common ; continue with common part | |
1688 | |
1689 | |
1690 ;----------------------------------------------------------------------------- | |
1691 ; Helper Function to dynamic Titles - Calibration Value | |
1692 ; | |
1693 dyn_compass_cal_common: | |
1694 movff POSTINC0,lo ; read calibration value, low byte | |
1695 movff POSTINC0,hi ; read calibration value, high byte | |
1696 PUTC ':' ; print ":" | |
1697 PUTC ' ' ; print a space | |
1698 call convert_signed_16bit ; convert lo:hi into signed-short and adds '-' to POSTINC2 if required | |
1699 btfsc neg_flag ; value negative? | |
1700 bra dyn_compass_cal_common_1 ; YES - print value | |
1701 PUTC '+' ; NO - add a plus sign | |
1702 dyn_compass_cal_common_1: | |
1703 output_65535 ; print value | |
1704 return ; done | |
805 | 1705 |
806 ENDIF ; _compass | 1706 ENDIF ; _compass |
807 | 1707 |
808 | 1708 |
809 ;============================================================================= | 1709 ;----------------------------------------------------------------------------- |
810 ; Reset and confirmation menu | 1710 ; Settings Menu - 3rd Layer - System Settings - Logbook Offset |
811 | 1711 ; |
812 do_reset_menu: | 1712 do_menu_log_offset: |
813 MENU_BEGIN tResetMenu, .6 | |
814 MENU_CALL tBack, do_return_settings_more | |
815 MENU_CALL tReboot, do_reset_menu_reboot ; confirm | |
816 MENU_CALL tResetDeco, do_reset_menu_deco ; confirm | |
817 MENU_CALL tResetSettings, do_reset_menu_settings ; confirm | |
818 MENU_CALL tResetLogbook, do_reset_menu_logbook ; confirm | |
819 MENU_CALL tResetBattery, do_new_battery_menu ; confirm | |
820 MENU_END | |
821 | |
822 do_reset_menu_reboot: | |
823 MENU_BEGIN tResetMenu2, .2 | |
824 MENU_CALL tAbort, do_return_settings_more_deeper | |
825 MENU_CALL tReboot, do_reboot ; reboot (cold start) | |
826 MENU_END | |
827 | |
828 do_reset_menu_deco: | |
829 MENU_BEGIN tResetMenu2, .2 | |
830 MENU_CALL tAbort, do_return_settings_more_deeper | |
831 MENU_CALL tResetDeco, do_reset_deco ; reset deco and return to main reset menu | |
832 MENU_END | |
833 | |
834 do_reset_menu_settings: | |
835 MENU_BEGIN tResetMenu2, .2 | |
836 MENU_CALL tAbort, do_return_settings_more_deeper | |
837 MENU_CALL tResetSettings, do_reset_settings ; reset all settings and go to surface mode | |
838 MENU_END | |
839 | |
840 do_reset_menu_logbook: | |
841 MENU_BEGIN tResetMenu2, .2 | |
842 MENU_CALL tAbort, do_return_settings_more_deeper | |
843 MENU_CALL tResetLogbook, do_reset_logbook ; reset logbook and return to main reset menu | |
844 MENU_END | |
845 | |
846 | |
847 do_reset_logbook: | |
848 call erase_complete_logbook ; erase complete logbook | |
849 bra do_return_settings_more_deeper | |
850 | |
851 do_reset_deco: | |
852 call deco_clear_tissue ; set all tissues to absolute pressure * N2_ratio (C-code) | |
853 call deco_calc_dive_interval_1min ; update tissues by 1 minute to calculate current GF factor (C-code) | |
854 call deco_calc_desaturation_time ; calculate desaturation and no-fly/no-altitude time (C-code) | |
855 banksel common | |
856 call eeprom_deco_data_write ; store updated deco data into EEPROM | |
857 bra do_return_settings_more_deeper | |
858 | |
859 | |
860 do_reset_settings: | |
861 call TFT_ClearScreen ; clear screen to show start of activity | |
862 call option_reset_all ; reset all options to factory default | |
863 call do_logoffset_reset ; reset log offset | |
864 goto restart ; restart into surface mode | |
865 | |
866 do_reboot: | |
867 call ext_flash_enable_protection ; set write protection on external flash | |
868 call eeprom_deco_data_write ; update deco data in EEPROM | |
869 call eeprom_battery_gauge_write ; update battery gauge in EEPROM | |
870 btfsc options_changed ; do the options need to be stored to EEPROM ? | |
871 call option_check_and_store_all ; YES - check and store all option values in EEPROM | |
872 reset ; cold-start the processor | |
873 | |
874 do_return_date_time_menu: | |
875 call menu_processor_double_pop ; drop exit line and back to last line | |
876 | |
877 do_date_time_menu: | |
878 bsf imprint_time_date ; start imprinting current time & date | |
879 bcf block_option_value ; allow display of option values again | |
880 | |
881 MENU_BEGIN tSetTimeDate, .4 | |
882 MENU_CALL tSetTime, do_time_menu | |
883 MENU_CALL tSetDate, do_date_menu | |
884 MENU_OPTION tDateFormat, oDateFormat, 0 | |
885 MENU_CALL tBack, do_return_settings | |
886 MENU_END | |
887 | |
888 | |
889 do_date_menu: | |
890 bsf block_option_value ; suspend display of option values | |
891 | |
892 MENU_BEGIN tSetDate, .4 | |
893 MENU_OPTION tSetDay, oSetDay, 0 | |
894 MENU_OPTION tSetMonth, oSetMonth, 0 | |
895 MENU_OPTION tSetYear, oSetYear, 0 | |
896 MENU_CALL tBack, do_return_date_time_menu | |
897 MENU_END | |
898 | |
899 | |
900 do_time_menu: | |
901 bsf block_option_value ; suspend display of option values | |
902 | |
903 MENU_BEGIN tSetTime, .4 | |
904 MENU_OPTION tSetHours, oSetHours, 0 | |
905 MENU_OPTION tSetMinutes, oSetMinutes, 0 | |
906 MENU_OPTION tSetSeconds, oClearSeconds, 0 | |
907 MENU_CALL tBack, do_return_date_time_menu | |
908 MENU_END | |
909 | |
910 | |
911 do_toggle_ppo2_max_work: ; add 0.1 bar | |
912 movff char_I_ppO2_max_work,lo ; bank-safe copy | |
913 movlw .10 | |
914 addwf lo,F | |
915 movlw ppo2_warning_high_highest | |
916 cpfsgt lo | |
917 bra do_toggle_ppo2_max2 | |
918 movlw ppo2_warning_high_lowest | |
919 movwf lo | |
920 do_toggle_ppo2_max2: | |
921 movff lo,char_I_ppO2_max_work | |
922 return | |
923 | |
924 do_toggle_ppo2_max_deco: ; add 0.1 bar | |
925 movff char_I_ppO2_max_deco,lo ; bank-safe copy | |
926 movlw .10 | |
927 addwf lo,F | |
928 movlw ppo2_warning_deco_highest | |
929 cpfsgt lo | |
930 bra do_toggle_ppo2_max_deco2 | |
931 movlw ppo2_warning_deco_lowest | |
932 movwf lo | |
933 do_toggle_ppo2_max_deco2: | |
934 movff lo,char_I_ppO2_max_deco | |
935 return | |
936 | |
937 do_toggle_ppo2_min: ; sub 0.1 bar | |
938 movff char_I_ppO2_min,lo ; bank-safe copy | |
939 incf lo,F | |
940 movlw ppo2_warning_low_highest | |
941 cpfsgt lo | |
942 bra do_toggle_ppo2_min2 | |
943 movlw ppo2_warning_low_lowest | |
944 movwf lo | |
945 do_toggle_ppo2_min2: | |
946 movff lo,char_I_ppO2_min | |
947 return | |
948 | |
949 do_toggle_ppo2_min_cc: ; sub 0.1 bar | |
950 movff char_I_ppO2_min_loop,lo ; bank-safe copy | |
951 incf lo,F | |
952 movlw ppo2_warning_loop_highest | |
953 cpfsgt lo | |
954 bra do_toggle_ppo2_min_cc2 | |
955 movlw ppo2_warning_loop_lowest | |
956 movwf lo | |
957 do_toggle_ppo2_min_cc2: | |
958 movff lo,char_I_ppO2_min_loop | |
959 return | |
960 | |
961 | |
962 ; Logbook offset sub-menu | |
963 do_log_offset_menu: | |
964 | 1713 |
965 clrf WREG ; select an initial step size of 1 | 1714 clrf WREG ; select an initial step size of 1 |
966 movff WREG,opt_logoffset_step ; bank-safe write to option variable | 1715 movff WREG,opt_logoffset_step ; bank-safe write to option variable (volatile option) |
967 | 1716 |
968 MENU_BEGIN tLogOffset, .5 | 1717 MENU_BEGIN tLogOffset, .5 |
969 MENU_DYNAMIC TFT_LogOffset, 0 | 1718 MENU_DYNAMIC dyn_logoffset_show_value, 0 |
970 MENU_OPTION tLogOffStepSize, oLogOffsetStep, 0 | 1719 MENU_OPT_INC tLogOffStepSize, oLogOffsetStep |
971 MENU_CALL tLogOffsetplus, do_logoffset_plus | 1720 MENU_CALL tLogOffsetplus, do_log_offset_plus |
972 MENU_CALL tLogOffsetminus, do_logoffset_minus | 1721 MENU_CALL tLogOffsetminus, do_log_offset_minus |
973 MENU_CALL tBack, do_return_settings_more | 1722 MENU_CALL tBack, do_return_menu_syssets_more |
974 MENU_END | 1723 MENU_END |
975 | 1724 |
976 | 1725 |
1726 ;----------------------------------------------------------------------------- | |
1727 ; dynamic Title - show Logbook Offset | |
1728 ; | |
1729 dyn_logoffset_show_value: | |
1730 STRCPY_TEXT tLogOffsetValue ; print "Offset" in selected language | |
1731 call eeprom_log_offset_read ; read offset into lo:hi | |
1732 output_9999 ; print offset (0-9999) | |
1733 return ; no "_PRINT" here... | |
1734 | |
1735 | |
1736 ;----------------------------------------------------------------------------- | |
1737 ; Call Function - increment Logbook Offset | |
1738 ; | |
1739 do_log_offset_plus: | |
1740 rcall do_logoffset_common ; load current offset and step size | |
1741 ; add step size to current offset | |
1742 movf mpr+2,W ; get step size, low byte | |
1743 addwf mpr+0,F ; add to offset, low byte | |
1744 movf mpr+3,W ; get step size, high byte | |
1745 addwfc mpr+1,F ; add to offset, high byte, considering carry flag | |
1746 ; check if new offset is within limit | |
1747 MOVLI .9999,sub_a ; load max limit into sub_a | |
1748 MOVII mpr, sub_b ; copy new offset into sub_b | |
1749 call cmpU16 ; compute sub_a - sub_b, setting neg_flag if result becomes negative | |
1750 btfss neg_flag ; neg_flag set, i.e. new offset > 9999 ? | |
1751 bra do_logoffset_exit ; NO - store offset and return | |
1752 MOVLI .9999,mpr ; YES - limit offset to 9999 | |
1753 bra do_logoffset_exit ; - store offset and return | |
1754 | |
1755 | |
1756 ;----------------------------------------------------------------------------- | |
1757 ; Call Function - decrement Logbook Offset | |
1758 ; | |
1759 do_log_offset_minus: | |
1760 rcall do_logoffset_common ; load current offset and step size | |
1761 ; subtract step size from current offset | |
1762 movf mpr+2,W ; get step size, low byte | |
1763 subwf mpr+0,F ; subtract from offset, low byte | |
1764 movf mpr+3,W ; get step size, high byte | |
1765 subwfb mpr+1,F ; subtract from offset, high byte, considering borrow flag | |
1766 ; check if new offset is within limit | |
1767 btfsc STATUS,C ; borrow to propagate (B == /CARRY) ? | |
1768 bra do_logoffset_exit ; NO - result >= 0, store and return | |
1769 ;bra do_logoffset_reset ; YES - revert offset to 0 | |
1770 | |
1771 | |
1772 ;----------------------------------------------------------------------------- | |
1773 ; Helper Functions - Logbook Offset Reset & Write-Back | |
1774 ; | |
1775 do_logoffset_reset: | |
1776 CLRI mpr ; set offset to 0 | |
1777 do_logoffset_exit: | |
1778 goto eeprom_log_offset_write ; store offset and return | |
1779 | |
1780 | |
1781 ;----------------------------------------------------------------------------- | |
1782 ; Helper Function - compute Step Size | |
1783 ; | |
977 do_logoffset_common: | 1784 do_logoffset_common: |
978 call eeprom_log_offset_read ; read current offset into mpr+1:mpr+0 | 1785 call eeprom_log_offset_read ; read current offset into mpr+1:mpr+0 |
979 movff opt_logoffset_step,ul ; get step size: 0=1, 1=10, 2=100, 3=1000 | 1786 movff opt_logoffset_step,ul ; get step size: 0=1, 1=10, 2=100, 3=1000 |
980 incf ul,F ; 0...3 -> 1...4 | 1787 incf ul,F ; 0...3 -> 1...4 |
981 clrf mpr+3 ; clear step size, high byte | 1788 clrf mpr+3 ; clear step size, high byte |
989 return ; YES - done | 1796 return ; YES - done |
990 movlw .100 ; NO - set a step size of 100 | 1797 movlw .100 ; NO - set a step size of 100 |
991 movwf mpr+2 ; - copy to step size, low byte | 1798 movwf mpr+2 ; - copy to step size, low byte |
992 dcfsnz ul,F ; ul--, did ul became 0, i.e. step size = 100 ? | 1799 dcfsnz ul,F ; ul--, did ul became 0, i.e. step size = 100 ? |
993 return ; YES - done | 1800 return ; YES - done |
994 movlw LOW .1000 ; NO - set a step size of 1000, low byte | 1801 movlw LOW .1000 ; NO - set a step size of 1000, low byte |
995 movwf mpr+2 ; - copy to step size, low byte | 1802 movwf mpr+2 ; - copy to step size, low byte |
996 movlw HIGH .1000 ; - set a step size of 1000, high byte | 1803 movlw HIGH .1000 ; - set a step size of 1000, high byte |
997 movwf mpr+3 ; - copy to step size, high byte | 1804 movwf mpr+3 ; - copy to step size, high byte |
998 return ; - done | 1805 return ; - done |
999 | 1806 |
1000 do_logoffset_plus: | 1807 |
1001 rcall do_logoffset_common ; load current offset and step size | 1808 ;----------------------------------------------------------------------------- |
1002 ; add step size to current offset | 1809 ; Settings Menu - 3rd Layer - System Settings - adjust Piezo Buttons |
1003 movf mpr+2,W ; get step size, low byte | 1810 ; |
1004 addwf mpr+0,F ; add to offset, low byte | 1811 do_menu_piezo: |
1005 movf mpr+3,W ; get step size, high byte | 1812 MENU_BEGIN tPiezo, .3 |
1006 addwfc mpr+1,F ; add to offset, high byte, considering carry flag | 1813 MENU_OPT_INC tButtonleft, ocR_button_left ; left button sensitivity |
1007 ; check if new offset is within limit | 1814 MENU_OPT_INC tButtonright, ocR_button_right ; right button sensitivity |
1008 MOVLI .9999,sub_a ; load max limit into sub_a | 1815 MENU_CALL tBack, do_return_menu_syssets_piezo |
1009 MOVII mpr, sub_b ; copy new offset into sub_b | 1816 MENU_END |
1010 call cmpU16 ; compute sub_a - sub_b, setting neg_flag if result becomes negative | 1817 |
1011 btfss neg_flag ; neg_flag set, i.e. new offset > 9999 ? | 1818 |
1012 bra do_logoffset_exit ; NO - store offset and return | 1819 ;----------------------------------------------------------------------------- |
1013 MOVLI .9999,mpr ; YES - limit offset to 9999 | 1820 ; Settings Menu - 3rd Layer - System Settings - Reset Menus |
1014 bra do_logoffset_exit ; - store offset and return | 1821 ; |
1015 | 1822 do_menu_reset: |
1016 do_logoffset_minus: | 1823 MENU_BEGIN tResetMenu, .6 |
1017 rcall do_logoffset_common ; load current offset and step size | 1824 MENU_CALL tBack, do_return_menu_syssets_more |
1018 ; subtract step size from current offset | 1825 MENU_CALL tReboot, do_menu_reset_reboot ; confirm |
1019 movf mpr+2,W ; get step size, low byte | 1826 MENU_CALL tResetDeco, do_menu_reset_deco ; confirm |
1020 subwf mpr+0,F ; subtract from offset, low byte | 1827 MENU_CALL tResetSettings, do_menu_reset_settings ; confirm |
1021 movf mpr+3,W ; get step size, high byte | 1828 MENU_CALL tResetLogbook, do_menu_reset_logbook ; confirm |
1022 subwfb mpr+1,F ; subtract from offset, high byte, considering borrow flag | 1829 MENU_CALL tResetBattery, do_menu_reset_battery ; confirm |
1023 ; check if new offset is within limit | 1830 MENU_END |
1024 btfsc STATUS,C ; borrow to propagate (B == /CARRY) ? | 1831 |
1025 bra do_logoffset_exit ; NO - result >= 0, store and return | 1832 |
1026 do_logoffset_reset: | 1833 ;----------------------------------------------------------------------------- |
1027 CLRI mpr ; YES - revert offset to 0 | 1834 ; Settings Menu - 4th Layer - System Settings - Reset - Reboot / FW Recovery |
1028 ;bra do_logoffset_exit ; - store offset and return | 1835 ; |
1029 | 1836 do_menu_reset_reboot: |
1030 do_logoffset_exit: | 1837 IFDEF _firmware_recovery |
1031 goto eeprom_log_offset_write ; store offset and return | 1838 MENU_BEGIN tResetMenu2, .4 |
1032 | 1839 MENU_CALL tAbort, do_return_menu_syssets_more_more |
1033 | 1840 MENU_CALL tRebootCurFirmware, do_reboot ; reboot current firmware |
1034 do_return_dispsets_menu: | 1841 MENU_DYNAMIC dyn_menu_fw_backup, do_firmware_backup ; backup current firmware |
1035 bcf imprint_color_schemes ; not in color schemes menu any more | 1842 MENU_DYNAMIC dyn_menu_fw_restore, do_firmware_restore ; restore backup firmware |
1036 call menu_processor_double_pop ; drop exit line and back to last line | |
1037 | |
1038 do_dispsets_menu: | |
1039 IF _language_2!=none | |
1040 MENU_BEGIN tDispSets, .7 | |
1041 MENU_OPTION tBright, oBrightness, 0 | |
1042 MENU_OPTION tLayout, oLayout, 0 | |
1043 MENU_OPTION tUnits, oUnits, 0 | |
1044 MENU_OPTION tLanguage, oLanguage, 0 | |
1045 MENU_OPTION tFlip, oFlipScreen, 0 | |
1046 MENU_CALL tColorScheme, do_color_scheme | |
1047 MENU_CALL tMore, do_dispsets_menu_more | |
1048 MENU_END | 1843 MENU_END |
1049 ELSE | 1844 ELSE |
1050 MENU_BEGIN tDispSets, .6 | 1845 MENU_BEGIN tResetMenu2, .2 |
1051 MENU_OPTION tBright, oBrightness, 0 | 1846 MENU_CALL tAbort, do_return_menu_syssets_more_more |
1052 MENU_OPTION tLayout, oLayout, 0 | 1847 MENU_CALL tReboot, do_reboot ; reboot (cold start) |
1053 MENU_OPTION tUnits, oUnits, 0 | |
1054 MENU_OPTION tFlip, oFlipScreen, 0 | |
1055 MENU_CALL tColorScheme, do_color_scheme | |
1056 MENU_CALL tMore, do_dispsets_menu_more | |
1057 MENU_END | 1848 MENU_END |
1058 ENDIF | 1849 ENDIF |
1059 | 1850 |
1060 | 1851 |
1061 do_dispsets_menu_more: | 1852 ;----------------------------------------------------------------------------- |
1062 IFDEF _helium | 1853 ; Call Function - Reboot |
1063 MENU_BEGIN tDispSets, .7 | 1854 ; |
1064 MENU_OPTION tVSIgraph, oVSIgraph, 0 | 1855 do_reboot: |
1065 MENU_OPTION tVSItext2, oVSItext, 0 | 1856 call ext_flash_enable_protection ; set write protection on external flash |
1066 MENU_OPTION tShowppO2, oShowppO2, 0 | 1857 call eeprom_deco_data_write ; update deco data in EEPROM |
1067 MENU_OPTION tDepthWarning, oDepthWarn, 0 | 1858 call eeprom_battery_gauge_write ; update battery gauge in EEPROM |
1068 MENU_OPTION t2ndDepth, o2ndDepthDisp, 0 | 1859 btfsc option_changed ; do the options need to be stored to EEPROM ? |
1069 MENU_OPTION tTissueGraphics, oTissueGraphics, 0 | 1860 call option_check_and_store_all ; YES - check and store all option values in EEPROM |
1070 MENU_CALL tBack, do_return_settings_deeper | 1861 reset ; cold-start the processor |
1071 MENU_END | 1862 |
1072 ELSE | 1863 |
1073 MENU_BEGIN tDispSets, .6 | 1864 IFDEF _firmware_recovery |
1074 MENU_OPTION tVSIgraph, oVSIgraph, 0 | 1865 |
1075 MENU_OPTION tVSItext2, oVSItext, 0 | 1866 ;----------------------------------------------------------------------------- |
1076 MENU_OPTION tShowppO2, oShowppO2, 0 | 1867 ; dynamic Title - Firmware Backup Option |
1077 MENU_OPTION tDepthWarning, oDepthWarn, 0 | 1868 ; |
1078 MENU_OPTION t2ndDepth, o2ndDepthDisp, 0 | 1869 dyn_menu_fw_backup: |
1079 MENU_CALL tBack, do_return_settings_deeper | 1870 EEPROM_CC_READ eeprom_fw_chksum_current+.5,WREG ; read stored FW ID |
1080 MENU_END | 1871 xorlw FW_ID ; XOR with current FW ID, equal? |
1872 bnz dyn_menu_fw_backup_unable ; NO - unable to make a backup | |
1873 STRCPY_TEXT tBackupFirmware ; YES - print "Backup current Firmware" | |
1874 return ; - done | |
1875 dyn_menu_fw_backup_unable: | |
1876 STRCPY "-------" ; print dashes | |
1877 return ; done | |
1878 | |
1879 | |
1880 ;----------------------------------------------------------------------------- | |
1881 ; dynamic Title - Firmware Restore Option | |
1882 ; | |
1883 dyn_menu_fw_restore: | |
1884 STRCPY_TEXT tRecoverFirmware ; print "Recover" | |
1885 PUTC " " ; add a space | |
1886 PUTC "V" ; add a V for Version | |
1887 movlw 0x3C ; address firmware version in backup storage at 0x3C000A | |
1888 movwf ext_flash_address+2 ; ... | |
1889 clrf ext_flash_address+1 ; ... | |
1890 movlw 0x0A ; ... | |
1891 movwf ext_flash_address+0 ; ... | |
1892 FLASH_RR_READ mpr,.3 ; read backup firmware version (lo: major, hi: minor, up: beta) | |
1893 infsnz lo,W ; major = 0xFF ? | |
1894 bra dyn_menu_fw_restore_inop ; YES - no version to show | |
1895 bsf leftbind ; NO - print left-aligned | |
1896 output_99 ; - print major (0-99) | |
1897 PUTC '.' ; - add a dot | |
1898 movff hi,lo ; - get minor | |
1899 output_99x ; - print minor (00-99) | |
1900 PUTC ' ' ; - add a space | |
1901 movff up,lo ; - get beta/release | |
1902 tstfsz lo ; - release version? | |
1903 bra dyn_menu_fw_restore_beta ; - NO - beta | |
1904 STRCAT "Rel." ; - YES - append "Rel(ease)" | |
1905 return ; - done | |
1906 dyn_menu_fw_restore_beta: | |
1907 PUTC 'B' ; append "B(eta)" | |
1908 bsf leftbind ; print left-aligned | |
1909 output_256 ; print beta version (0-255) | |
1910 return ; done | |
1911 dyn_menu_fw_restore_inop: | |
1912 STRCAT "--.--" ; no recovery firmware available | |
1913 return ; done | |
1914 | |
1915 | |
1916 ;----------------------------------------------------------------------------- | |
1917 ; Call Function - backup Firmware | |
1918 ; | |
1919 do_firmware_backup: | |
1920 EEPROM_CC_READ eeprom_fw_chksum_current+.5,WREG ; read stored FW ID | |
1921 xorlw FW_ID ; XOR with current FW ID, equal? | |
1922 bnz do_firmware_abort ; NO - abort | |
1923 call TFT_ClearScreen ; YES - clear the screen | |
1924 WIN_SMALL .0, .100 ; - set position | |
1925 STRCPY_TEXT_PRINT tBackingUp ; - print "backing up..." | |
1926 call copy_fw_active_to_backup ; - copy 0x3Exxxx -> 0x3Cxxxx | |
1927 EEPROM_RR_READ eeprom_fw_chksum_current,buffer,.6 ; - retrieve checksum of current firmware | |
1928 EEPROM_RR_WRITE buffer,eeprom_fw_chksum_recovry,.6 ; - store as checksum of recovery firmware | |
1929 bra do_return_menu_syssets_more_more ; - done | |
1930 | |
1931 | |
1932 ;----------------------------------------------------------------------------- | |
1933 ; Call Function - restore Firmware | |
1934 ; | |
1935 do_firmware_restore: | |
1936 EXT_FLASH_ADDR 0x3C000A ; address firmware version in backup storage at 0x3C000A | |
1937 FLASH_CW_READ_0x40 ; read backup firmware major version into WREG | |
1938 infsnz WREG ; major = 0xFF ? | |
1939 bra do_firmware_abort ; YES - abort, no firmware available for restoration | |
1940 call TFT_ClearScreen ; NO - clear the screen | |
1941 WIN_SMALL .0, .100 ; - set position | |
1942 STRCPY_TEXT_PRINT tRestoring ; - print "restoring..." | |
1943 call copy_fw_backup_to_active ; - copy 0x3Cxxxx -> 0x3Exxxx | |
1944 EEPROM_RR_READ eeprom_fw_chksum_recovry,buffer,.6 ; - retrieve checksum of recovery firmware | |
1945 EEPROM_RR_WRITE buffer,eeprom_fw_chksum_current,.6 ; - store as checksum of current firmware (to be) | |
1946 goto comm_firmware_update_exec ; - initiate firmware update | |
1947 | |
1948 | |
1949 ;----------------------------------------------------------------------------- | |
1950 ; Helper Function - back to same menu | |
1951 ; | |
1952 do_firmware_abort: | |
1953 call menu_processor_pop ; back to last line | |
1954 bra do_menu_reset_reboot ; back to same menu | |
1955 | |
1081 ENDIF | 1956 ENDIF |
1082 | 1957 |
1083 | 1958 |
1084 do_color_scheme: | 1959 ;----------------------------------------------------------------------------- |
1085 bsf imprint_color_schemes ; in color schemes menu | 1960 ; Settings Menu - 4th Layer - System Settings - Reset - Reset Deco |
1086 | 1961 ; |
1087 MENU_BEGIN tColorScheme, .2 | 1962 do_menu_reset_deco: |
1088 MENU_OPTION tColorSetDive, oColorSetDive, 0 | 1963 MENU_BEGIN tResetMenu2, .2 |
1089 MENU_CALL tBack, do_return_dispsets_menu | 1964 MENU_CALL tAbort, do_return_menu_syssets_more_more |
1090 MENU_END | 1965 MENU_CALL tResetDeco, do_reset_deco ; reset deco and return to main reset menu |
1091 | 1966 MENU_END |
1092 | 1967 |
1093 ;============================================================================= | 1968 |
1094 | 1969 ;----------------------------------------------------------------------------- |
1095 do_new_battery_menu: | 1970 ; Call Function - Reset Deco |
1971 ; | |
1972 do_reset_deco: | |
1973 call deco_clear_tissue ; set all tissues to absolute pressure * N2_ratio (C-code) | |
1974 call deco_calc_dive_interval_1min; update tissues by 1 minute to calculate current GF factor (C-code) | |
1975 call deco_calc_desaturation_time ; calculate desaturation and no-fly/no-altitude time (C-code) | |
1976 banksel common | |
1977 call eeprom_deco_data_write ; store updated deco data into EEPROM | |
1978 bra do_return_menu_syssets_more_more | |
1979 | |
1980 | |
1981 ;----------------------------------------------------------------------------- | |
1982 ; Settings Menu - 4th Layer - System Settings - Reset - Reset Settings | |
1983 ; | |
1984 do_menu_reset_settings: | |
1985 MENU_BEGIN tResetMenu2, .2 | |
1986 MENU_CALL tAbort, do_return_menu_syssets_more_more | |
1987 MENU_CALL tResetSettings, do_reset_settings ; reset all settings and go to surface mode | |
1988 MENU_END | |
1989 | |
1990 | |
1991 ;----------------------------------------------------------------------------- | |
1992 ; Call Function - Reset Settings | |
1993 ; | |
1994 do_reset_settings: | |
1995 call TFT_ClearScreen ; clear screen to show start of activity | |
1996 call option_reset_all ; reset all options to factory default | |
1997 call do_logoffset_reset ; reset log offset | |
1998 goto restart ; restart into surface mode | |
1999 | |
2000 | |
2001 ;----------------------------------------------------------------------------- | |
2002 ; Settings Menu - 4th Layer - System Settings - Reset - Reset Logbook | |
2003 ; | |
2004 do_menu_reset_logbook: | |
2005 MENU_BEGIN tResetMenu2, .2 | |
2006 MENU_CALL tAbort, do_return_menu_syssets_more_more | |
2007 MENU_CALL tResetLogbook, do_reset_logbook ; reset logbook and return to main reset menu | |
2008 MENU_END | |
2009 | |
2010 | |
2011 ;----------------------------------------------------------------------------- | |
2012 ; Call Function - Reset Logbook | |
2013 ; | |
2014 do_reset_logbook: | |
2015 call erase_complete_logbook ; erase complete logbook | |
2016 bra do_return_menu_syssets_more_more | |
2017 | |
2018 | |
2019 ;----------------------------------------------------------------------------- | |
2020 ; Settings Menu - 4th Layer - System Settings - Reset - Reset Battery | |
2021 ; | |
2022 do_menu_reset_battery: | |
1096 MENU_BEGIN tNewBattTitle, .2 | 2023 MENU_BEGIN tNewBattTitle, .2 |
1097 MENU_CALL tAbort, do_return_settings_more_deeper | 2024 MENU_CALL tAbort, do_return_menu_syssets_more_more |
1098 MENU_CALL tYes, do_new_battery_select_1 | 2025 MENU_CALL tYes, do_new_battery_select |
1099 MENU_END | 2026 MENU_END |
1100 | 2027 |
1101 | 2028 |
1102 global do_new_battery_select | 2029 ;----------------------------------------------------------------------------- |
1103 do_new_battery_select: | 2030 ; Entry Point for Battery Selection after Power-Outage |
2031 ; | |
2032 global new_battery_select | |
2033 new_battery_select: | |
1104 call TFT_boot ; initialize TFT (includes clear screen) | 2034 call TFT_boot ; initialize TFT (includes clear screen) |
1105 call TFT_Display_FadeIn ; dim up the display | 2035 call TFT_Display_FadeIn ; dim up the display |
1106 call menu_processor_reset ; reset menu stack | 2036 call menu_processor_reset ; reset menu stack |
1107 | 2037 ;bra do_new_battery_select ; enter menu system |
1108 do_new_battery_select_1: | 2038 |
1109 ; make sure to reset battery percentage | 2039 |
1110 movlw .100 | 2040 ;----------------------------------------------------------------------------- |
1111 movwf batt_percent ; set battery level to full | 2041 ; Settings Menu - 5th Layer - System Settings - Reset - Reset - Battery Selection |
1112 | 2042 ; |
1113 ; default (in cases of timeout or USB): use old battery | 2043 do_new_battery_select: |
2044 movlw .100 ; set battery level to full | |
2045 movwf batt_percent ; ... | |
2046 ; default (in cases of timeout or USB) to use old battery: | |
1114 call eeprom_battery_gauge_read ; retrieve stored battery gauge value from EEPROM | 2047 call eeprom_battery_gauge_read ; retrieve stored battery gauge value from EEPROM |
1115 | 2048 |
1116 IFDEF _screendump | 2049 IFDEF _screendump |
1117 bsf screen_dump_avail ; enable screen dump function to prevent exiting into COMM mode immediately | 2050 bsf screen_dump_avail ; enable screen dump function to prevent exiting into COMM mode immediately |
1118 ELSE | 2051 ELSE |
1129 ; 0x0A: optical input and ambient sensor ---> OSTC 3 (USB model) YES NO 1.5V 3.6V disposable 3.6V rechargeable | 2062 ; 0x0A: optical input and ambient sensor ---> OSTC 3 (USB model) YES NO 1.5V 3.6V disposable 3.6V rechargeable |
1130 ; 0x1A: BLE and optical input and ambient sensor ---> OSTC 3 (BLE model) YES NO 1.5V 3.6V disposable 3.6V rechargeable | 2063 ; 0x1A: BLE and optical input and ambient sensor ---> OSTC 3 (BLE model) YES NO 1.5V 3.6V disposable 3.6V rechargeable |
1131 ; 0x02: ambient sensor ---> OSTC Sport (USB model) YES NO 1.5V 3.6V disposable 3.6V rechargeable | 2064 ; 0x02: ambient sensor ---> OSTC Sport (USB model) YES NO 1.5V 3.6V disposable 3.6V rechargeable |
1132 ; 0x52: BLE and ambient sensor and low volt core ---> OSTC Sport (BLE model) YES NO 1.5V 3.6V disposable 3.6V rechargeable | 2065 ; 0x52: BLE and ambient sensor and low volt core ---> OSTC Sport (BLE model) YES NO 1.5V 3.6V disposable 3.6V rechargeable |
1133 | 2066 |
1134 | |
1135 movlw 0x11 ; OSTC 2 (old model) | 2067 movlw 0x11 ; OSTC 2 (old model) |
1136 cpfseq HW_descriptor | 2068 cpfseq HW_descriptor |
1137 bra $+4 | 2069 bra $+4 |
1138 bra use_18650_battery | 2070 bra use_18650_battery |
1139 | 2071 |
1143 bra use_18650_battery | 2075 bra use_18650_battery |
1144 | 2076 |
1145 movlw 0x33 ; OSTC 2 TR | 2077 movlw 0x33 ; OSTC 2 TR |
1146 cpfseq HW_descriptor | 2078 cpfseq HW_descriptor |
1147 bra $+4 | 2079 bra $+4 |
1148 bra use_16650_battery | 2080 bra do_use_16650_battery |
1149 | 2081 |
1150 ; movlw 0xXX ; OSTC 2 (new model) TODO: define signature | 2082 ; movlw 0xXX ; OSTC 2 (new model) TODO: define signature |
1151 ; cpfseq HW_descriptor | 2083 ; cpfseq HW_descriptor |
1152 ; bra $+4 | 2084 ; bra $+4 |
1153 ; bra use_16650_battery | 2085 ; bra do_use_16650_battery |
1154 | 2086 |
1155 movlw 0x13 ; OSTC Plus TODO: and OSTC 2 new model as of now | 2087 movlw 0x13 ; OSTC Plus TODO: and OSTC 2 new model as of now |
1156 cpfseq HW_descriptor | 2088 cpfseq HW_descriptor |
1157 bra $+4 | 2089 bra $+4 |
1158 bra menu_new_battery_AA_charger | 2090 bra do_menu_new_battery_AA_charger |
1159 | 2091 |
1160 ; movlw 0x0A ; OSTC 3 (USB model) | 2092 ; movlw 0x0A ; OSTC 3 (USB model) |
1161 ; cpfseq HW_descriptor | 2093 ; cpfseq HW_descriptor |
1162 ; bra $+4 | 2094 ; bra $+4 |
1163 ; bra menu_new_battery_AA_no_charger | 2095 ; bra do_menu_new_battery_AA_no_charge |
1164 | 2096 |
1165 ; movlw 0x1A ; OSTC 3 (BLE model) | 2097 ; movlw 0x1A ; OSTC 3 (BLE model) |
1166 ; cpfseq HW_descriptor | 2098 ; cpfseq HW_descriptor |
1167 ; bra $+4 | 2099 ; bra $+4 |
1168 ; bra menu_new_battery_AA_no_charger | 2100 ; bra do_menu_new_battery_AA_no_charge |
1169 | 2101 |
1170 ; movlw 0x02 ; OSTC Sport (USB model) | 2102 ; movlw 0x02 ; OSTC Sport (USB model) |
1171 ; cpfseq HW_descriptor | 2103 ; cpfseq HW_descriptor |
1172 ; bra $+4 | 2104 ; bra $+4 |
1173 ; bra menu_new_battery_AA_no_charger | 2105 ; bra do_menu_new_battery_AA_no_charge |
1174 | 2106 |
1175 ; movlw 0x52 ; OSTC Sport (BLE model) | 2107 ; movlw 0x52 ; OSTC Sport (BLE model) |
1176 ; cpfseq HW_descriptor | 2108 ; cpfseq HW_descriptor |
1177 ; bra $+4 | 2109 ; bra $+4 |
1178 ; bra menu_new_battery_AA_no_charger | 2110 ; bra do_menu_new_battery_AA_no_charge |
1179 | 2111 |
1180 bra menu_new_battery_AA_no_charger ; any other model | 2112 bra do_menu_new_battery_AA_no_charge ; any other model |
1181 | 2113 |
1182 | 2114 |
2115 ;----------------------------------------------------------------------------- | |
2116 ; return from confirm 3.6 V rechargeable | |
2117 ; | |
1183 do_return_menu_new_bat_AA_chrg: | 2118 do_return_menu_new_bat_AA_chrg: |
1184 call menu_processor_double_pop ; drop exit line and back to last line | 2119 call menu_processor_double_pop ; drop exit line and back to last line |
1185 | 2120 ;bra do_menu_new_battery_AA_charger ; continue |
1186 ; OSTC Plus (charging function) TODO: and OSTC 2 new model as of now | 2121 |
1187 menu_new_battery_AA_charger: | 2122 ;----------------------------------------------------------------------------- |
2123 ; Battery Selection for OSTC Plus (charging function) TODO: and OSTC 2 new model as of now | |
2124 ; | |
2125 do_menu_new_battery_AA_charger: | |
1188 MENU_BEGIN tNewBattTitle, .4 | 2126 MENU_BEGIN tNewBattTitle, .4 |
1189 MENU_CALL tNewBattOld, use_old_batteries | 2127 MENU_CALL tNewBattOld, do_use_old_battery ; load data of old battery |
1190 MENU_CALL tNewBattNew15, use_new_15V_batteries ; not rechargeable | 2128 MENU_CALL tNewBattNew15, do_use_15V_disposable ; not rechargeable |
1191 ; MENU_CALL tNewBattNew36, use_36V_disposable ; not rechargeable -> not allowed any more !!! | 2129 ; MENU_CALL tNewBattNew36, do_use_36V_disposable ; not rechargeable -> not allowed any more !!! |
1192 MENU_CALL tNewBattAccu, pre_36V_rechargeable ; rechargeable -> goto safety question | 2130 MENU_CALL tNewBattAccu, do_menu_new_battery_36V_charge ; rechargeable -> goto safety question |
1193 MENU_CALL tNew16650, use_16650_battery ; OSTC 2 new model TODO: remove when OSTC 2 new model can be separated from Plus | 2131 MENU_CALL tNew16650, do_use_16650_battery ; OSTC 2 new model TODO: remove when OSTC 2 new model can be separated from Plus |
1194 MENU_END | 2132 MENU_END |
1195 | 2133 |
1196 pre_36V_rechargeable: | 2134 |
2135 ;----------------------------------------------------------------------------- | |
2136 ; Safety Question for 3.6 V rechargeable Battery | |
2137 ; | |
2138 do_menu_new_battery_36V_charge: | |
1197 MENU_BEGIN tNewBattTitle, .5 | 2139 MENU_BEGIN tNewBattTitle, .5 |
1198 MENU_CALL tConfirmChargeable1, 0 ; safety question, line 1 | 2140 MENU_CALL tConfirmChargeable1, 0 ; safety question, line 1 |
1199 MENU_CALL tConfirmChargeable2, 0 ; safety question, line 2 | 2141 MENU_CALL tConfirmChargeable2, 0 ; safety question, line 2 |
1200 MENU_CALL tConfirmChargeable3, 0 ; safety question, line 3 | 2142 MENU_CALL tConfirmChargeable3, 0 ; safety question, line 3 |
1201 MENU_CALL tNo, do_return_menu_new_bat_AA_chrg ; NO - go back | 2143 MENU_CALL tNo, do_return_menu_new_bat_AA_chrg ; NO - go back |
1202 MENU_CALL tYes, use_37V_rechargeable ; YES - confirmed rechargeable | 2144 MENU_CALL tYes, do_use_36V_chargeable ; YES - confirmed rechargeable |
1203 MENU_END | 2145 MENU_END |
1204 | 2146 |
1205 ; OSTC 3 and Sport (no charging function) | 2147 |
1206 menu_new_battery_AA_no_charger: | 2148 ;----------------------------------------------------------------------------- |
2149 ; Battery Selection for OSTC 3 and Sport (no charging function) | |
2150 ; | |
2151 do_menu_new_battery_AA_no_charge: | |
1207 MENU_BEGIN tNewBattTitle, .4 | 2152 MENU_BEGIN tNewBattTitle, .4 |
1208 MENU_CALL tNewBattOld, use_old_batteries | 2153 MENU_CALL tNewBattOld, do_use_old_battery ; load data of old battery |
1209 MENU_CALL tNewBattNew15, use_new_15V_batteries ; not rechargeable | 2154 MENU_CALL tNewBattNew15, do_use_15V_disposable ; not rechargeable |
1210 MENU_CALL tNewBattNew36, use_36V_disposable ; not rechargeable | 2155 MENU_CALL tNewBattNew36, do_use_36V_disposable ; not rechargeable |
1211 MENU_CALL tNewBattAccu, use_37V_rechargeable ; rechargeable | 2156 MENU_CALL tNewBattAccu, do_use_36V_chargeable ; rechargeable |
1212 MENU_END | 2157 MENU_END |
1213 | 2158 |
1214 | 2159 |
2160 ;----------------------------------------------------------------------------- | |
2161 ; Call Function - keep old Battery | |
2162 ; | |
2163 do_use_old_battery: | |
2164 rcall get_battery_data ; load data of old battery | |
2165 goto surfloop ; proceed to surface mode | |
2166 | |
2167 | |
2168 ;----------------------------------------------------------------------------- | |
2169 ; Call Function - new 1.5 V disposable | |
2170 ; | |
2171 do_use_15V_disposable: | |
2172 rcall setup_new_15v | |
2173 bra use_batt_exit | |
2174 | |
2175 | |
2176 ;----------------------------------------------------------------------------- | |
2177 ; Call Function - new 3.6 V disposable | |
2178 ; | |
2179 do_use_36V_disposable: | |
2180 rcall setup_new_saft | |
2181 bra use_batt_exit | |
2182 | |
2183 | |
2184 ;----------------------------------------------------------------------------- | |
2185 ; Call Function - new 3.6 V rechargeable | |
2186 ; | |
2187 do_use_36V_chargeable: | |
2188 rcall setup_new_panasonic | |
2189 call reset_battery_gauge | |
2190 bra use_batt_exit_1 | |
2191 | |
2192 | |
2193 ;----------------------------------------------------------------------------- | |
2194 ; Call Function - build-in 16650 | |
2195 ; | |
2196 do_use_16650_battery: | |
2197 rcall setup_new_16650 | |
2198 bra use_batt_exit | |
2199 | |
2200 | |
2201 ;----------------------------------------------------------------------------- | |
2202 ; Call Function - build-in 18650 | |
2203 ; | |
2204 use_18650_battery: | |
2205 rcall setup_new_18650 | |
2206 ;bra use_batt_exit | |
2207 | |
2208 | |
2209 ;----------------------------------------------------------------------------- | |
2210 ; Helper Function - finish Battery Selection | |
2211 ; | |
2212 use_batt_exit: | |
2213 call reset_battery_gauge_and_lt2942 ; reset battery hard- and software gauge | |
2214 | |
2215 use_batt_exit_1: | |
2216 IFNDEF _screendump | |
2217 bcf comm_mode_disabled ; re-enable COMM mode again | |
2218 ENDIF | |
2219 goto surfloop ; exit to surface mode | |
2220 | |
2221 | |
2222 ;----------------------------------------------------------------------------- | |
2223 ; Migrate Battery Selection from Firmwares prior 2.09 | |
2224 ; | |
1215 global use_old_prior_209 | 2225 global use_old_prior_209 |
1216 use_old_prior_209: | 2226 use_old_prior_209: |
1217 EEPROM_CC_READ eeprom_battery_type,WREG ; read battery type from EEPROM | 2227 EEPROM_CC_READ eeprom_battery_type,WREG ; read battery type from EEPROM |
1218 incfsz WREG,W ; battery type = 0xFF (undefined) ? | 2228 incfsz WREG,W ; battery type = 0xFF (undefined) ? |
1219 return ; NO - done | 2229 return ; NO - done |
1223 movlw .1 ; - NO - assume a Saft (disposable 3.6 V) | 2233 movlw .1 ; - NO - assume a Saft (disposable 3.6 V) |
1224 EEPROM_CC_WRITE WREG,eeprom_battery_type; - write battery type to EEPROM | 2234 EEPROM_CC_WRITE WREG,eeprom_battery_type; - write battery type to EEPROM |
1225 return ; - done | 2235 return ; - done |
1226 | 2236 |
1227 | 2237 |
1228 use_old_batteries: | 2238 ;----------------------------------------------------------------------------- |
1229 rcall get_battery_data ; load data of old battery | 2239 ; Retrieve Battery Selection from EEPROM |
1230 goto surfloop ; proceed to surface loop | 2240 ; |
1231 | |
1232 | |
1233 global get_battery_data | 2241 global get_battery_data |
1234 get_battery_data: | 2242 get_battery_data: |
1235 call eeprom_battery_gauge_read ; retrieve stored battery gauge value from EEPROM | 2243 call eeprom_battery_gauge_read ; retrieve stored battery gauge value from EEPROM |
1236 movff battery_type,lo ; copy retrieved battery type to lo | 2244 movff battery_type,lo ; copy retrieved battery type to lo |
1237 rcall setup_new_saft ; default battery configuration | 2245 rcall setup_new_saft ; default battery configuration |
1251 bcf comm_mode_disabled ; re-enable COMM mode again | 2259 bcf comm_mode_disabled ; re-enable COMM mode again |
1252 ENDIF | 2260 ENDIF |
1253 return ; done | 2261 return ; done |
1254 | 2262 |
1255 | 2263 |
2264 ;----------------------------------------------------------------------------- | |
2265 ; Helper Functions - configure Battery Types | |
2266 | |
1256 ; disposable 1.5 Volt Alkaline | 2267 ; disposable 1.5 Volt Alkaline |
1257 setup_new_15v: | 2268 setup_new_15v: |
1258 bsf charge_disable ; set charging-inhibit signal | 2269 bsf charge_disable ; set charging-inhibit signal |
1259 bcf charge_enable ; activate charging-inhibit signal | 2270 bcf charge_enable ; activate charging-inhibit signal |
1260 movlw .100 | 2271 movlw .100 |
1305 MOVLI offset_ur16650, battery_offset | 2316 MOVLI offset_ur16650, battery_offset |
1306 movlw .4 | 2317 movlw .4 |
1307 movwf battery_type | 2318 movwf battery_type |
1308 return | 2319 return |
1309 | 2320 |
1310 | |
1311 use_new_15V_batteries: | |
1312 rcall setup_new_15v | |
1313 bra use_batt_exit | |
1314 | |
1315 use_36V_disposable: | |
1316 rcall setup_new_saft | |
1317 bra use_batt_exit | |
1318 | |
1319 use_37V_rechargeable: | |
1320 rcall setup_new_panasonic | |
1321 call reset_battery_gauge | |
1322 bra use_batt_exit_1 | |
1323 | |
1324 use_16650_battery: | |
1325 rcall setup_new_16650 | |
1326 bra use_batt_exit | |
1327 | |
1328 use_18650_battery: | |
1329 rcall setup_new_18650 | |
1330 ;bra use_batt_exit | |
1331 | |
1332 use_batt_exit: | |
1333 call reset_battery_gauge_and_lt2942 ; reset battery pointer 0x07-0x0C and battery gauge | |
1334 use_batt_exit_1: | |
1335 IFNDEF _screendump | |
1336 bcf comm_mode_disabled ; re-enable COMM mode again | |
1337 ENDIF | |
1338 goto surfloop ; jump to surface loop | |
1339 | |
1340 ;----------------------------------------------------------------------------- | 2321 ;----------------------------------------------------------------------------- |
1341 | 2322 |
1342 END | 2323 END |