view src/customview.asm @ 628:cd58f7fc86db

3.05 stable work
author heinrichsweikamp
date Thu, 19 Sep 2019 12:01:29 +0200
parents c40025d8e750
children 185ba2f91f59
line wrap: on
line source

;=============================================================================
;
;   File customview.asm                       combined next generation V3.03.5
;
;   Custom Views in Surface and Dive Mode
;
;   Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
;=============================================================================
; HISTORY
;  2011-08-10 : [mH] moving from OSTC code

;=============================================================================

#include "hwos.inc"						; mandatory header
#include "tft_outputs.inc"
#include "strings.inc"
#include "tft.inc"
#include "wait.inc"
#include "surfmode.inc"
#include "convert.inc"
#include "divemode.inc"
#include "i2c.inc"
#include "start.inc"


	extern	gaslist_strcat_gas_cd
	extern	char_I_deco_model

 IFDEF _compass
	extern	TFT_surface_compass_mask
	extern	TFT_dive_compass_mask
 ENDIF


custview	CODE

;-----------------------------------------------------------------------------


;=============================================================================
; Jump table for the every-second tasks for the custom view area (dive mode)
;
; Attention: the ordering must be in line with the init jump table and the
;            index numbers defined in hwos.inc!

	global	dive_customview_second
dive_customview_second:
	movf	active_customview,W			; get current view
	dcfsnz	WREG,F						; 1:
	goto	TFT_avr_stopwatch			; average depth and stopwatch
	dcfsnz	WREG,F						; 2:
	return								; compass - will be updated separately (faster) in dive mode
	dcfsnz	WREG,F						; 3:
 IFDEF _external_sensor
	goto	TFT_ppo2_sensors			; ppO2 sensors
 ELSE
	return								; not available without external sensors
 ENDIF
	dcfsnz	WREG,F						; 4:
 IFDEF _ccr_pscr
	goto	TFT_sensor_check			; sensor check
 ELSE
	return								; not available without CCR / pSCR mode
 ENDIF
	dcfsnz	WREG,F						; 5;
 IFDEF _ccr_pscr
	goto	TFT_pscr_info				; pSCR data
 ELSE
	return								; not available without CCR / pSCR mode
 ENDIF
	dcfsnz	WREG,F						; 6:
 IFDEF _rx_functions
	goto	TFT_pressures_SAC			; tank pressure and SAC rate
 ELSE
	return								; not available without RX functions
 ENDIF
	dcfsnz	WREG,F						; 7:
	goto	TFT_gas_needs_ascent		; gas needs for ascent / cave return
	dcfsnz	WREG,F						; 8:
	goto	TFT_decoplan				; deco plan
	dcfsnz	WREG,F						; 9:
	goto	TFT_ceiling_GF_tissue		; ceiling, current GF and tissues
	dcfsnz	WREG,F						; 10:
	goto	TFT_CNS						; CNS values
	dcfsnz	WREG,F						; 11:
	goto	TFT_ppo2_ead_end_cns		; ppO2, END/EAD and CNS
	dcfsnz	WREG,F						; 12:
	return								; GF factors - static only
	dcfsnz	WREG,F						; 13:
	goto	TFT_clock_batt_surfpress	; clock, battery and surface pressure
	return								; active_customview = 0 -> do nothing

;-----------------------------------------------------------------------------

	global	surf_customview_toggle
surf_customview_toggle:
	bcf		switch_right				; clear button event
	incf	active_customview,F			; number of custom view to show

 IFDEF _compass
	movlw	.6							; index of surface custom view compass
	cpfseq	active_customview			; will compass be shown in custom view?
	call	I2C_sleep_compass			; NO - stop compass
 ENDIF

	movlw	d'10'						; max number of custom views in surface mode
	cpfsgt	active_customview			; max reached?
	bra		surf_customview_mask		; NO  - show
	movlw	.1							; YES - wrap around to 1st view
	movwf	active_customview			;     - ...
	;bra	surf_customview_mask		;     - show


	global	surf_customview_mask
