comparison src/customview.asm @ 604:ca4556fb60b9

bump to 2.99beta, work on 3.00 stable
author heinrichsweikamp
date Thu, 22 Nov 2018 19:47:26 +0100
parents 6636cbe64c6d
children d866684249bd
comparison
equal deleted inserted replaced
603:00b24fb4324d 604:ca4556fb60b9
1 ;============================================================================= 1 ;=============================================================================
2 ; 2 ;
3 ; File customview.asm REFACTORED VERSION V2.98 3 ; File customview.asm REFACTORED VERSION V2.99e
4 ; 4 ;
5 ; Customview in Surfacemode and Divemode 5 ; Custom Views in Surface and Dive Mode
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-08-10 : [mH] moving from OSTC code 10 ; 2011-08-10 : [mH] moving from OSTC code
11 11
12 ;============================================================================= 12 ;=============================================================================
13 13
14 #include "hwos.inc" ; Mandatory header 14 #include "hwos.inc" ; mandatory header
15 #include "tft_outputs.inc" 15 #include "tft_outputs.inc"
16 #include "strings.inc" 16 #include "strings.inc"
17 #include "tft.inc" 17 #include "tft.inc"
18 #include "isr.inc" 18 #include "isr.inc"
19 #include "wait.inc" 19 #include "wait.inc"
22 #include "divemode.inc" 22 #include "divemode.inc"
23 #include "i2c.inc" 23 #include "i2c.inc"
24 #include "start.inc" 24 #include "start.inc"
25 25
26 26
27 extern gaslist_strcat_gas_mod 27 extern gaslist_strcat_gas_cd
28 extern char_I_deco_model 28 extern char_I_deco_model
29 extern TFT_sensor_mV
30 extern TFT_surface_compass_mask 29 extern TFT_surface_compass_mask
31 extern TFT_dive_compass_mask 30 extern TFT_dive_compass_mask
32 31
33 32 custview CODE
34 gui CODE
35 33
36 ;============================================================================= 34 ;=============================================================================
37 ; Do every-second tasks for the custom view area (Dive mode) 35 ; Jump table for the every-second tasks for the custom view area (dive mode)
36 ;
37 ; Attention: the ordering must be in line with the init jump table and the
38 ; index numbers defined in hwos.inc!
38 39
39 global customview_second 40 global customview_second
40 customview_second: 41 customview_second:
41 movff menupos3,WREG ; copy current view (1-...) 42 movf menupos3,W ; copy current view (1-...)
42 dcfsnz WREG,F 43 dcfsnz WREG,F ; 1:
43 goto TFT_update_ppo2_sensors ; Update Sensor data ; and return 44 goto TFT_avr_stopwatch ; average depth and stopwatch
44 dcfsnz WREG,F 45 dcfsnz WREG,F ; 2:
45 goto TFT_update_avr_stopwatch ; Update average depth and stopwatch; and return 46 return ; compass - will be updated separately (faster) in divemode
46 dcfsnz WREG,F 47 dcfsnz WREG,F ; 3:
47 goto TFT_decoplan ; Show decoplan ; and return 48 goto TFT_ppo2_sensors ; ppO2 sensors
48 dcfsnz WREG,F 49 dcfsnz WREG,F ; 4:
49 goto TFT_battinfo_tissues_clock ; Update Battery, Tissues and clock ; and return 50 goto TFT_sensor_check ; sensor check
50 dcfsnz WREG,F 51 dcfsnz WREG,F ; 5;
51 goto TFT_gf_info ; Update GF informations ; and return 52 goto TFT_pscr_info ; pSCR data
52 dcfsnz WREG,F 53 dcfsnz WREG,F ; 6:
53 return ; Compass updated separately (faster) in divemode; 54 IFDEF _rx_functions
54 dcfsnz WREG,F 55 goto TFT_pressures_SAC ; tank pressure and SAC rate
55 nop ; ex goto TFT_dyn_gaslist 56 ELSE
56 dcfsnz WREG,F 57 return ; not available without RX functions
57 goto TFT_CNS ; Show CNS values for end-of-dive, ex goto TFT_hud_voltages 58 ENDIF
58 dcfsnz WREG,F 59 dcfsnz WREG,F ; 7:
59 bra customview_1sec_view9 ; Make sure to change value in "check_ppo2_display:" when moving around custom views 60 goto TFT_gas_needs_ascent ; gas needs for ascent / cave return
60 dcfsnz WREG,F 61 dcfsnz WREG,F ; 8:
61 goto TFT_sensor_check ; Show ppO2 of O2 and Diluent ; and return 62 goto TFT_decoplan ; deco plan
62 dcfsnz WREG,F 63 dcfsnz WREG,F ; 9:
63 goto TFT_ppo2_ead_end_cns ; Show ppO2, END/EAD and CNS; and return 64 goto TFT_ceiling_GF_tissue ; ceiling, current GF and tissues
64 dcfsnz WREG,F 65 dcfsnz WREG,F ; 10:
65 goto TFT_pscr_info ; Show ppO2, drop and lung ratio; and return 66 goto TFT_CNS ; CNS values
66 dcfsnz WREG,F 67 dcfsnz WREG,F ; 11:
67 goto TFT_gas_needs ; Show gas needs 68 goto TFT_ppo2_ead_end_cns ; ppO2, END/EAD and CNS
68 69 dcfsnz WREG,F ; 12:
69 ; Menupos3=0, do nothing 70 goto TFT_gf_factors ; GF factors
70 return 71 dcfsnz WREG,F ; 13:
71 72 goto TFT_clock_batt_surfpress ; clock, battery and surface pressure
72 customview_1sec_view9: ; Ceiling 73 return ; menupos3 = 0 -> do nothing
73 call TFT_ceiling ; Show Ceiling 74
74 call TFT_display_pure_ppo2 ; ppO2 value
75 TSTOSS char_I_deco_model ; 0 = ZH-L16, 1 = ZH-L16-GF
76 return ; No GF info for non-GF modes
77 goto TFT_gf_info ; Update GF informations ; and return
78 75
79 global customview_alternative_second 76 global customview_alternative_second
80 customview_alternative_second: 77 customview_alternative_second:
81 movff menupos3,WREG ; copy current view (1-...) 78 movf menupos3,W ; copy current view (0-...)
82 dcfsnz WREG,F 79 dcfsnz WREG,F
83 bra customview_alt_second_view1 ; View 1 80 nop ; view 1
84 dcfsnz WREG,F 81 dcfsnz WREG,F
85 nop ; View 2 82 nop ; view 2
86 83 ;bra customview_alt_second_view0 ; default view
87 ; Menupos3=0, do nothing 84
88 return 85 customview_alt_second_view0:
89
90 customview_alt_second_view1:
91 bsf FLAG_TFT_max_depth_alt
92 bsf FLAG_TFT_big_deco_alt 86 bsf FLAG_TFT_big_deco_alt
93 return 87 return
94 88
95 ;============================================================================= 89 ;=============================================================================
96 ; Do every-minute tasks for the custom view area 90 ; Do every-minute tasks for the custom view area
97 91
98 global customview_minute 92 global customview_minute
99 customview_minute: 93 customview_minute: ; called from dive mode, call disabled at present
100 return 94 return
101 ; movff menupos3,WREG ; copy 95 ; movf menupos3,W ; copy
102 ; dcfsnz WREG,F 96 ; dcfsnz WREG,F
103 ; bra customview_1min_view1 97 ; bra customview_1min_view1
104 ; dcfsnz WREG,F 98 ; dcfsnz WREG,F
105 ; bra customview_1min_view2 99 ; bra customview_1min_view2
106 ; dcfsnz WREG,F 100 ; dcfsnz WREG,F
119 ; bra customview_1min_view9 113 ; bra customview_1min_view9
120 ; dcfsnz WREG,F 114 ; dcfsnz WREG,F
121 ; bra customview_1min_view10 115 ; bra customview_1min_view10
122 ; dcfsnz WREG,F 116 ; dcfsnz WREG,F
123 ; bra customview_1min_view11 117 ; bra customview_1min_view11
124 ; ; Menupos3=0, do nothing 118 ; ; menupos3=0, do nothing
125 ; return 119 ; return
126 ; 120 ;
127 ;customview_1min_view1: 121 ;customview_1min_view1:
128 ;customview_1min_view2: 122 ;customview_1min_view2:
129 ;customview_1min_view3: 123 ;customview_1min_view3:
138 ;return 132 ;return
139 133
140 global surf_customview_toggle 134 global surf_customview_toggle
141 surf_customview_toggle: 135 surf_customview_toggle:
142 bcf switch_right 136 bcf switch_right
143 incf menupos3,F ; Number of customview to show 137 incf menupos3,F ; number of custom view to show
144 movlw d'9' ; Max number of customsviews in surface mode 138
145 cpfsgt menupos3 ; Max reached? 139 movlw .6 ; index of surface custom view compass
146 bra surf_customview_mask ; No, show 140 cpfseq menupos3 ; will compass be shown in custom view?
141 call I2C_sleep_accelerometer ; NO - stop accelerometer
142 cpfseq menupos3 ; will compass be shown in custom view?
143 call I2C_sleep_compass ; NO - stop compass
144
145 movlw d'10' ; max number of custom views in surface mode
146 cpfsgt menupos3 ; max reached?
147 bra surf_customview_mask ; NO - show
147 movlw .1 148 movlw .1
148 movwf menupos3 ; Reset to one (Always one custom view visible) 149 movwf menupos3 ; reset to one (always one custom view visible)
149 150
150 global surf_customview_mask 151 global surf_customview_mask
151 surf_customview_mask: 152 surf_customview_mask:
152 WIN_BOX_BLACK .50,surf_warning1_row-1, .0, surf_decotype_column-.1 ; top, bottom, left, right 153 WIN_BOX_BLACK .50,surf_warning1_row-1, .0, surf_decotype_column-.1 ; top, bottom, left, right
153 ; Prepare title 154 ; Prepare title
154 WIN_TINY surf_customview_title_column,surf_customview_title_row 155 WIN_TINY surf_customview_title_column,surf_customview_title_row
155 WIN_COLOR color_greenish 156 WIN_COLOR color_greenish
156 movff menupos3,WREG ; Menupos3 holds number of customview function 157 movf menupos3,W ; menupos3 holds number of custom view function
157 dcfsnz WREG,F 158 dcfsnz WREG,F ; 1:
158 bra surf_customview_init_view1 ; OC Gas list 159 bra surf_customview_init_view1 ; OC gas list
159 dcfsnz WREG,F 160 dcfsnz WREG,F ; 2:
160 bra surf_customview_init_view2 ; CC Dil list 161 bra surf_customview_init_view2 ; CC dil list
161 dcfsnz WREG,F 162 dcfsnz WREG,F ; 3:
162 bra surf_customview_init_view3 ; CC SP list 163 bra surf_customview_init_view3 ; CC SP list
163 dcfsnz WREG,F 164 dcfsnz WREG,F ; 4:
164 bra surf_customview_init_view4 ; Custom Text 165 bra surf_customview_init_view4 ; custom text
165 dcfsnz WREG,F 166 dcfsnz WREG,F ; 5:
166 bra surf_customview_init_view5 ; Tissue Diagram 167 bra surf_customview_init_view5 ; tissue diagram
167 dcfsnz WREG,F 168 dcfsnz WREG,F ; 6:
168 bra surf_customview_init_view6 ; Compass 169 bra surf_customview_init_view6 ; compass
169 dcfsnz WREG,F 170 dcfsnz WREG,F ; 7:
170 bra surf_customview_init_view7 ; Deco settings 171 bra surf_customview_init_view7 ; deco settings
171 dcfsnz WREG,F 172 dcfsnz WREG,F ; 8:
172 bra surf_customview_init_view8 ; Last Dive info 173 bra surf_customview_init_view8 ; last dive info
173 dcfsnz WREG,F 174 dcfsnz WREG,F ; 9:
174 bra surf_customview_init_view9 ; Sensor mV readings 175 bra surf_customview_init_view9 ; sensor mV readings
175 176 dcfsnz WREG,F ; 10:
176 call I2C_sleep_accelerometer ; Stop accelerometer 177 bra surf_customview_init_view10 ; tank data
177 call I2C_sleep_compass ; Stop compass 178 bra surf_customview_init_view4 ; default view after restart and loading new firmware
178 179
179 movlw .1 180 surf_customview_init_view1: ; view 1: OC Gas list
180 movwf menupos3 ; Reset to one (Always one custom view visible)
181
182 surf_customview_init_view1: ; View1: OC Gas list
183 btfsc FLAG_gauge_mode 181 btfsc FLAG_gauge_mode
184 bra surf_customview_toggle 182 bra surf_customview_toggle
185 btfsc FLAG_apnoe_mode 183 btfsc FLAG_apnoe_mode
186 bra surf_customview_toggle 184 bra surf_customview_toggle
185 btfss FLAG_oc_mode
186 bra surf_customview_init_view1a ; bailout version of "OC Gas List"
187 STRCPY_TEXT_PRINT tGaslist ; title of custom view / OC mode
188 bra surf_customview_init_view1b
189 surf_customview_init_view1a:
190 STRCPY_TEXT_PRINT tDiveBailout ; title of custom view / CCR & pSCR mode
191 surf_customview_init_view1b: ; remaining common part
192 call TFT_standard_color
193 call TFT_gaslist_surfmode ; show gas list
194 bra customview_toggle_exit ; done
195
196 surf_customview_init_view2: ; view 2: CCR / pSCR diluent list
187 btfsc FLAG_ccr_mode 197 btfsc FLAG_ccr_mode
188 bra surf_customview_init_view1_bail ; Bailout version of "OC Gas List" 198 bra surf_customview_init_view2a
189 btfsc FLAG_pscr_mode 199 btfsc FLAG_pscr_mode
190 bra surf_customview_init_view1_bail ; Bailout version of "OC Gas List" 200 bra surf_customview_init_view2a
191 STRCPY_TEXT_PRINT tGaslist ; Title of customview 201 bra surf_customview_toggle
202 surf_customview_init_view2a:
203 STRCPY_TEXT_PRINT tGaslistCC ; title of custom view
192 call TFT_standard_color 204 call TFT_standard_color
193 call TFT_gaslist_surfmode ; Show gas list 205 call TFT_dillist_surfmode ; show diluent list
194 bra customview_toggle_exit ; Done. 206 bra customview_toggle_exit ; done
195 207
196 surf_customview_init_view1_bail: 208 surf_customview_init_view3: ; view 3: CC SP list
197 STRCPY_TEXT_PRINT tDiveBailout ; Title of customview 209 btfsc FLAG_ccr_mode
210 bra surf_customview_init_view3a
211 bra surf_customview_toggle
212 surf_customview_init_view3a:
213 STRCPY_TEXT_PRINT tFixedSetpoints ; title of custom view
198 call TFT_standard_color 214 call TFT_standard_color
199 call TFT_gaslist_surfmode ; Show gas list 215 call TFT_splist_surfmode ; show setpoint list
200 bra customview_toggle_exit ; Done. 216 bra customview_toggle_exit ; done
201 217
202 surf_customview_init_view2: ; View2: CC Dil list 218 surf_customview_init_view9: ; view 9: sensor mV at the surface
203 btfsc FLAG_pscr_mode
204 bra surf_customview_init_view2_2
205 btfss FLAG_ccr_mode
206 bra surf_customview_toggle
207 btfsc FLAG_gauge_mode
208 bra surf_customview_toggle
209 btfsc FLAG_apnoe_mode
210 bra surf_customview_toggle
211 surf_customview_init_view2_2:
212 STRCPY_TEXT_PRINT tGaslistCC ; Title of customview
213 call TFT_standard_color
214 call TFT_dillist_surfmode ; Show diluent list
215 bra customview_toggle_exit ; Done.
216
217 surf_customview_init_view3: ; View3: CC SP list
218 btfss FLAG_ccr_mode
219 bra surf_customview_toggle
220 btfsc FLAG_gauge_mode
221 bra surf_customview_toggle
222 btfsc FLAG_apnoe_mode
223 bra surf_customview_toggle
224 STRCPY_TEXT_PRINT tFixedSetpoints ; Title of customview
225 call TFT_standard_color
226 call TFT_splist_surfmode ; Show Setpoint list
227 bra customview_toggle_exit ; Done.
228
229 surf_customview_init_view9: ; View 9: Sensor mV on the surface
230 btfsc FLAG_ccr_mode 219 btfsc FLAG_ccr_mode
231 bra surf_customview_init_view9a ; we are in CCR mode 220 bra surf_customview_init_view9a ; we are in CCR mode
232 btfsc FLAG_pscr_mode 221 btfsc FLAG_pscr_mode
233 bra surf_customview_init_view9a ; we are in PSCR mode 222 bra surf_customview_init_view9a ; we are in PSCR mode
234 bra surf_customview_toggle ; we are not in any rebreather mode, so skip 223 bra surf_customview_toggle ; we are not in any rebreather mode, so skip
235 surf_customview_init_view9a: 224 surf_customview_init_view9a:
236 movff opt_ccr_mode,WREG ; =0: Fixed SP, =1: Sensor, =2: Auto SP 225 movff opt_ccr_mode,WREG ; =0: fixed SP, =1: Sensor, =2: auto SP
237 sublw .1 ; opt_ccr_mode = 1 (Sensor)? 226 sublw .1 ; opt_ccr_mode = 1 (sensor)?
238 bnz surf_customview_toggle ; sorry, no sensors, skip again 227 bnz surf_customview_toggle ; sorry, no sensors, skip again
239 STRCPY_TEXT_PRINT tSensorMilliVolt ; Title of customview 228 STRCPY_TEXT_PRINT tSensorMilliVolt ; title of custom view
240 call TFT_standard_color
241 call TFT_sensor_mV ; write sensor mV readings to screen 229 call TFT_sensor_mV ; write sensor mV readings to screen
242 bra customview_toggle_exit ; Done. 230 bra customview_toggle_exit ; done
243 231
244 surf_customview_init_view4: ; View4: Custom text 232 surf_customview_init_view4: ; view 4: custom text
233 call TFT_custom_text ; show the custom text
234 bra customview_toggle_exit ; done
235
236 surf_customview_init_view5: ; view 5: tissue diagram
237 btfsc FLAG_gauge_mode
238 bra surf_customview_toggle
239 btfsc FLAG_apnoe_mode
240 bra surf_customview_toggle
245 call TFT_standard_color 241 call TFT_standard_color
246 call TFT_custom_text ; Show the custom text 242 call TFT_surface_tissues ; show tissue diagram
247 bra customview_toggle_exit ; Done. 243 bra customview_toggle_exit ; done
248 244
249 surf_customview_init_view5: ; View5: Tissue Diagram 245 surf_customview_init_view6: ; view 6: compass
250 btfsc FLAG_gauge_mode 246 call I2C_init_accelerometer ; start accelerometer
247 call I2C_init_compass ; start compass
248 call TFT_surface_compass_mask ; show compass mask
249 bra customview_toggle_exit ; done
250
251 surf_customview_init_view7:
252 btfsc FLAG_gauge_mode ; view 7: deco settings
251 bra surf_customview_toggle 253 bra surf_customview_toggle
252 btfsc FLAG_apnoe_mode 254 btfsc FLAG_apnoe_mode
253 bra surf_customview_toggle 255 bra surf_customview_toggle
254 call TFT_standard_color 256 call TFT_surface_decosettings ; show all deco settings
255 call TFT_surface_tissues ; Show Tissue diagram 257 bra customview_toggle_exit ; done
256 bra customview_toggle_exit ; Done. 258
257 259 surf_customview_init_view8: ; view 8: last dive info
258 surf_customview_init_view6: ; View6: Compass 260 call TFT_surface_lastdive ; show last dive interval
259 call I2C_init_accelerometer ; Start accelerometer 261 bra customview_toggle_exit ; done
260 call I2C_init_compass ; Start compass 262
261 call TFT_surface_compass_mask ; Show compass 263 surf_customview_init_view10: ; transmitter data / debug
262 bra customview_toggle_exit ; Done. 264 IFDEF _rx_functions
263 265 btfss FLAG_tr_enabled ; TR functions enabled?
264 surf_customview_init_view7: 266 bra surf_customview_toggle ; NO - show next view in list
265 btfsc FLAG_gauge_mode ; View7: Deco settings 267 STRCAT_PRINT "ID bar Volt" ; title of custom view (none language-dependent)
266 bra surf_customview_toggle 268 call TFT_surface_tankdata
267 btfsc FLAG_apnoe_mode 269 bra customview_toggle_exit ; done
268 bra surf_customview_toggle 270 ELSE
269 271 bra surf_customview_toggle
270 call TFT_surface_decosettings ; Show all deco settings 272 ENDIF
271 bra customview_toggle_exit ; Done. 273
272 274
273 surf_customview_init_view8: ; View8: Last dive info 275 global switch_layout_to_normal
274 call TFT_surface_lastdive ; Show last dive interval 276 switch_layout_to_normal: ; switch back from alternative to normal layout
275 bra customview_toggle_exit ; Done. 277 ; needs custom view to be selected / restored separately!
278 bcf alternative_divelayout ; clear flag
279 bsf FLAG_TFT_divemode_mask ; set flag for normal layout mask
280 bsf FLAG_TFT_max_depth ; set flag for normal layout data
281 btfss decostop_active ; deco?
282 bsf FLAG_TFT_display_ndl_mask ; NO - set flag for normal layout NDL data
283 btfsc decostop_active ; deco?
284 bsf FLAG_TFT_display_deko_mask ; YES - set flag for normal layout deco data
285 clrf menupos3 ; set to no active custom view
286 call TFT_ClearScreen ; clear the whole screen
287 return
276 288
277 289
278 global menuview_toggle 290 global menuview_toggle
279 menuview_toggle: ; Show Menu or the simulator tasks 291 menuview_toggle: ; show menu or the simulator tasks
280 btfss alternative_divelayout ; In alternative layout mode? 292 bcf switch_left
281 bra menuview_toggle2 ; No 293 btfss alternative_divelayout ; in alternative layout mode?
282 ; Switch back to normal mode for any menu tasks 294 bra menuview_toggle2 ; NO - continue with menu or simulator tasks
283 bcf alternative_divelayout ; clear flag 295 rcall switch_layout_to_normal ; YES - switch back to normal layout
284 bsf FLAG_TFT_divemode_mask ; Set flag for mask 296 movff customview_divemode,menupos3; - restore the custom view shown in normal layout
285 bsf FLAG_TFT_max_depth ; set flag 297 rcall customview_mask ; - re-draw the custom view
286 btfss decostop_active ; deco? 298 bra menuview_toggle_reset ; - suppress the menu when returning from alternative layout
287 bsf FLAG_TFT_display_ndl_mask ; NDL
288 btfsc decostop_active ; deco?
289 bsf FLAG_TFT_display_deko_mask ; Deco
290 call TFT_ClearScreen ; Clear screen
291 rcall customview_mask ; Re-Draw customview
292 299
293 menuview_toggle2: 300 menuview_toggle2:
294 movlw divemode_menuview_timeout 301 movlw divemode_menuview_timeout
295 movwf timeout_counter2 302 movwf timeout_counter2
296 bsf menuview 303 bsf menuview ; flag that the options menu is shown
297 bcf switch_left 304 incf menupos2,F ; number of option to show
298 incf menupos2,F ; Number of options to show 305 movlw d'10' ; max number of options in divemode
299 movlw d'10' ; Max number of options in divemode 306 cpfsgt menupos2 ; max reached?
300 cpfsgt menupos2 ; Max reached? 307 bra menuview_mask ; NO - show option
301 bra menuview_mask ; No, show
302 global menuview_toggle_reset 308 global menuview_toggle_reset
303 menuview_toggle_reset: ; Timeout occurred 309 menuview_toggle_reset: ; timeout occurred, beyond max number of options, or item executed
304 clrf menupos2 310 clrf menupos2 ; reset option selector
305 bcf menuview 311 bcf menuview ; revoke options menu if shown
306 menuview_mask: 312 menuview_mask:
307 WIN_BOX_BLACK dm_simtext_row, dm_simtext_row+.23, dm_simtext_column, dm_simtext_column+.49 ; top, bottom, left, right 313 WIN_BOX_BLACK dm_simtext_row, dm_simtext_row+.23, dm_simtext_column, dm_simtext_column+.46 ; top, bottom, left, right
308 btfss FLAG_gauge_mode 314 btfss FLAG_gauge_mode ; in gauge mode?
309 bra menuview_mask2 315 bra menuview_mask2 ; NO
310 ; Clear some more in gauge mode -- "Reset Avg." text is longer than normal simtext 316 ; YES - clear some more in gauge mode -- "Reset Avg." text is longer than all the other texts
311 WIN_BOX_BLACK dm_simtext_row, dm_simtext_row+.23, dm_simtext_column+.50, dm_simtext_column+.70 ; top, bottom, left, right 317 WIN_BOX_BLACK dm_simtext_row, dm_simtext_row+.23, dm_simtext_column+.47, dm_simtext_column+.70 ; top, bottom, left, right
312 menuview_mask2: 318 menuview_mask2:
313 call TFT_draw_gassep_line 319 call TFT_draw_gassep_line
314 movlw color_yellow 320 movlw color_yellow
315 call TFT_set_color 321 call TFT_set_color
316 bsf win_invert ; Set invert flag 322 bsf win_invert ; set invert flag
317 WIN_SMALL dm_simtext_column,dm_simtext_row 323 WIN_SMALL dm_simtext_column,dm_simtext_row
318 movff menupos2,WREG ; Menupos2 holds number of menu option to show 324 movf menupos2,W ; menupos2 holds number of menu option to show
319 dcfsnz WREG,F 325 dcfsnz WREG,F
320 bra menuview_view_gaschange ; If a better gas is indicated 326 bra menuview_view_gaschange ; check if a better gas/diluent is advised and prompt for switching if yes
321 dcfsnz WREG,F 327 dcfsnz WREG,F
322 bra menuview_view1 ; "Menu?" (Not in Gauge and Anpnoe) 328 bra menuview_view1 ; "Menu?" (skipped in gauge and apnoe modes)
323 dcfsnz WREG,F 329 dcfsnz WREG,F
324 bra menuview_view2 ; "Quit Simulation?" (Sim only) 330 bra menuview_view2 ; "Quit?" (in simulation mode only)
325 dcfsnz WREG,F 331 dcfsnz WREG,F
326 bra menuview_view3 ; "Descent 1m" (Sim only) 332 bra menuview_view3 ; "Sim-1m" (in simulation mode only)
327 dcfsnz WREG,F 333 dcfsnz WREG,F
328 bra menuview_view4 ; "Ascend 1m" (Sim only) 334 bra menuview_view4 ; "Sim+1m" (in simulation mode only)
329 dcfsnz WREG,F 335 dcfsnz WREG,F
330 bra menuview_view5 ; "Quit Apnea mode?" (Apnea only) 336 bra menuview_view5 ; "Quit?" (in apnoe mode only)
331 dcfsnz WREG,F 337 dcfsnz WREG,F
332 bra menuview_view6 ; "Reset Avr." (Gauge only) 338 bra menuview_view6 ; "Reset Avr." (in gauge mode only)
333 dcfsnz WREG,F 339 dcfsnz WREG,F
334 bra menuview_view7 ; "Sim:+5mins" (Sim only) 340 bra menuview_view7 ; "Sim+5'" (in simulation mode only)
335 dcfsnz WREG,F 341 dcfsnz WREG,F
336 bra menuview_view8 ; "Heading" (When compass is shown) 342 bra menuview_view8 ; "Heading" (only when compass is shown)
337 dcfsnz WREG,F 343 dcfsnz WREG,F
338 bra menuview_view9 ; "Layout" (Alternative Layout, aka Blind mode) 344 bra menuview_view9 ; "Layout" (offer alternative layout, aka blind mode)
339 345
340 menuview_exit: 346 menuview_exit:
341 call TFT_standard_color 347 call TFT_standard_color
342 bcf win_invert ; Reset invert flag 348 bcf win_invert ; reset invert flag
343 return ; Menupos2 = 0, Show nothing 349 btfss alternative_divelayout ; in alternative layout?
350 bsf FLAG_TFT_active_gas_divemode; NO - redraw gas and setpoint (eventually needed to restore the "Bailout" text)
351 return ; menupos2 = 0, show nothing
344 352
345 353
346 menuview_view_gaschange: 354 menuview_view_gaschange:
347 btfss better_gas_available ; =1: A better gas is available 355 btfsc divemode_gaschange ; last gas change done yet?
348 bra menuview_toggle ; No, call next option 356 bra menuview_toggle ; NO - call next option
349 btfsc divemode_gaschange ; Skip if the last gas change is not done yet. 357 btfsc FLAG_oc_mode ; in OC mode?
350 bra menuview_toggle 358 bra menuview_view_gaschange_OC ; YES
351 bsf short_gas_decriptions ; =1: Use short versions of gaslist_strcat_gas_mod and gaslist_strcat_setpoint 359 btfsc FLAG_bailout_mode ; in bailout?
352 movff better_gas_number,PRODL ; number (1-5) of the "better gas" in divemode, =0: no better gas available 360 bra menuview_view_gaschange_OC ; YES
353 decf PRODL,F 361 menuview_view_gaschange_DIL:
354 call gaslist_strcat_gas_mod ; Append gas description of gas #PRODL (0-4) to current string 362 btfss better_dil_available ; is the better diluent still available?
363 bra menuview_toggle ; NO - call next option
364 movff best_dil_number,PRODL ; number (1-5) of the "best diluent"
365 bsf FLAG_diluent_setup ; flag to use diluents
366 bra menuview_view_gaschange_com
367 menuview_view_gaschange_OC:
368 btfss better_gas_available ; is the better gas still available?
369 bra menuview_toggle ; NO - call next option
370 movff best_gas_number,PRODL ; number (1-5) of the "best gas"
371 bcf FLAG_diluent_setup ; flag to use oc gases
372 menuview_view_gaschange_com:
373 decf PRODL,F ; (1-5) -> (0-4)
374 bsf short_gas_decriptions ; =1: use short version of gaslist_strcat_gas_cd and gaslist_strcat_setpoint
375 bsf better_gas_hint ; color-code as best gas/diluent
376 call gaslist_strcat_gas_cd ; append gas description of gas #PRODL (0-4) to current string
355 movlw .5 377 movlw .5
356 movwf FSR2L ; Point to char 6 (5 chars gas description only) 378 movwf FSR2L ; point to 6th character (5 chars are used for the gas/dil description)
357 STRCAT_PRINT "?" 379 STRCAT_PRINT "?"
358 bra menuview_exit ; Done. 380 bra menuview_exit ; done
381
359 menuview_view1: 382 menuview_view1:
360 btfsc FLAG_apnoe_mode ; In Apnoe mode? 383 btfsc FLAG_apnoe_mode ; in Apnoe mode?
361 bra menuview_toggle ; Call next option 384 bra menuview_toggle ; YES - goto next option
362 btfsc FLAG_gauge_mode ; In Gauge mode? 385 btfsc FLAG_gauge_mode ; in Gauge mode?
363 bra menuview_toggle ; Call next option 386 bra menuview_toggle ; YES - goto next option
364 STRCPY_TEXT_PRINT tDivePreMenu ; "Menu?" 387 STRCPY_TEXT_PRINT tDivePreMenu ; print "Menu?"
365 bra menuview_exit ; Done. 388 bra menuview_exit ; done
389
366 menuview_view2: 390 menuview_view2:
367 btfss simulatormode_active ; View only for simulator mode 391 btfss simulatormode_active ; in simulator mode?
368 bra menuview_toggle ; Call next option 392 bra menuview_toggle ; NO - goto next option
369 STRCPY_TEXT_PRINT tQuitSim ; "Quit Simulation?" 393 STRCPY_TEXT_PRINT tQuitSim ; print "Quit Simulation?"
370 bra menuview_exit ; Done. 394 bra menuview_exit ; done
395
371 menuview_view3: 396 menuview_view3:
372 btfss simulatormode_active ; View only for simulator mode 397 btfss simulatormode_active ; in simulator mode?
373 bra menuview_toggle ; Call next option 398 bra menuview_toggle ; NO - goto next option
374 STRCPY_PRINT "Sim-1m" ; "-" for going down 399 ; STRCPY_PRINT "Sim-1m" ; print "-" for going down
375 bra menuview_exit ; Done. 400 STRCPY_PRINT "Sim\xb8" ; print down arrow for going down
401 bra menuview_exit ; done
402
376 menuview_view4: 403 menuview_view4:
377 btfss simulatormode_active ; View only for simulator mode 404 btfss simulatormode_active ; in simulator mode?
378 bra menuview_toggle ; Call next option 405 bra menuview_toggle ; NO - goto next option
379 STRCPY_PRINT "Sim+1m" ; "+" for going up 406 ; STRCPY_PRINT "Sim+1m" ; "+" for going up
380 bra menuview_exit ; Done. 407 STRCPY_PRINT "Sim\xb9" ; print up arrow for going up
408 bra menuview_exit ; done
409
381 menuview_view5: 410 menuview_view5:
382 btfss FLAG_apnoe_mode ; In Apnoe mode? 411 btfss FLAG_apnoe_mode ; in Apnoe mode?
383 bra menuview_toggle ; No, call next option 412 bra menuview_toggle ; NO - goto next option
384 btfss FLAG_active_descent ; Are we descending? 413 btfss FLAG_active_descent ; descending?
385 bra menuview_toggle ; Yes 414 bra menuview_toggle ; YES - goto next option
386 ; We are at the surface: 415 ; We are at the surface:
387 STRCPY_TEXT_PRINT tQuitSim ; "Quit Apnea mode?" 416 STRCPY_TEXT_PRINT tQuitSim ; print "Quit Apnea mode?"
388 bra menuview_exit ; Done. 417 bra menuview_exit ; done
418
389 menuview_view6: 419 menuview_view6:
390 btfss FLAG_gauge_mode ; In Gauge mode? 420 btfss FLAG_gauge_mode ; in Gauge mode?
391 bra menuview_toggle ; No, call next option 421 bra menuview_toggle ; NO - goto next option
392 STRCPY_TEXT_PRINT tDivemenu_ResetAvg; "Reset Avg." 422 STRCPY_TEXT_PRINT tDivemenu_ResetAvg; print "Reset Avg."
393 bra menuview_exit ; Done. 423 bra menuview_exit ; done
424
394 menuview_view7: 425 menuview_view7:
395 btfss simulatormode_active ; View only for simulator mode 426 btfss simulatormode_active ; in simulator mode?
396 bra menuview_toggle ; Call next option 427 bra menuview_toggle ; NO - goto next option
397 btfsc FLAG_gauge_mode ; In Gauge mode? 428 btfsc FLAG_gauge_mode ; in Gauge mode?
398 bra menuview_toggle ; Yes, call next option 429 bra menuview_toggle ; YES - goto next option
399 btfsc FLAG_apnoe_mode ; In Apnoe mode? 430 btfsc FLAG_apnoe_mode ; in Apnoe mode?
400 bra menuview_toggle ; Yes, call next option 431 bra menuview_toggle ; YES - goto next option
401 STRCPY_PRINT "Sim+5'" 432 STRCPY_PRINT "Sim+5'" ; print "Sim+5'"
402 bra menuview_exit ; Done. 433 bra menuview_exit ; done
434
403 menuview_view8: 435 menuview_view8:
404 movlw .6 436 movlw index_compass_dm ; index of compass view
405 cpfseq menupos3 ; in compass view? 437 cpfseq menupos3 ; in compass view?
406 bra menuview_toggle ; No, call next option 438 bra menuview_toggle ; NO - goto next option
407 STRCPY_TEXT_PRINT tSetHeading ; "Heading" 439 STRCPY_TEXT_PRINT tSetHeading ; print "Heading"
408 bra menuview_exit ; Done. 440 bra menuview_exit ; done
441
409 menuview_view9: 442 menuview_view9:
410 btfsc FLAG_apnoe_mode ; In Apnoe mode? 443 btfsc FLAG_apnoe_mode ; in Apnoe mode?
411 bra menuview_toggle ; Yes, call next option 444 bra menuview_toggle ; YES - goto next option
412 btfsc FLAG_gauge_mode ; In Gauge mode?
413 bra menuview_toggle ; Yes, call next option
414 STRCPY_PRINT "Layout" 445 STRCPY_PRINT "Layout"
415 bra menuview_exit ; Done. 446 bra menuview_exit ; done
416 447
417 ;============================================================================= 448 ;=============================================================================
418 449
450 global customview_mask_alternative
419 customview_toggle_alternative: 451 customview_toggle_alternative:
420 movlw d'1' ; Max number of customviews in divemode, alternative layout 452 call I2C_sleep_accelerometer ; no compass in alternative layout - stop accelerometer
421 cpfsgt menupos3 ; Max reached? 453 call I2C_sleep_compass ; no compass in alternative layout - stop compass
422 bra customview_mask_alternative ; No, show 454 movlw d'0' ; max number of custom views in divemode, alternative layout
423 movlw .1 455 cpfsgt menupos3 ; max reached?
424 movwf menupos3 ; Reset to one, always one customview visible in alternative layout 456 bra customview_mask_alternative ; NO - show
425 customview_mask_alternative: 457 clrf menupos3 ; reset to zero (zero = default custom view in alternative layout)
458 customview_mask_alternative:
426 ; Clear custom view area in divemode 459 ; Clear custom view area in divemode
427 WIN_BOX_BLACK dm_customview_row, .239, .0, .159 ; top, bottom, left, right 460 WIN_BOX_BLACK dm_customview_row, .239, .0, .159 ; top, bottom, left, right
428 call TFT_standard_color 461 movf menupos3,W ; menupos3 holds number of custom view function
429 movff menupos3,WREG ; Menupos3 holds number of customview function 462 dcfsnz WREG,F
430 dcfsnz WREG,F 463 bra customview_alt_init_view1 ; view 1: -- for test only --
431 bra customview_alt_init_view1 ; View 1: Big deco/ndl and max. depth 464 dcfsnz WREG,F
432 dcfsnz WREG,F 465 nop ; view 2: ...
433 bra customview_alt_init_view2 ; View 2: 466 ;bra customview_alt_init_view0 ; default view: big deco/ndl and max. depth
434 467
435 ;bra customview_alternative_toggle_exit ; No view (menupos3=0) 468 customview_alt_init_view0: ; default view: big deco/ndl and max. depth
436
437 customview_alt_toggle_exit:
438 call TFT_standard_color
439 bcf toggle_customview ; Clear flag
440 return
441
442 customview_alt_init_view1: ; View 1: Big deco/ndl and max. depth
443 call TFT_max_depth_alternative 469 call TFT_max_depth_alternative
444 call TFT_big_deco_alt 470 call TFT_big_deco_alt
445 bra customview_alt_toggle_exit 471 bra customview_alt_toggle_exit
446 472
447 customview_alt_init_view2: 473 customview_alt_init_view1: ; view 1 - just for test use
448 ; /* Just for test... 474 call TFT_avr_stopwatch_mask ; mask for average depth and stopwatch
449 call TFT_mask_avr_stopwatch ; Show mask for average depth and stopwatch 475 call TFT_avr_stopwatch ; data for average depth and stopwatch
450 call TFT_update_avr_stopwatch ; Update average depth and stopwatch
451 ; ...Just for test */
452 bra customview_alt_toggle_exit 476 bra customview_alt_toggle_exit
453 477
454 478 customview_alt_toggle_exit:
455 ; Show next customview (and delete this flag) 479 bcf toggle_customview ; clear flag
480 return
481
482
483 ; Show next dive mode custom view (and delete this flag)
456 global customview_toggle 484 global customview_toggle
457 customview_toggle: 485 customview_toggle:
458 bcf switch_right 486 bcf switch_right
459 incf menupos3,F ; Number of customview to show 487 incf menupos3,F ; number of custom view to show
460 488
461 btfsc alternative_divelayout ; In alternative layout mode? 489 btfsc alternative_divelayout ; in alternative layout mode?
462 bra customview_toggle_alternative ; Yes, use the big ones instead 490 bra customview_toggle_alternative ; YES - use the big ones instead
463 491
464 movlw d'13' ; Max number of customviews in divemode 492 movlw index_compass_dm ; index of custom view compass
465 cpfsgt menupos3 ; Max reached? 493 cpfseq menupos3 ; will compass be shown in custom view?
466 bra customview_mask ; No, show 494 call I2C_sleep_accelerometer ; NO - stop accelerometer
467 clrf menupos3 ; Reset to zero (Zero=no custom view) 495 cpfseq menupos3 ; will compass be shown in custom view?
468 496 call I2C_sleep_compass ; NO - stop compass
497
498 movlw index_cv_dm_max ; highest index in use in dive mode custom view
499 cpfsgt menupos3 ; max reached?
500 bra customview_mask ; NO - show
501 clrf menupos3 ; reset to zero (zero = no custom view)
502
503 ;----------------------------------------------------------------------------------
504 ; Jump table for initialization of the every-second tasks in custom view area (dive mode)
505 ;
506 ; Attention: the ordering must be in line with the every-second update jump table
507 ; and the index numbers defined in hwos.inc!
508 ;
469 global customview_mask 509 global customview_mask
470 customview_mask: 510 customview_mask:
511 bcf redraw_custview_mask ; clear redraw request flag
471 ; Clear custom view area in divemode 512 ; Clear custom view area in divemode
472 WIN_BOX_BLACK dm_customview_row, dm_customview_bot-.2, dm_customview_column, dm_customview_rgt ; top, bottom, left, right 513 WIN_BOX_BLACK dm_customview_row, dm_customview_bot-.2, dm_customview_column, dm_customview_rgt ; top, bottom, left, right
473 WIN_SMALL dm_customview_column,dm_customview_row 514 movf menupos3,W ; menupos3 holds number of custom view function
474 call TFT_standard_color 515 dcfsnz WREG,F ; 1:
475 movff menupos3,WREG ; Menupos3 holds number of customview function 516 bra init_avr_stopwatch ; average depth and stopwatch
476 dcfsnz WREG,F 517 dcfsnz WREG,F ; 2:
477 bra customview_init_view1 ; Update Sensor data 518 bra init_TFT_dive_compass ; compass
478 dcfsnz WREG,F 519 dcfsnz WREG,F ; 3:
479 bra customview_init_view2 ; average depth and stopwatch 520 bra init_ppo2_sensors ; ppO2 sensors
480 dcfsnz WREG,F 521 dcfsnz WREG,F ; 4:
481 bra customview_init_view3 ; Decoplan 522 bra init_sensor_check ; sensor check
482 dcfsnz WREG,F 523 dcfsnz WREG,F ; 5:
483 bra customview_init_view4 ; Battery info, Tissues and clock 524 bra init_pscr_info ; pSCR data
484 dcfsnz WREG,F 525 dcfsnz WREG,F ; 6:
485 bra customview_init_view5 ; GF informations 526 bra init_pressures_SAC ; tank pressure and SAC rate
486 dcfsnz WREG,F 527 dcfsnz WREG,F ; 7:
487 bra customview_init_view6 ; Compass 528 bra init_gas_needs_ascent ; gas needs for ascent / cave return
488 dcfsnz WREG,F 529 dcfsnz WREG,F ; 8:
489 bra customview_init_view7 ; Dynamic gaslist 530 bra init_decoplan ; deco plan
490 dcfsnz WREG,F 531 dcfsnz WREG,F ; 9:
491 bra customview_init_view8 ; CNS 532 bra init_ceiling_GF_tissue ; ceiling, current GF and tissues
492 dcfsnz WREG,F 533 dcfsnz WREG,F ; 10:
493 bra customview_init_view9 ; ppO2, Ceiling and current GF 534 bra init_CNS ; CNS values
494 dcfsnz WREG,F 535 dcfsnz WREG,F ; 11:
495 bra customview_init_view10 ; Sensor check 536 bra init_ppo2_ead_end_cns ; ppO2, END/EAD and CNS
496 dcfsnz WREG,F 537 dcfsnz WREG,F ; 12:
497 bra customview_init_view11 ; ppO2, END/EAD and CNS 538 bra init_gf_factors ; GF factors
498 dcfsnz WREG,F 539 dcfsnz WREG,F ; 13:
499 bra customview_init_view12 ; PSCR Info 540 bra init_clock_batt_surfpress ; clock, battery and surface pressure
500 dcfsnz WREG,F 541 bra customview_toggle_exit ; no view (blank screen in custom view area)
501 bra customview_init_view13 ; Gas needs 542
502 543
503 customview_init_nocustomview: 544 init_ppo2_sensors:
504 call I2C_sleep_accelerometer ; Stop accelerometer 545 btfsc FLAG_ccr_mode ; in CC mode?
505 call I2C_sleep_compass ; Stop compass 546 bra customview_init_view1a ; YES
506 bra customview_toggle_exit 547 btfsc FLAG_pscr_mode ; in PSCR mode?
507 548 bra customview_init_view1a ; YES
508 customview_init_view1: 549 bra customview_toggle ; NO to both, call next view
509 btfsc FLAG_apnoe_mode ; In Apnoe mode?
510 bra customview_toggle ; yes, Call next view...
511 btfsc FLAG_pscr_mode ; In PSCR mode?
512 bra customview_init_view1a ; Yes
513 btfss FLAG_ccr_mode ; In CC mode?
514 bra customview_toggle ; no, Call next view...
515
516 customview_init_view1a: 550 customview_init_view1a:
517 btfsc analog_o2_input ; do we have an analog input? 551 btfsc analog_o2_input ; do we have an analog input?
518 bra customview_init_view1b ; YES - show this view 552 bra customview_init_view1b ; YES - show this view
519 btfsc s8_digital ; NO - do we have a digital input? 553 btfsc s8_digital ; NO - do we have a digital input?
520 bra customview_init_view1b ; YES - show this view 554 bra customview_init_view1b ; YES - show this view
521 btfss optical_input ; NO - do we have an optical input? 555 btfss optical_input ; NO - do we have an optical input?
522 bra customview_toggle ; NO - call next view... 556 bra customview_toggle ; NO - call next view
523
524 ; YES - show this view 557 ; YES - show this view
525 customview_init_view1b: 558 customview_init_view1b:
526 call TFT_hud_mask ; Setup HUD mask 559 call TFT_ppo2_sensors_mask ; mask for ppO2 sensors
527 call TFT_update_ppo2_sensors ; Update Sensor data 560 call TFT_ppo2_sensors ; data for ppO2 sensors
528 bra customview_toggle_exit 561 bra customview_toggle_exit
529 562
530 customview_init_view2: 563 init_avr_stopwatch:
531 btfsc FLAG_apnoe_mode ; In Apnoe mode? 564 btfsc FLAG_apnoe_mode ; in apnoe mode?
532 bra customview_toggle ; Yes, Call next view... 565 bra customview_toggle ; YES - call next view
533 call TFT_mask_avr_stopwatch ; Show mask for average depth and stopwatch 566 call TFT_avr_stopwatch_mask ; mask for average depth and stopwatch
534 call TFT_update_avr_stopwatch ; Update average depth and stopwatch 567 call TFT_avr_stopwatch ; data for average depth and stopwatch
535 bra customview_toggle_exit 568 bra customview_toggle_exit
536 569
537 customview_init_view3: 570 init_decoplan:
538 btfsc FLAG_apnoe_mode ; In Apnoe mode? 571 btfsc FLAG_apnoe_mode ; in apnoe mode?
539 bra customview_toggle ; Yes, Call next view... 572 bra customview_toggle ; YES - call next view
540 btfsc FLAG_gauge_mode ; In Gauge mode? 573 btfsc FLAG_gauge_mode ; in gauge mode?
541 bra customview_toggle ; Yes, Call next view... 574 bra customview_toggle ; YES - call next view
542 call TFT_decoplan ; Show decoplan 575 call TFT_decoplan_mask ; mask for deco plan
543 bra customview_toggle_exit 576 call TFT_decoplan ; data for deco plan
544 577 bra customview_toggle_exit
545 customview_init_view4: 578
546 call TFT_battinfo_tissues_clock_mask ; Setup Mask 579 init_clock_batt_surfpress:
547 call TFT_battinfo_tissues_clock ; Show Battery info, Tissues and clock 580 call TFT_clock_batt_surfpress_mask ; mask for clock, battery and surface pressure
548 bra customview_toggle_exit 581 call TFT_clock_batt_surfpress ; data for clock, battery and surface pressure
549 582 bra customview_toggle_exit
550 customview_init_view5: 583
551 btfsc FLAG_apnoe_mode ; In Apnoe mode? 584 init_gf_factors:
552 bra customview_toggle ; Yes, Call next view... 585 btfsc FLAG_apnoe_mode ; in apnoe mode?
553 btfsc FLAG_gauge_mode ; In Gauge mode? 586 bra customview_toggle ; YES - call next view
554 bra customview_toggle ; Yes, Call next view... 587 btfsc FLAG_gauge_mode ; in gauge mode?
555 588 bra customview_toggle ; YES - call next view
556 TSTOSS char_I_deco_model ; 0 = ZH-L16, 1 = ZH-L16-GF 589 TSTOSS char_I_deco_model ; in GF mode (0 = ZH-L16, 1 = ZH-L16-GF)?
557 bra customview_toggle ; No GF info for non-GF modes 590 bra customview_toggle ; NO - no GF info for non-GF modes
558 591 call TFT_gf_factors_mask ; mask for GF factors
559 call TFT_gf_mask ; Setup Mask 592 call TFT_gf_factors ; data for GF factors
560 call TFT_gf_info ; Show GF informations 593 bra customview_toggle_exit
561 bra customview_toggle_exit 594
562 595 init_TFT_dive_compass: ; compass
563 customview_init_view6: ; Compass (View 6) 596 call I2C_init_accelerometer ; start accelerometer
564 call I2C_init_accelerometer ; Start accelerometer 597 call I2C_init_compass ; start compass
565 call I2C_init_compass ; Start compass 598 call TFT_dive_compass_mask ; show compass mask
566 call TFT_dive_compass_mask ; Show compass 599 bra customview_toggle_exit
567 bra customview_toggle_exit 600
568 601 init_pressures_SAC: ; tank pressure and SAC rate
569 customview_init_view7: ; view disabled 602 IFDEF _rx_functions
570 bra customview_toggle 603 btfss FLAG_tr_enabled ; TR functions enabled?
571 604 bra customview_toggle ; NO - call next view
572 customview_init_view8: ; CNS at end of dive 605 call TFT_pressures_SAC_mask ; mask for pressures and SAC
573 btfsc FLAG_gauge_mode ; In Gauge mode? 606 call TFT_pressures_SAC ; data for pressures and SAC
574 bra customview_toggle ; Yes, Call next view... 607 bra customview_toggle_exit
575 btfsc FLAG_apnoe_mode ; In Apnoe mode? 608 ELSE
576 bra customview_toggle ; yes, Call next view... 609 bra customview_toggle ; skip, not available without RX functions
577 call TFT_CNS_mask 610 ENDIF
578 call TFT_CNS 611
579 goto customview_toggle_exit 612 init_CNS: ; CNS at end of dive
580 613 btfsc FLAG_gauge_mode ; in Gauge mode?
581 customview_init_view9: ; ppO2, Ceiling and current GF 614 bra customview_toggle ; YES - call next view
582 btfsc FLAG_apnoe_mode ; In Apnoe mode? 615 btfsc FLAG_apnoe_mode ; in apnoe mode?
583 bra customview_toggle ; yes, Call next view... 616 bra customview_toggle ; YES - call next view
584 btfsc FLAG_gauge_mode ; In Gauge mode? 617 call TFT_CNS_mask ; mask for CNS values
585 bra customview_toggle ; Yes, Call next view... 618 call TFT_CNS ; data for CNS values
586 call TFT_ceiling_mask ; Setup mask 619 bra customview_toggle_exit
587 call TFT_ceiling ; Show Ceiling 620
588 621 init_ceiling_GF_tissue: ; ceiling, tissues and current GF
589 ; ppO2 value 622 btfsc FLAG_apnoe_mode ; in apnoe mode?
590 call TFT_mask_ppo2 623 bra customview_toggle ; YES - call next view
591 call TFT_display_pure_ppo2 624 btfsc FLAG_gauge_mode ; in gauge mode?
592 625 bra customview_toggle ; YES - call next view
593 ; current GF value 626 call TFT_ceiling_GF_tissue_mask ; mask for ceiling, current GF and tissues
594 TSTOSS char_I_deco_model ; 0 = ZH-L16, 1 = ZH-L16-GF 627 call TFT_ceiling_GF_tissue ; data for ceiling, current GF and tissues
595 bra customview_toggle_exit ; No GF info for non-GF modes 628 bra customview_toggle_exit
596 ; current GF value 629
597 call TFT_gf_mask_cGF ; Setup Mask - current GF only 630 init_sensor_check: ; sensor check
598 call TFT_gf_info ; Show GF informations 631 btfsc FLAG_ccr_mode ; in CCR mode?
599 bra customview_toggle_exit 632 bra customview_init_view10a ; YES
600 633 ; btfsc FLAG_pscr_mode ; in pSCR mode?
601 customview_init_view10: ; Sensor check 634 ; bra customview_init_view10a ; YES
602 btfsc FLAG_apnoe_mode ; In Apnoe mode? 635 bra customview_toggle ; NO to both, call next view
603 bra customview_toggle ; yes, Call next view... 636 customview_init_view10a:
604 btfsc FLAG_gauge_mode ; In Gauge mode? 637 call TFT_sensor_check_mask ; mask for sensor check
605 bra customview_toggle ; Yes, Call next view... 638 call TFT_sensor_check ; data for sensor check
606 btfss FLAG_ccr_mode ; In CC mode? 639 bra customview_toggle_exit
607 bra customview_toggle ; no, Call next view... 640
608 641 init_ppo2_ead_end_cns: ; ppO2, END/EAD and CNS
609 call TFT_sensor_check_mask ; Show ppO2 of O2 and Diluent mask 642 btfsc FLAG_apnoe_mode ; in apnoe mode?
610 call TFT_sensor_check ; Show ppO2 of O2 and Diluent 643 bra customview_toggle ; YES - call next view
611 bra customview_toggle_exit 644 btfsc FLAG_gauge_mode ; in gauge mode?
612 645 bra customview_toggle ; YES - call next view
613 customview_init_view11: ; ppO2, END/EAD and CNS 646 call TFT_ppo2_ead_end_cns_mask ; mask for ppO2, END/EAD and CNS
614 btfsc FLAG_apnoe_mode ; In Apnoe mode? 647 call TFT_ppo2_ead_end_cns ; data for ppO2, END/EAD and CNS
615 bra customview_toggle ; yes, Call next view... 648 bra customview_toggle_exit
616 btfsc FLAG_gauge_mode ; In Gauge mode? 649
617 bra customview_toggle ; Yes, Call next view... 650 init_pscr_info: ; pSCR information
618 651 btfss FLAG_pscr_mode ; in pSCR mode?
619 call TFT_ppo2_ead_end_cns_mask ; Show ppO2, END/EAD and CNS mask 652 bra customview_toggle ; NO - call next view
620 call TFT_ppo2_ead_end_cns ; Show ppO2, END/EAD and CNS 653 call TFT_pscr_info_mask ; mask for pSCR info
621 goto customview_toggle_exit 654 call TFT_pscr_info ; data for pSCR info
622 655 bra customview_toggle_exit
623 customview_init_view12: ; PSCR Info 656
624 btfss FLAG_pscr_mode ; In PSCR mode? 657 init_gas_needs_ascent: ; gas needs for ascent
625 bra customview_toggle ; No, Call next view... 658 btfsc FLAG_apnoe_mode ; in apnoe mode?
626 659 bra customview_toggle ; YES - call next view
627 call TFT_pscr_info_mask ; Show ppO2, drop and lung ratio 660 btfsc FLAG_gauge_mode ; in gauge mode?
628 call TFT_pscr_info ; Show ppO2, drop and lung ratio 661 bra customview_toggle ; YES - call next view
629 bra customview_toggle_exit 662 TSTOSS opt_calc_asc_gasvolume ; check if gas volume calculation is switched on
630 663 bra customview_toggle ; NO - call next view
631 customview_init_view13: ; Gas Needs 664 call TFT_gas_needs_ascent_mask ; mask for gas needs ascent
632 TSTOSS opt_calc_asc_gasvolume ; check if gas volume calculations is switched on 665 call TFT_gas_needs_ascent ; data for gas needs ascent
633 bra customview_toggle ; NO - Call next view...
634 call TFT_gas_needs_mask ; YES - Show the mask for gas needs
635 call TFT_gas_needs ; Show the gas needs
636 bra customview_toggle_exit 666 bra customview_toggle_exit
637 667
638 customview_toggle_exit: 668 customview_toggle_exit:
639 btfsc divemode ; In Dive Mode? 669 bcf toggle_customview ; clear flag
640 bsf FLAG_TFT_temp_divemode ; Set flag to redraw temp 670 btfsc divemode ; in dive mode?
641 call TFT_standard_color 671 bsf FLAG_TFT_temp_divemode ; YES - set flag to redraw temp
642 bcf toggle_customview ; Clear flag
643 return 672 return
644 673
645 global customview_show_change_depth
646 customview_show_change_depth: ; Put " lom" or " loft" into Postinc2
647 PUTC " "
648 TSTOSS opt_units ; 0=m, 1=ft
649 bra customview_show_mix_metric
650 movf lo,W
651 mullw .100 ; convert meters to mbar
652 movff PRODL,lo
653 movff PRODH,hi
654 call convert_mbar_to_feet ; convert value in lo:hi from mbar to feet
655 bsf leftbind
656 output_16 ; Change depth in lo:hi
657 bcf leftbind
658 STRCAT_TEXT tFeets
659 return
660 customview_show_mix_metric:
661 output_99 ; Change depth in lo
662 STRCAT_TEXT tMeters
663 return
664
665 674
666 global customview_show_mix 675 global customview_show_mix
667 customview_show_mix: ; Put "Nxlo", "Txlo/hi", "Air" or "O2" into Postinc2 676 customview_show_mix: ; put "Nxlo", "Txlo/hi", "Air" or "O2" into postinc2
668 tstfsz hi ; He=0? 677 tstfsz hi ; He=0?
669 bra customview_show_mix5 ; No, Show a TX 678 bra customview_show_mix5 ; NO - show a TX
670 movlw .21 679 movlw .21
671 cpfseq lo ; Air? 680 cpfseq lo ; Air?
672 bra customview_show_mix2 ; No 681 bra customview_show_mix2 ; NO
673 STRCAT_TEXT tSelectAir ; Yes, show "Air" 682 STRCAT_TEXT tSelectAir ; YES - show "Air"
674 bra customview_show_mix4b 683 bra customview_show_mix4b
675 customview_show_mix2: 684 customview_show_mix2:
676 movlw .100 685 movlw .100
677 cpfseq lo ; O2? 686 cpfseq lo ; O2?
678 bra customview_show_mix3 ; No 687 bra customview_show_mix3 ; NO
679 STRCAT_TEXT tSelectO2 ; Yes, show "O2" 688 STRCAT_TEXT tSelectO2 ; YES - show "O2"
680 bra customview_show_mix4b 689 bra customview_show_mix4b
681
682 customview_show_mix3: 690 customview_show_mix3:
683 movlw .21 691 movlw .21
684 cpfslt lo ; < Nx21? 692 cpfslt lo ; < Nx21?
685 bra customview_show_mix4 ; No 693 bra customview_show_mix4 ; NO
686 STRCAT_TEXT tGasErr ; Yes, show "Err" 694 STRCAT_TEXT tGasErr ; YES - show "Err"
687 output_99 ; O2 ratio is still in "lo" 695 output_99 ; O2 ratio is still in "lo"
688 bra customview_show_mix4c 696 bra customview_show_mix4c
689
690 customview_show_mix4: 697 customview_show_mix4:
691 STRCAT_TEXT tSelectNx ; Show "Nx" 698 STRCAT_TEXT tSelectNx ; show "Nx"
692 output_99 ; O2 ratio is still in "lo" 699 output_99 ; O2 ratio is still in "lo"
693 customview_show_mix4b: 700 customview_show_mix4b:
694 STRCAT " " 701 STRCAT " "
695 customview_show_mix4c: 702 customview_show_mix4c:
696 btfsc divemode ; In divemode 703 btfsc divemode ; in divemode?
697 return ; Yes 704 return ; YES
698 STRCAT " " 705 STRCAT " "
699 return 706 return
700
701 customview_show_mix5: 707 customview_show_mix5:
702 btfsc divemode 708 btfsc divemode
703 bra customview_show_mix6 709 bra customview_show_mix6
704 STRCAT_TEXT tSelectTx ; Show "Tx" 710 STRCAT_TEXT tSelectTx ; show "Tx"
705 customview_show_mix6: 711 customview_show_mix6:
706 output_99 ; O2 ratio is still in "lo" 712 output_99 ; O2 ratio is still in "lo"
707 PUTC "/" 713 PUTC "/"
708 movff hi,lo 714 movff hi,lo
709 output_99 ; He ratio 715 output_99 ; He ratio