Mercurial > public > hwos_code
annotate src/divemenu_tree.asm @ 66:00636132cca6
BUGFIX: Maintain last selected customview in surface mode
author | heinrichsweikamp |
---|---|
date | Sat, 11 Jan 2014 18:03:04 +0100 |
parents | 2825f1d2262f |
children | 53a99a2dc6a1 |
rev | line source |
---|---|
0 | 1 ;============================================================================= |
2 ; | |
3 ; File divemenu_tree.asm | |
4 ; | |
5 ; OSTC3 dive mode menu | |
6 ; | |
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. | |
8 ;============================================================================= | |
9 ; HISTORY | |
10 ; 2013-02-02 : [mH] Made out of menu_tree.asm | |
11 | |
12 #include "ostc3.inc" ; Mandatory header | |
13 #include "menu_processor.inc" | |
14 #include "shared_definitions.h" ; Mailbox from/to p2_deco.c | |
15 #include "tft_outputs.inc" | |
16 #include "customview.inc" | |
17 #include "strings.inc" | |
18 | |
19 divegui CODE | |
20 ;============================================================================= | |
21 ; Main Menu | |
22 global do_main_divemenu | |
23 do_main_divemenu: | |
24 call menu_processor_reset ; restart from first icon. | |
25 | |
26 do_continue_main_divemenu: | |
27 call menu_processor_pop ; drop exit line. | |
28 call menu_processor_pop ; drop exit line. | |
29 | |
30 btfsc FLAG_ccr_mode | |
31 bra main_divemenu_ccr ; CCR Menu | |
32 | |
33 bcf ccr_diluent_setup ; For OC gases | |
34 bcf is_bailout_menu | |
35 movlw .1 | |
36 movwf menupos ; Set to first option in divemode menu | |
37 MENU_BEGIN tMainMenu, .4 | |
38 MENU_CALL tDivemenu_Gaslist, do_divemode_gaslist | |
39 MENU_CALL tDivemenu_ResetAvr, do_divemode_resetavr | |
40 MENU_CALL tDivemenu_ToggleGF, do_divemode_togglegf | |
41 MENU_CALL tExit, do_exit_divemode_menu | |
42 MENU_END | |
43 | |
44 main_divemenu_ccr: | |
45 bsf ccr_diluent_setup ; For diluents | |
46 movlw .1 | |
47 movwf menupos ; Set to first option in divemode menu | |
48 MENU_BEGIN tMainMenu, .6 | |
49 MENU_CALL tDiveBailout, do_divemode_gaslist_bail | |
50 MENU_CALL tDivemenu_Setpoint, do_divemode_splist | |
51 MENU_CALL tDivemenu_Gaslist, do_divemode_gaslist | |
52 MENU_CALL tDivemenu_ResetAvr, do_divemode_resetavr | |
53 MENU_CALL tDivemenu_ToggleGF, do_divemode_togglegf | |
54 MENU_CALL tExit, do_exit_divemode_menu | |
55 MENU_END | |
56 | |
57 | |
58 do_togglegf: | |
59 TSTOSS opt_enable_aGF ; =1: aGF can be selected underwater | |
60 bra do_exit_divemode_menu ; exit | |
61 bsf toggle_gf ; Set flag... | |
62 bra do_exit_divemode_menu ; ...and exit | |
63 | |
64 do_switch_to_sensor: | |
65 movlw .1 ; Switch to Sensor | |
66 movff WREG,opt_ccr_mode ; =0: Fixed SP, =1: Sensor | |
67 bra do_switch_sp2 | |
68 | |
69 do_divemode_resetavr: | |
70 bsf reset_average_depth ; Set Flag | |
71 bra do_exit_divemode_menu ; And exit | |
72 | |
53
2825f1d2262f
NEW: Dynamic Gaslist in OC mode (Divemode, Customview 7)
heinrichsweikamp
parents:
0
diff
changeset
|
73 |
2825f1d2262f
NEW: Dynamic Gaslist in OC mode (Divemode, Customview 7)
heinrichsweikamp
parents:
0
diff
changeset
|
74 do_switch_gas6: |
2825f1d2262f
NEW: Dynamic Gaslist in OC mode (Divemode, Customview 7)
heinrichsweikamp
parents:
0
diff
changeset
|
75 movlw .6 |
2825f1d2262f
NEW: Dynamic Gaslist in OC mode (Divemode, Customview 7)
heinrichsweikamp
parents:
0
diff
changeset
|
76 movwf active_gas ; Gas6 selected |
2825f1d2262f
NEW: Dynamic Gaslist in OC mode (Divemode, Customview 7)
heinrichsweikamp
parents:
0
diff
changeset
|
77 bra do_switch_gasX |
0 | 78 extern diveloop_loop4 |
79 extern timeout_divemode_menu2 | |
80 do_switch_gas: | |
81 bsf divemode_gaschange ; Set flag | |
82 do_switch_gasX: | |
83 btfsc is_bailout_menu ; Bailout confirmed? | |
84 bsf is_bailout ; =1: Bailout | |
85 do_exit_divemode_menu: | |
86 call timeout_divemode_menu2 | |
87 clrf STKPTR | |
88 goto diveloop_loop4 | |
89 | |
90 do_switch_sp: | |
91 decf menupos,W ; 1-5 -> 0-4 | |
92 lfsr FSR1,char_I_setpoint_cbar | |
93 movff PLUSW1,char_I_const_ppO2; Setup fixed Setpoint | |
94 bsf setpoint_changed ; Set flag (For profile) | |
95 | |
96 clrf WREG ; Switch to fixed SP | |
97 movff WREG,opt_ccr_mode ; =0: Fixed SP, =1: Sensor | |
98 clrf WREG | |
99 movff WREG,char_O_deco_status ; Restart decoplan computation | |
100 | |
101 do_switch_sp2: | |
102 ; Clear some flags in case we were in bailout before... | |
103 bcf is_bailout ; =1: Bailout | |
104 bcf is_bailout_menu ; | |
105 bcf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode | |
106 bcf blinking_better_gas ; Clear blinking flag | |
107 bra do_exit_divemode_menu ; And exit | |
108 | |
109 do_divemode_gaslist_bail: | |
110 bcf ccr_diluent_setup ; For OC gases | |
111 bsf is_bailout_menu ; =1: Bailout | |
112 do_divemode_gaslist: | |
113 btfsc is_bailout ; In Bailout case? | |
114 bcf ccr_diluent_setup ; Yes, use OC gases | |
115 bsf short_gas_decriptions | |
116 movlw .1 | |
117 movwf menupos ; Set to first option in divemode menu | |
118 MENU_BEGIN tGaslist, .6 | |
119 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
120 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
121 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
122 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
123 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas | |
124 MENU_CALL tMore, do_divemode_gaslist_more0 | |
125 MENU_END | |
126 | |
127 do_divemode_gaslist_more0: | |
128 movlw .1 | |
129 movwf menupos ; Set to first option in divemode menu | |
130 do_divemode_gaslist_more: | |
131 MENU_BEGIN tGaslist, .6 | |
132 MENU_DYNAMIC gaslist_strcat_gasx, do_dive_nothing | |
133 MENU_CALL tO2Plus, do_dive_pO2 | |
134 MENU_CALL tO2Minus, do_dive_mO2 | |
135 MENU_CALL tHePlus, do_dive_pHe | |
136 MENU_CALL tHeMinus, do_dive_mHe | |
53
2825f1d2262f
NEW: Dynamic Gaslist in OC mode (Divemode, Customview 7)
heinrichsweikamp
parents:
0
diff
changeset
|
137 MENU_CALL tEnter, do_switch_gas6 |
0 | 138 MENU_END |
139 | |
140 do_dive_nothing: | |
141 bra do_divemode_gaslist_more | |
142 | |
143 do_dive_pO2: | |
144 banksel char_I_O2_ratio | |
145 incf char_I_O2_ratio,F ; O2++ | |
146 movf char_I_He_ratio,W | |
147 addwf char_I_O2_ratio,W | |
148 movwf temp_bankx400 | |
149 movlw .101 | |
150 cpfslt temp_bankx400 ; O2+He<101? | |
151 decf char_I_O2_ratio,F ; O2-- (Unchanged) | |
152 ; bra do_divemode_gaslist_more_common | |
153 do_divemode_gaslist_more_common: | |
154 banksel common | |
155 bsf gas6_changed ; Set flag | |
156 bra do_divemode_gaslist_more | |
157 | |
158 do_dive_mO2: | |
159 banksel char_I_O2_ratio | |
160 decf char_I_O2_ratio,F ; O2-- | |
161 movlw gaslist_min_o2 | |
162 cpfslt char_I_O2_ratio | |
163 bra do_divemode_gaslist_more_common | |
164 movlw gaslist_min_o2 | |
165 movwf char_I_O2_ratio | |
166 bra do_divemode_gaslist_more_common | |
167 | |
168 | |
169 do_dive_pHe: | |
170 banksel char_I_O2_ratio | |
171 incf char_I_He_ratio,F ; He++ | |
172 movf char_I_He_ratio,W | |
173 addwf char_I_O2_ratio,W | |
174 movwf lo | |
175 movlw .101 | |
176 cpfslt lo ; O2+He<101? | |
177 decf char_I_He_ratio,F ; Yes, He-- (Unchanged) | |
178 banksel common | |
179 bra do_divemode_gaslist_more_common | |
180 | |
181 do_dive_mHe: | |
182 banksel char_I_O2_ratio | |
183 decf char_I_He_ratio,F ; He-- | |
184 bnn do_divemode_gaslist_more_common | |
185 clrf char_I_He_ratio | |
186 bra do_divemode_gaslist_more_common | |
187 | |
188 do_divemode_splist: | |
189 bsf short_gas_decriptions | |
190 movlw .1 | |
191 movwf menupos ; Set to first option in divemode menu | |
192 MENU_BEGIN tGaslist, .6 | |
193 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
194 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
195 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
196 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
197 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp | |
198 MENU_CALL tCCRSensor, do_divemode_sensor | |
199 MENU_END | |
200 | |
201 do_divemode_sensor: | |
202 ; Set customview to 1 (HUD Data) | |
203 clrf menupos3 ; customview to come-1 | |
204 bsf toggle_customview ; Set flag, the customview will be toggled very soon now... | |
205 movlw .1 | |
206 movwf menupos ; Set to first option in divemode menu | |
207 MENU_BEGIN tGaslist, .2 | |
208 MENU_CALL tDivemenu_UseSensor, do_switch_to_sensor | |
209 MENU_CALL tExit, do_continue_main_divemenu | |
210 MENU_END | |
211 | |
212 do_divemode_togglegf: | |
213 ; Set customview to 5 (GF informations) | |
214 movlw .4 | |
215 movwf menupos3 ; Customview to come-1 | |
216 bsf toggle_customview ; Set flag, the customview will be toggled very soon now... | |
217 movlw .1 | |
218 movwf menupos ; Set to first option in divemode menu | |
219 MENU_BEGIN tDivemenu_ToggleGF, .2 | |
220 MENU_CALL tDivemenu_ToggleGF, do_togglegf | |
221 MENU_CALL tExit, do_continue_main_divemenu | |
222 MENU_END | |
223 | |
224 END |