surf_customview_mask:
	WIN_BOX_BLACK .50,surf_warning1_row-1, .0, surf_decotype_column-.1	; top, bottom, left, right
	WIN_TINY  surf_customview_title_column,surf_customview_title_row	; set title position
	WIN_COLOR color_greenish											; set title color

	movf	active_customview,W			; get custom view to show
	movff	WREG,customview_surfmode	; save number for later recall
	dcfsnz	WREG,F						; 1:
	bra		surf_customview_init_view1	; OC gas list
	dcfsnz	WREG,F						; 2:
	bra		surf_customview_init_view2	; CC dil list
	dcfsnz	WREG,F						; 3:
	bra		surf_customview_init_view3	; CC SP list
	dcfsnz	WREG,F						; 4:
	bra		surf_customview_init_view4	; custom text
	dcfsnz	WREG,F						; 5:
	bra		surf_customview_init_view5	; tissue diagram
	dcfsnz	WREG,F						; 6:
	bra		surf_customview_init_view6	; compass
	dcfsnz	WREG,F						; 7:
	bra		surf_customview_init_view7	; deco settings
	dcfsnz	WREG,F						; 8:
	bra		surf_customview_init_view8	; last dive info
	dcfsnz	WREG,F						; 9:
	bra		surf_customview_init_view9	; sensor mV readings
	dcfsnz	WREG,F						; 10:
	bra		surf_customview_init_view10	; tank data
	bra		surf_customview_init_view4	; default view after restart and loading of new firmware


surf_customview_init_view1:				; view 1: OC Gas list
	btfsc	FLAG_gauge_mode				; in gauge mode?
	bra		surf_customview_toggle		; YES - not available in gauge mode, goto next view
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		surf_customview_toggle		; YES - not available in apnoe mode, goto next view
 IFDEF _ccr_pscr
	btfss	FLAG_oc_mode				; in OC mode?
	bra		surf_customview_init_view1a	; NO  - (1)
 ENDIF
	STRCPY_TEXT_PRINT tGaslist			; YES - title of custom view / OC mode
 IFDEF _ccr_pscr
	bra		surf_customview_init_view1b	;     - continue with common part
surf_customview_init_view1a:
	STRCPY_TEXT_PRINT tDiveBailout		; (1) - title of custom view / CCR & pSCR mode
 ENDIF
surf_customview_init_view1b:
	call	TFT_standard_color			; set color
	call	TFT_gaslist_surfmode		; show gas list
	bra		customview_toggle_exit		; done


surf_customview_init_view2:				; view 2: CCR / pSCR diluent list
 IFDEF _ccr_pscr
	btfsc	FLAG_ccr_mode				; in CCR mode?
	bra		surf_customview_init_view2a	; YES - (1)
	btfsc	FLAG_pscr_mode				; in pSCR mode?
	bra		surf_customview_init_view2a	; YES - (1)
	bra		surf_customview_toggle		; NO  - not available if not in CCR or pSCR mode, goto next view
surf_customview_init_view2a:
	STRCPY_TEXT_PRINT tGaslistCC		; (1) - title of custom view
	call	TFT_standard_color			;     - set color
	call	TFT_dillist_surfmode		;     - show diluent list
	bra		customview_toggle_exit		;     - done
 ELSE
	bra		surf_customview_toggle		; not available without CCR/pSCR mode compiled in, goto next view
 ENDIF


surf_customview_init_view3:				; view 3: CC SP list
 IFDEF _ccr_pscr
	btfss	FLAG_ccr_mode				; in CCR mode?
	bra		surf_customview_toggle		; NO  - not available if not in CCR mode, goto next view
	STRCPY_TEXT_PRINT tFixedSetpoints	; YES - title of custom view
	call	TFT_standard_color			;     - set color
	call	TFT_splist_surfmode			;     - show setpoint list
	bra		customview_toggle_exit		;     - done
 ELSE
	bra		surf_customview_toggle		; not available without CCR/pSCR mode compiled in, goto next view
 ENDIF


