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
|
|
73 extern diveloop_loop4
|
|
74 extern timeout_divemode_menu2
|
|
75 do_switch_gas:
|
|
76 bsf divemode_gaschange ; Set flag
|
|
77 do_switch_gasX:
|
|
78 btfsc is_bailout_menu ; Bailout confirmed?
|
|
79 bsf is_bailout ; =1: Bailout
|
|
80 do_exit_divemode_menu:
|
|
81 call timeout_divemode_menu2
|
|
82 clrf STKPTR
|
|
83 goto diveloop_loop4
|
|
84
|
|
85 do_switch_sp:
|
|
86 decf menupos,W ; 1-5 -> 0-4
|
|
87 lfsr FSR1,char_I_setpoint_cbar
|
|
88 movff PLUSW1,char_I_const_ppO2; Setup fixed Setpoint
|
|
89 bsf setpoint_changed ; Set flag (For profile)
|
|
90
|
|
91 clrf WREG ; Switch to fixed SP
|
|
92 movff WREG,opt_ccr_mode ; =0: Fixed SP, =1: Sensor
|
|
93 clrf WREG
|
|
94 movff WREG,char_O_deco_status ; Restart decoplan computation
|
|
95
|
|
96 do_switch_sp2:
|
|
97 ; Clear some flags in case we were in bailout before...
|
|
98 bcf is_bailout ; =1: Bailout
|
|
99 bcf is_bailout_menu ;
|
|
100 bcf better_gas_available ;=1: A better gas is available and a gas change is advised in divemode
|
|
101 bcf blinking_better_gas ; Clear blinking flag
|
|
102 bra do_exit_divemode_menu ; And exit
|
|
103
|
|
104 do_divemode_gaslist_bail:
|
|
105 bcf ccr_diluent_setup ; For OC gases
|
|
106 bsf is_bailout_menu ; =1: Bailout
|
|
107 do_divemode_gaslist:
|
|
108 btfsc is_bailout ; In Bailout case?
|
|
109 bcf ccr_diluent_setup ; Yes, use OC gases
|
|
110 bsf short_gas_decriptions
|
|
111 movlw .1
|
|
112 movwf menupos ; Set to first option in divemode menu
|
|
113 MENU_BEGIN tGaslist, .6
|
|
114 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas
|
|
115 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas
|
|
116 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas
|
|
117 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas
|
|
118 MENU_DYNAMIC gaslist_strcat_gas_mod, do_switch_gas
|
|
119 MENU_CALL tMore, do_divemode_gaslist_more0
|
|
120 MENU_END
|
|
121
|
|
122 do_divemode_gaslist_more0:
|
|
123 movlw .1
|
|
124 movwf menupos ; Set to first option in divemode menu
|
|
125 do_divemode_gaslist_more:
|
|
126 MENU_BEGIN tGaslist, .6
|
|
127 MENU_DYNAMIC gaslist_strcat_gasx, do_dive_nothing
|
|
128 MENU_CALL tO2Plus, do_dive_pO2
|
|
129 MENU_CALL tO2Minus, do_dive_mO2
|
|
130 MENU_CALL tHePlus, do_dive_pHe
|
|
131 MENU_CALL tHeMinus, do_dive_mHe
|
|
132 MENU_CALL tEnter, do_switch_gasX
|
|
133 MENU_END
|
|
134
|
|
135 do_dive_nothing:
|
|
136 bra do_divemode_gaslist_more
|
|
137
|
|
138 do_dive_pO2:
|
|
139 banksel char_I_O2_ratio
|
|
140 incf char_I_O2_ratio,F ; O2++
|
|
141 movf char_I_He_ratio,W
|
|
142 addwf char_I_O2_ratio,W
|
|
143 movwf temp_bankx400
|
|
144 movlw .101
|
|
145 cpfslt temp_bankx400 ; O2+He<101?
|
|
146 decf char_I_O2_ratio,F ; O2-- (Unchanged)
|
|
147 ; bra do_divemode_gaslist_more_common
|
|
148 do_divemode_gaslist_more_common:
|
|
149 banksel common
|
|
150 bsf gas6_changed ; Set flag
|
|
151 bra do_divemode_gaslist_more
|
|
152
|
|
153 do_dive_mO2:
|
|
154 banksel char_I_O2_ratio
|
|
155 decf char_I_O2_ratio,F ; O2--
|
|
156 movlw gaslist_min_o2
|
|
157 cpfslt char_I_O2_ratio
|
|
158 bra do_divemode_gaslist_more_common
|
|
159 movlw gaslist_min_o2
|
|
160 movwf char_I_O2_ratio
|
|
161 bra do_divemode_gaslist_more_common
|
|
162
|
|
163
|
|
164 do_dive_pHe:
|
|
165 banksel char_I_O2_ratio
|
|
166 incf char_I_He_ratio,F ; He++
|
|
167 movf char_I_He_ratio,W
|
|
168 addwf char_I_O2_ratio,W
|
|
169 movwf lo
|
|
170 movlw .101
|
|
171 cpfslt lo ; O2+He<101?
|
|
172 decf char_I_He_ratio,F ; Yes, He-- (Unchanged)
|
|
173 banksel common
|
|
174 bra do_divemode_gaslist_more_common
|
|
175
|
|
176 do_dive_mHe:
|
|
177 banksel char_I_O2_ratio
|
|
178 decf char_I_He_ratio,F ; He--
|
|
179 bnn do_divemode_gaslist_more_common
|
|
180 clrf char_I_He_ratio
|
|
181 bra do_divemode_gaslist_more_common
|
|
182
|
|
183 do_divemode_splist:
|
|
184 bsf short_gas_decriptions
|
|
185 movlw .1
|
|
186 movwf menupos ; Set to first option in divemode menu
|
|
187 MENU_BEGIN tGaslist, .6
|
|
188 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp
|
|
189 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp
|
|
190 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp
|
|
191 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp
|
|
192 MENU_DYNAMIC gaslist_strcat_setpoint, do_switch_sp
|
|
193 MENU_CALL tCCRSensor, do_divemode_sensor
|
|
194 MENU_END
|
|
195
|
|
196 do_divemode_sensor:
|
|
197 ; Set customview to 1 (HUD Data)
|
|
198 clrf menupos3 ; customview to come-1
|
|
199 bsf toggle_customview ; Set flag, the customview will be toggled very soon now...
|
|
200 movlw .1
|
|
201 movwf menupos ; Set to first option in divemode menu
|
|
202 MENU_BEGIN tGaslist, .2
|
|
203 MENU_CALL tDivemenu_UseSensor, do_switch_to_sensor
|
|
204 MENU_CALL tExit, do_continue_main_divemenu
|
|
205 MENU_END
|
|
206
|
|
207 do_divemode_togglegf:
|
|
208 ; Set customview to 5 (GF informations)
|
|
209 movlw .4
|
|
210 movwf menupos3 ; Customview to come-1
|
|
211 bsf toggle_customview ; Set flag, the customview will be toggled very soon now...
|
|
212 movlw .1
|
|
213 movwf menupos ; Set to first option in divemode menu
|
|
214 MENU_BEGIN tDivemenu_ToggleGF, .2
|
|
215 MENU_CALL tDivemenu_ToggleGF, do_togglegf
|
|
216 MENU_CALL tExit, do_continue_main_divemenu
|
|
217 MENU_END
|
|
218
|
|
219 END |