surf_customview_init_view9:				; view 9: sensor mV at the surface
 IFDEF _external_sensor
	btfsc	FLAG_ccr_mode				; in CCR mode?
	bra		surf_customview_init_view9a	; YES - (1)
	btfsc	FLAG_pscr_mode				; in pSCR mode?
	bra		surf_customview_init_view9a	; YES - (1) 
	bra		surf_customview_toggle		; NO  - not available if not in CCR or pSCR mode, goto next view
surf_customview_init_view9a:
	movff	opt_ccr_mode,WREG			; (1) - get SP mode (0: fixed SP, 1: Sensor, 2: auto SP)
	sublw	.1							;     - opt_ccr_mode = 1 (sensor)?
	bnz		surf_customview_toggle		;       NO  - goto next view
	STRCPY_TEXT_PRINT tSensorMilliVolt	;       YES - title of custom view
	call	TFT_standard_color			;           - set color
	call	TFT_sensor_mV				;           - write sensor mV readings to screen 
	bra		customview_toggle_exit		;           - done
 ELSE
	bra		surf_customview_toggle		; not available without CCR/pSCR mode compiled in, goto next view
 ENDIF


surf_customview_init_view4:				; view 4: custom text
	call	TFT_standard_color			; set color
	call	TFT_custom_text				; show the custom text
	bra		customview_toggle_exit		; done


surf_customview_init_view5:				; view 5: tissue diagram
	btfsc	FLAG_gauge_mode				; in gauge mode?
	bra		surf_customview_toggle		; YES - not available in gauge mode, goto next view
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		surf_customview_toggle		; YES - not available in apnoe mode, goto next view
	call	TFT_standard_color			; set color
	call	TFT_surface_tissues			; show tissue diagram
	bra		customview_toggle_exit		; done


surf_customview_init_view6:				; view 6: compass
 IFDEF _compass
	call	I2C_init_compass			; start compass
	call	TFT_surface_compass_mask	; show compass mask
	bra		customview_toggle_exit		; done
 ELSE
	bra		surf_customview_toggle		; not available without compass compiled in, goto next view
 ENDIF


surf_customview_init_view7:				; view 7: deco settings
	btfsc	FLAG_gauge_mode				; in gauge mode?
	bra		surf_customview_toggle		; YES - not available in gauge mode, goto next view
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		surf_customview_toggle		; YES - not available in apnoe mode, goto next view
	call	TFT_surface_decosettings	; show all deco settings
	bra		customview_toggle_exit		; done


surf_customview_init_view8:				; view 8: last dive info
	call	TFT_standard_color			; set color
	call	TFT_surface_lastdive		; show last dive info
	bra		customview_toggle_exit		; done


surf_customview_init_view10:			; view 10: transmitter data / debug
 IFDEF _rx_functions
	btfss	tr_functions_activated		; TR functions activated?
	bra		surf_customview_toggle		; NO  - show next view in list
	STRCAT_PRINT "ID     bar  Volt"		; YES - title of custom view (none language-dependent)
	call	TFT_surface_tankdata		;     - show received data
	bra		customview_toggle_exit		;     - done
 ELSE
	bra		surf_customview_toggle		; not available without RX functions compiled in, goto next view
 ENDIF

;-----------------------------------------------------------------------------

	global	menuview_toggle
menuview_toggle:						; show main menu or the pre-menu
	bcf		switch_left					; clear button event
	movlw	divemode_timeout_premenu	; get timeout for dive mode pre-menu
	call	reset_timeout_time			; reset timeout
	bsf		dive_options_menu			; flag that the dive options menu is shown
	incf	active_premenu,F			; current number of pre-menu item
	movlw	d'10'						; max     number of pre-menu items
	cpfsgt	active_premenu				; max reached?
	bra		menuview_mask				; NO  - show item
	;bra	menuview_toggle_reset		; YES - reset selector

	global	menuview_toggle_reset
menuview_toggle_reset:					; timeout occurred, beyond max number of options, or item executed
	clrf	active_premenu				; reset pre-menu selector
	bcf		dive_options_menu			; the dive options menu is not shown anymore
menuview_mask:
	WIN_BOX_BLACK dm_premenu_row, dm_premenu_bot, dm_premenu_col, dm_premenu_rgt ; top, bottom, left, right
	tstfsz	active_premenu				; any pre-menu selected?
	bra		menuview_items				; YES - display menu item
	bcf		win_invert					; NO  - end inverse printing
	btfss	FLAG_apnoe_mode				;     - in apnoe mode?
	goto	TFT_show_temp_divemode		;       YES - restore temperature and done
	goto	TFT_standard_color			;       NO  - done
menuview_items:
	call	TFT_attention_color			; set color
	bsf		win_invert					; set inverse printing
	WIN_SMALL dm_premenu_col,dm_premenu_row
	movf	active_premenu,W			; get active pre-menu item
	dcfsnz	WREG,F
	bra		menuview_view_gaschange		; check if a better gas/diluent is advised and prompt for switching if yes
	dcfsnz	WREG,F
	bra		menuview_view1				; "Menu?"		(skipped in gauge and apnoe modes)
	dcfsnz	WREG,F
	bra		menuview_view2				; "Quit?"		(in simulation mode only)
	dcfsnz	WREG,F
	bra		menuview_view3				; "Sim-1m"		(in simulation mode only)
	dcfsnz	WREG,F
	bra		menuview_view4				; "Sim+1m"		(in simulation mode only)
	dcfsnz	WREG,F
	bra		menuview_view5				; "Quit?"		(in apnoe mode only)
	dcfsnz	WREG,F
	bra		menuview_view6				; "Reset Avr"	(in gauge mode only)
	dcfsnz	WREG,F
	bra		menuview_view7				; "Sim+5'"		(in simulation mode only)
	dcfsnz	WREG,F
	bra		menuview_view8				; "Course"		(only when compass is shown)
	dcfsnz	WREG,F
	bra		menuview_view9				; "Layout"		(offer alternative layout, aka blind mode)

menuview_exit:
	call	TFT_standard_color
	bcf		win_invert					; reset invert flag
	return								; active pre-menu = 0, i.e. show nothing


menuview_view_gaschange:
	btfsc	request_gaschange			; last gas change request executed yet?
	bra		menuview_toggle				; NO - call next option
 IFDEF _ccr_pscr
	btfsc	FLAG_oc_mode				; in OC mode?
	bra		menuview_view_gaschange_OC	; YES
	btfsc	bailout_mode				; in bailout?
	bra		menuview_view_gaschange_OC	; YES
menuview_view_gaschange_DIL:
	btfss	better_dil_available		; is the better diluent still available?
	bra		menuview_toggle				; NO - call next option
	movff	best_dil_number,PRODL		; number (1-5) of the "best diluent"
	bsf		is_diluent_menu				; setting up diluents
	bra		menuview_view_gaschange_com
 ENDIF
menuview_view_gaschange_OC:
	btfss	better_gas_available		; is the better gas still available?
	bra		menuview_toggle				; NO - call next option
	movff	best_gas_number,PRODL		; number (1-5) of the "best gas"
	bcf		is_diluent_menu				; setting up OC gases
menuview_view_gaschange_com:
	decf	PRODL,F						; (1-5) -> (0-4)
	bsf		short_gas_descriptions		; use short version of gaslist_strcat_gas_cd and gaslist_strcat_setpoint
	bsf		better_gas_hint				; color-code as best gas/diluent
	call	gaslist_strcat_gas_cd		; append gas description of gas #PRODL (0-4) to current string
	movlw	.5
	movwf	FSR2L						; point to 6th character (5 chars are used for the gas/dil description)
	STRCAT_PRINT "?"
	bra		menuview_exit				; done

menuview_view1:
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		menuview_toggle				; YES - goto next option
	btfsc	FLAG_gauge_mode				; NO  - in gauge mode?
	bra		menuview_toggle				;       YES - goto next option
	PUTC	"\xb7"						;       NO  - print '->' symbol
	STRCAT_TEXT_PRINT tDivePreMenu		;           - print "Menu?"
	bra		menuview_exit				;           - done

menuview_view2:
	btfss	simulatormode				; in simulator mode?
	bra		menuview_toggle				; NO  - goto next option
	STRCPY_TEXT_PRINT tQuitSim			; YES - print "Quit Simulation?"
	bra		menuview_exit				;     - done

menuview_view3:
	btfss	simulatormode				; in simulator mode?
	bra		menuview_toggle				; NO - goto next option
	STRCPY_PRINT "Sim\xb8"				; print down arrow for going down
	bra		menuview_exit				; done

menuview_view4:
	btfss	simulatormode				; in simulator mode?
	bra		menuview_toggle				; NO  - goto next option
	STRCPY_PRINT "Sim\xb9"				; YES - print up arrow for going up
	bra		menuview_exit				;     - done

menuview_view5:
	btfss	FLAG_apnoe_mode				; in apnoe mode?
	bra		menuview_toggle				; NO  - goto next option
	btfss	apnoe_at_surface			; YES - at the surface?
	bra		menuview_toggle				;       NO  - goto next option
	STRCPY_TEXT_PRINT tQuitSim			;       YES - print "Quit Apnea mode?"
	bra		menuview_exit				;           - done

menuview_view6:
	btfss	FLAG_gauge_mode				; in gauge mode?
	bra		menuview_toggle				; NO  - goto next option
	STRCPY_TEXT_PRINT tResetAvg			; YES - print "Reset Avg."
	bra		menuview_exit				;     - done

menuview_view7:
	btfss	simulatormode				; in simulator mode?
	bra		menuview_toggle				; NO  - goto next option
	btfsc	FLAG_gauge_mode				; YES - in gauge mode?
	bra		menuview_toggle				;       YES - goto next option
	btfsc	FLAG_apnoe_mode				;       NO  - in apnoe mode?
	bra		menuview_toggle				;             YES - goto next option
	STRCPY_PRINT "Sim+5'"				;             NO  - print "Sim+5'"
	bra		menuview_exit				;                 - done

menuview_view8:
 IFDEF _compass
	movlw	index_compass_dm			; index of compass view
	cpfseq	active_customview			; in compass view?
	bra		menuview_toggle				; NO  - goto next option
	STRCPY_TEXT_PRINT tSetHeading		; YES - print "Heading"
	bra		menuview_exit				;     - done
 ELSE
	bra		menuview_toggle				; not available without compass compiled in, goto next option
 ENDIF

menuview_view9:
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		menuview_toggle				; YES - goto next option
	STRCPY_TEXT_PRINT tDiveLayout		; NO  - print "Layout"
	bra		menuview_exit				;     - done

;-----------------------------------------------------------------------------

; Show next dive mode custom view (and delete this flag)
	global	dive_customview_toggle
dive_customview_toggle:
	incf	active_customview,F			; increment number of custom view to show

	movlw	index_compass_dm			; index of custom view compass
	cpfseq	active_customview			; will compass be shown in custom view?
	call	I2C_sleep_compass			; NO - stop compass

	movlw	index_cv_dm_max				; highest index in use in dive mode custom view
	cpfsgt	active_customview			; max reached?
	bra		dive_customview_mask		; NO  - show
	clrf	active_customview			; YES - reset to zero (zero = no custom view)
	;bra	dive_customview_mask		;     - show

;----------------------------------------------------------------------------------
; Jump table for initialization of the every-second tasks in custom view area (dive mode)
;
; Attention: the ordering must be in line with the every-second update jump table
;            and the index numbers defined in hwos.inc!
;
	global	dive_customview_mask
dive_customview_mask:
	; clear custom view area in dive mode
	WIN_BOX_BLACK dm_customview_row, dm_customview_bot-.2, dm_customview_column, dm_customview_rgt ; top, bottom, left, right
	movf	active_customview,W			; get custom view to show
	dcfsnz	WREG,F						; 1:
	bra		init_avr_stopwatch			; average depth and stopwatch
	dcfsnz	WREG,F						; 2:
	bra		init_TFT_dive_compass		; compass
	dcfsnz	WREG,F						; 3:
	bra		init_ppo2_sensors			; ppO2 sensors
	dcfsnz	WREG,F						; 4:
	bra		init_sensor_check			; sensor check
	dcfsnz	WREG,F						; 5:
	bra		init_pscr_info				; pSCR data
	dcfsnz	WREG,F						; 6:
	bra		init_pressures_SAC			; tank pressure and SAC rate
	dcfsnz	WREG,F						; 7:
	bra		init_gas_needs_ascent		; gas needs for ascent / cave return
	dcfsnz	WREG,F						; 8:
	bra		init_decoplan				; deco plan
	dcfsnz	WREG,F						; 9:
	bra		init_ceiling_GF_tissue		; ceiling, current GF and tissues
	dcfsnz	WREG,F						; 10:
	bra		init_CNS					; CNS values
	dcfsnz	WREG,F						; 11:
	bra		init_ppo2_ead_end_cns		; ppO2, END/EAD and CNS
	dcfsnz	WREG,F						; 12:
	bra		init_gf_factors				; GF factors
	dcfsnz	WREG,F						; 13:
	bra		init_clock_batt_surfpress	; clock, battery and surface pressure
	bra		customview_toggle_exit		; no view (blank screen in custom view area)


init_ppo2_sensors:
 IFDEF _external_sensor
	bsf		trigger_temp_changed		; fake a change of the temperature to have the resettable dive time overwritten which was shown with the compass view
	btfsc	FLAG_ccr_mode				; in CC mode?
	bra		customview_init_view1a		; YES - (1)
	btfsc	FLAG_pscr_mode				; in pSCR mode?
	bra		customview_init_view1a		; YES - (1)
	bra		dive_customview_toggle		; NO to both, goto next view
customview_init_view1a:
	btfsc	analog_o2_input				; (1) - do we have an analog input?
	bra		customview_init_view1b		;       YES - (2)
	btfsc	s8_digital_avail			;       NO  - do we have a digital S8 interface?
	bra		customview_init_view1b		;             YES - (2)
	btfss	optical_input				;             NO  - do we have an optical input?
	bra		dive_customview_toggle		;                   NO  - goto next view
										;                   YES - (2)
customview_init_view1b:
	call	TFT_ppo2_sensors_mask		; (2) - mask for ppO2 sensors
	call	TFT_ppo2_sensors			;     - data for ppO2 sensors
	bra		customview_toggle_exit		;     - done
 ELSE
	bra		dive_customview_toggle		; not available without external sensors, got next view
 ENDIF

init_avr_stopwatch:
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		dive_customview_toggle		; YES - goto next view
	call	TFT_avr_stopwatch_mask		; NO  - mask for average depth and stopwatch
	call	TFT_avr_stopwatch			;     - data for average depth and stopwatch
	bra		customview_toggle_exit		;     - done

init_decoplan:
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		dive_customview_toggle		; YES - goto next view
	btfsc	FLAG_gauge_mode				; NO  - in gauge mode?
	bra		dive_customview_toggle		;       YES - goto next view
	call	TFT_decoplan_mask			;       NO  - mask for deco plan
	call	TFT_decoplan				;           - data for deco plan
	bra		customview_toggle_exit		;           - done

init_clock_batt_surfpress:
	call	TFT_clock_batt_surfpress_mask	; mask for clock, battery and surface pressure
	call	TFT_clock_batt_surfpress		; data for clock, battery and surface pressure
	bra		customview_toggle_exit			; done

init_gf_factors:
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		dive_customview_toggle		; YES - goto next view
	btfsc	FLAG_gauge_mode				; NO  - in gauge mode?
	bra		dive_customview_toggle		;       YES - call next view
	TSTOSS	char_I_deco_model			;       NO  - in GF mode (0 = ZH-L16, 1 = ZH-L16-GF)?
	bra		dive_customview_toggle		;             NO  - no GF info for non-GF modes
	call	TFT_gf_factors_mask			;             YES - mask for GF factors (static only)
	bra		customview_toggle_exit		;                 - done

init_TFT_dive_compass:					; compass
 IFDEF _compass
	call	I2C_init_compass			; start compass
	call	TFT_dive_compass_mask		; show compass mask
	bra		customview_toggle_exit		; done
 ELSE
	bra		dive_customview_toggle		; not available without compass compiled in, goto next view
 ENDIF

init_pressures_SAC:						; tank pressure and SAC rate
 IFDEF _rx_functions
	btfss	tr_functions_activated		; TR functions activated?
	bra		dive_customview_toggle		; NO  - goto next view
	call	TFT_pressures_SAC_mask		; YES - mask for pressures and SAC
	call	TFT_pressures_SAC			;     - data for pressures and SAC
	bra		customview_toggle_exit		;     - done
 ELSE
	bra		dive_customview_toggle		; not available without RX functions, got next view
 ENDIF

init_CNS:								; CNS at end of dive
	btfsc	FLAG_gauge_mode				; in gauge mode?
	bra		dive_customview_toggle		; YES - call next view
	btfsc	FLAG_apnoe_mode				; NO  - in apnoe mode?
	bra		dive_customview_toggle		;       YES - call next view
	call	TFT_CNS_mask				;       NO  - mask for CNS values
	call	TFT_CNS						;           - data for CNS values
	bra		customview_toggle_exit		;           - done

init_ceiling_GF_tissue:					; ceiling, tissues and current GF
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		dive_customview_toggle		; YES - goto next view
	btfsc	FLAG_gauge_mode				; NO  - in gauge mode?
	bra		dive_customview_toggle		;       YES - call next view
	call	TFT_ceiling_GF_tissue_mask	;       NO  - mask for ceiling, current GF and tissues
	call	TFT_ceiling_GF_tissue		;           - data for ceiling, current GF and tissues
	bra		customview_toggle_exit		;           - done

init_sensor_check:						; sensor check
 IFDEF _ccr_pscr
	btfss	FLAG_ccr_mode				; in CCR mode?
	bra		dive_customview_toggle		; NO  - goto next view
	call	TFT_sensor_check_mask		; YES - mask for sensor check
	call	TFT_sensor_check			;     - data for sensor check
	bra		customview_toggle_exit		;     - done
 ELSE
	bra		dive_customview_toggle		; not available without CCR mode compiled in, goto next view
 ENDIF

init_ppo2_ead_end_cns:					; ppO2, END/EAD and CNS
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		dive_customview_toggle		; YES - goto next view
	btfsc	FLAG_gauge_mode				; NO  - in gauge mode?
	bra		dive_customview_toggle		;       YES - goto next view
	call	TFT_ppo2_ead_end_cns_mask	;       NO  - mask for ppO2, END/EAD and CNS
	call	TFT_ppo2_ead_end_cns		;           - data for ppO2, END/EAD and CNS
	bra		customview_toggle_exit		;           - done

init_pscr_info:							; pSCR information
 IFDEF _ccr_pscr
	btfss	FLAG_pscr_mode				; in pSCR mode?
	bra		dive_customview_toggle		; NO  - goto next view
	call	TFT_pscr_info_mask			; YES - mask for pSCR info
	call	TFT_pscr_info				;     - data for pSCR info
	bra		customview_toggle_exit		;     - done
 ELSE
	bra		dive_customview_toggle		; not available without CCR / pSCR mode, goto next view
 ENDIF

init_gas_needs_ascent:					; gas needs for ascent
	btfsc	FLAG_apnoe_mode				; in apnoe mode?
	bra		dive_customview_toggle		; YES - goto next view
	btfsc	FLAG_gauge_mode				; NO  - in gauge mode?
	bra		dive_customview_toggle		;       YES - goto next view
	TSTOSS	opt_calc_asc_gasvolume		;       NO  - check if gas volume calculation is switched on
	bra		dive_customview_toggle		;             NO  - goto next view
	call	TFT_gas_needs_ascent_mask	;             YES - mask for gas needs ascent
	call	TFT_gas_needs_ascent		;                 - data for gas needs ascent
	bra		customview_toggle_exit		;                 - done

customview_toggle_exit:
	bcf		request_next_custview		; clear request flag
	return								; done

;-----------------------------------------------------------------------------

	END