annotate src/divemode.asm @ 608:d866684249bd

work on 2.99 stable
author heinrichsweikamp
date Mon, 07 Jan 2019 21:13:43 +0100
parents 8b250afb8bdd
children c40025d8e750
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3 ; File divemode.asm REFACTORED VERSION V2.99e
0
heinrichsweikamp
parents:
diff changeset
4 ;
heinrichsweikamp
parents:
diff changeset
5 ; Divemode
heinrichsweikamp
parents:
diff changeset
6 ;
heinrichsweikamp
parents:
diff changeset
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
heinrichsweikamp
parents:
diff changeset
8 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
9 ; HISTORY
heinrichsweikamp
parents:
diff changeset
10 ; 2011-08-15 : [mH] moving from OSTC code
heinrichsweikamp
parents:
diff changeset
11
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
12 #include "hwos.inc" ; mandatory header
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
13 #include "shared_definitions.h" ; mailbox from/to p2_deco.c
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
14 #include "tft_outputs.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
15 #include "strings.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
16 #include "tft.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
17 #include "eeprom_rs232.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
18 #include "isr.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
19 #include "math.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
20 #include "wait.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
21 #include "customview.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
22 #include "start.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
23 #include "adc_lightsensor.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
24 #include "ghostwriter.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
25 #include "i2c.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
26 #include "calibrate.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
27 #include "convert.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
28
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
29 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
30 #include "rx_ops.inc"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
31 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
32
0
heinrichsweikamp
parents:
diff changeset
33
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
34 extern TFT_dive_compass_heading
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
35 extern do_line_menu
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
36 extern do_main_divemenu
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
37 extern option_save_all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
38 extern init_recording_params
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
39
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
40
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
41 ;---- Private local variables -------------------------------------------------
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
42
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
43 CBLOCK local1 ; max size is 16 Byte !!!
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
44 apnoe_timeout_counter ; timeout counter for apnoe mode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
45 sensor_setpoint ; sensor ppo2 in 0.01bar for deco routine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
46 check_gas_num ; used in search for best gas/dil: current gas/dil number (1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
47 check_gas_depth ; used in search for best gas/dil: current gas/dil change depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
48 check_gas_type ; used in search for best gas/dil: current gas/dil type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
49 check_gas_O2_ratio ; used in search for best gas/dil: current gas/dil O2 ratio
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
50 best_gas_num ; used in search for best gas/dil: best gas/dil number (1-5) CAUTION: there is also a variable named best_gas_number !
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
51 best_gas_depth ; used in search for best gas/dil: best gas/dil change depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
52 ppO2_min ; used in search for best gas/dil: minimum ppO2 required
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
53 ppO2_max ; used in search for best gas/dil: maximum ppO2 allowed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
54 ENDC ; used: 10 byte, remaining: 6 byte
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
55
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
56 CBLOCK local2 ; max size is 16 Byte !!!
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
57 average_depth_hold:4 ; used to calculate the resettable average depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
58 average_depth_hold_total:4 ; used to calculate the absolute average depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
59 ENDC ; used: 8 byte, remaining: 8 byte
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
60
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
61 dmode CODE
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
62
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
63 ;=============================================================================
0
heinrichsweikamp
parents:
diff changeset
64
heinrichsweikamp
parents:
diff changeset
65 global diveloop
heinrichsweikamp
parents:
diff changeset
66 diveloop:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
67 banksel common
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
68 call speed_normal
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
69 call diveloop_boot ; boot tasks for all modes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
70
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
71 ; startup tasks for all modes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
72 call TFT_boot ; initialize TFT (includes clear screen)
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 606
diff changeset
73 movlw CCP1CON_VALUE ; See hwos.inc
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 606
diff changeset
74 movwf CCP1CON ; Power-on backlight
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 606
diff changeset
75
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
76 bsf FLAG_TFT_divemode_mask ; request display of dive mode mask
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
77
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
78 movff customview_divemode,menupos3; reload last custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
79 bsf redraw_custview_mask ; request redraw of last custom view
0
heinrichsweikamp
parents:
diff changeset
80
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
81 btfsc FLAG_apnoe_mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
82 bsf realdive ; set realdive flag in apnoe mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
83
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
84 btfsc FLAG_apnoe_mode ; done for apnoe or gauge mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
85 bra diveloop_loop_start
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
86 btfsc FLAG_gauge_mode ; done for apnoe or gauge mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
87 bra diveloop_loop_start
0
heinrichsweikamp
parents:
diff changeset
88
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
89 ; Deco modes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
90 bsf FLAG_TFT_active_gas_divemode; request display of gas and setpoint
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
91 bsf FLAG_TFT_display_ndl_mask ; request display of "NDL"
0
heinrichsweikamp
parents:
diff changeset
92
heinrichsweikamp
parents:
diff changeset
93 ; +@5 init
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
94 clrf WREG ; WAIT marker: display "---"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
95 movff WREG,char_I_sim_advance_time
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
96 movff WREG,int_O_alternate_ascenttime+0
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
97 bsf WREG,int_not_yet_computed
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
98 bsf WREG,int_invalid_flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
99 movff WREG,int_O_alternate_ascenttime+1
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
100
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
101 diveloop_loop_start:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
102 btfsc FLAG_TFT_divemode_mask
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
103 call TFT_divemode_mask
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
104 btfsc FLAG_TFT_display_ndl_mask
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
105 call TFT_display_ndl_mask
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
106
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
107 diveloop_loop: ; the dive loop starts here
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
108 btfss quarter_second_update
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
109 bra diveloop_loop1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
110
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
111 ; tasks any 1/4 second, any mode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
112 bcf quarter_second_update ; clear flag
0
heinrichsweikamp
parents:
diff changeset
113
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
114 btfsc alternative_divelayout ; in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
115 bra diveloop_loop1 ; YES - no compass in alternative layout mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
116 movlw index_compass_dm ; NO - index of compass view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
117 cpfseq menupos3 ; - in compass view?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
118 bra diveloop_loop1 ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
119 call TFT_dive_compass_heading ; YES - update compass heading value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
120 bsf FLAG_TFT_temp_divemode ; - redraw temperature (is slightly affected from compass heading arrow)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
121
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
122 diveloop_loop1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
123 btfss onesecupdate ; next second begun?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
124 bra diveloop_loop3 ; NO
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
125
0
heinrichsweikamp
parents:
diff changeset
126 ; tasks any new second...
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
127 bcf onesecupdate ; one seconds update, clear flag here in case it's set again in ISR before all tasks are done.
178
39f6c07ce2f6 BUGFIX: Average depth computation
heinrichsweikamp
parents: 176
diff changeset
128
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
129 ; ###-- USE FOR DEBUG ONLY - RESETS RX CIRCUITRY --###
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
130 ; bsf LEDg
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
131 ; ###----------------------------------------------###
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
132
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
133 ; compute current depth in meters
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
134 SAFE_2BYTE_COPY rel_pressure,xA
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
135 movlw .100
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
136 movwf xB+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
137 clrf xB+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
138 call div16x16 ; xC = xA / xB, xC+0 now holds depth in full meters
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
139 movff xC+0,curr_depth ; store result in curr_depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
140
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
141 ; compute ambient pressure / 10, will be needed later
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
142 SAFE_2BYTE_COPY amb_pressure,xA
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
143 movlw .10
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
144 movwf xB+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
145 clrf xB+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
146 call div16x16 ; xC = xA / xB = p_amb / 10
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
147 movff xC+0,amb_press_10+0 ; store result for later use
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
148 movff xC+1,amb_press_10+1 ; ...
0
heinrichsweikamp
parents:
diff changeset
149
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
150 ; display depth based on full seconds interval (nicer blinking)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
151 btfss alternative_divelayout
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
152 rcall TFT_output4_normal
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
153 btfsc alternative_divelayout
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
154 rcall TFT_output4_alternative
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
155
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
156 btfsc FLAG_apnoe_mode ; in Apnoe mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
157 bra diveloop_loop1_nonedeco ; YES - do Apnoe mode every second tasks
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
158
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
159 ; tasks any new second - only for deco modes
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
160 diveloop_loop1_deco:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
161 bsf FLAG_TFT_divemins ; display (new) dive time!
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
162 btfsc show_safety_stop ; show the safety stop?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
163 bsf FLAG_TFT_show_safety_stop ; YES - show/delete if done
0
heinrichsweikamp
parents:
diff changeset
164
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
165 btfss alternative_divelayout
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
166 rcall TFT_output1_normal
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
167 btfsc alternative_divelayout
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
168 rcall TFT_output1_alternative
0
heinrichsweikamp
parents:
diff changeset
169
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
170 call divemode_check_for_warnings ; check for warnings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
171
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
172 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
173 btfss FLAG_tr_enabled ; TR functions enabled?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
174 bra diveloop_loop1_deco1 ; NO - skip pressure readings part
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
175 call get_pressure_readings ; YES - get pressure readings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
176 call configure_sac_calculation ; - set up SAC calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
177 diveloop_loop1_deco1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
178 ENDIF
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
179
605
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
180 call calc_deco_divemode ; calculate decompression and set resulting display flags
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
181
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
182 btfss alternative_divelayout
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
183 rcall TFT_output2_normal
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
184 btfsc alternative_divelayout
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
185 rcall TFT_output2_alternative
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
186 bra diveloop_loop2 ; continue with common tasks
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
187
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
188 ; tasks any new second - only for apnoe mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
189 diveloop_loop1_nonedeco:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
190 rcall divemode_apnoe_tasks ; 1 sec. apnoe tasks
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
191 call customview_second ; do every-second tasks for the custom view area
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
192 ;bra diveloop_loop2 ; common tasks
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
193
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
194 ; continue tasks any new second, any mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
195 diveloop_loop2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
196 btfsc redraw_custview_mask ; shall we redraw the custom view mask?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
197 call customview_mask ; YES - redraw custom view mask
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
198
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
199 rcall timeout_divemode ; ** menu timeout? ** - this routine sets the required flags
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
200 rcall set_dive_modes ; tests if depth > threshold
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
201 rcall set_min_temp ; store min. temp if required (future hardware will need this to be checked 1/second...)
0
heinrichsweikamp
parents:
diff changeset
202
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
203 btfsc oneminupdate ; one minute tasks
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
204 rcall update_divemode60 ; update clock, etc.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
205
606
heinrichsweikamp
parents: 605
diff changeset
206 bsf FLAG_TFT_active_gas_divemode; have the gas and setpoint redrawn on every second to update setpoint display, animate the blinking, etc.
0
heinrichsweikamp
parents:
diff changeset
207
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
208 btfss alternative_divelayout
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
209 rcall TFT_output3_normal
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
210 btfsc alternative_divelayout
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
211 rcall TFT_output3_alternative
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
212
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
213 ; ###-- USE FOR DEBUG ONLY - RESETS RX CIRCUITRY --###
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
214 ; bcf LEDg
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
215 ; ###----------------------------------------------###
0
heinrichsweikamp
parents:
diff changeset
216
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
217 ; tasks any round, any mode
0
heinrichsweikamp
parents:
diff changeset
218 diveloop_loop3:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
219 call test_switches_divemode ; check switches in dive mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
220
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
221 global diveloop_loop4
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
222 diveloop_loop4: ; menu-exit returns here...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
223 btfsc toggle_customview ; next view?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
224 call customview_toggle ; YES - show next custom view (and delete this flag)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
225
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
226 btfsc divemode_gaschange ; gas switch flag set?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
227 call gas_switched_common ; YES
0
heinrichsweikamp
parents:
diff changeset
228
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
229 btfsc toggle_gf ; toggle GF/aGF?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
230 rcall divemodemode_togglegf ; YES
0
heinrichsweikamp
parents:
diff changeset
231
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
232 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
233 btfsc toggle_turn_dive ; toggle dive turned?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
234 rcall divemodemode_toggleturn ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
235 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
236
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
237 btfsc FLAG_set_marker ; shall set a marker?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
238 call set_logbook_marker ; YES
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
239
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
240 btfsc store_sample ; shall store new sample?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
241 call store_dive_data ; YES - store profile data
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
242
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
243 btfss divemode ; dive finished?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
244 goto ghostwriter_end_dive ; YES - dive finished!
83
eb72c8865f47 Test with graphic compass
heinrichsweikamp
parents: 69
diff changeset
245
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
246 btfsc pressure_refresh ; new pressure available?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
247 rcall set_max_depth ; YES - update max. depth if required
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
248 btfsc pressure_refresh ; new pressure available?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
249 bsf FLAG_TFT_depth ; YES - update depth
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
250 bcf pressure_refresh ; clear flag
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
251
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
252 btfsc temp_changed ; temperature changed?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
253 bsf FLAG_TFT_temp_divemode ; YES - display temperature
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
254
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
255 IFDEF _screendump
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
256 btfsc enable_screen_dumps ; screen dump function enabled?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
257 call TFT_dump_screen_check ; YES - check if requested and do it
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
258 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
259
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
260 bra diveloop_loop ; loop the dive mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
261
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
262 ;--------------------------------------------------------------------------------------------------------
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
263
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
264 TFT_output1_normal: ; beginning of any new second - only for deco modes
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
265 btfsc FLAG_TFT_divemode_mask
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
266 call TFT_divemode_mask
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
267 btfsc FLAG_TFT_divemins
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
268 call TFT_divemins ; display (new) dive time!
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
269 call customview_second ; do every-second tasks for the custom view area (in sync with the dive time) mH
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
270 btfsc FLAG_TFT_show_safety_stop
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
271 call TFT_show_safety_stop ; show safety stop
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
272 btfsc FLAG_TFT_clear_safety_stop
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
273 call TFT_clear_safety_stop ; clear safety stop
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
274 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
275
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
276 TFT_output1_alternative: ; beginning of any new second - only for deco modes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
277 btfsc FLAG_TFT_divemode_mask_alt
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
278 call TFT_divemode_mask_alternative ; alternative mask
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
279 btfsc FLAG_TFT_divemins
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
280 call TFT_divemins_alternative ; display (new) divetime!
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
281 call customview_alternative_second ; do every-second tasks for the custom view area (in sync with the dive time) mH
588
bf0c76e9b01b Sync safety stop countdown output
heinrichsweikamp
parents: 583
diff changeset
282 btfsc FLAG_TFT_big_deco_alt
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
283 call TFT_big_deco_alt ; big deco, also manages alternative safety stop thus moved to first wave of outputs [rl]
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
284 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
285
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
286 TFT_output2_normal: ; any new second - only for deco modes
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
287 btfsc FLAG_TFT_display_ndl_mask
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
288 call TFT_display_ndl_mask
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
289 btfsc FLAG_TFT_display_ndl
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
290 call TFT_display_ndl
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
291 btfsc FLAG_TFT_display_deko_mask
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
292 call TFT_display_deko_mask
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
293 btfsc FLAG_TFT_display_deko
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
294 call TFT_display_deko
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
295 btfsc FLAG_TFT_display_tts
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
296 call TFT_display_tts
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
297 return
0
heinrichsweikamp
parents:
diff changeset
298
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
299 TFT_output2_alternative: ; any new second - only for deco modes
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
300 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
301
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
302 TFT_output3_normal: ; tasks any new second, any mode, after deco calculations
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
303 btfsc FLAG_TFT_max_depth
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
304 call TFT_max_depth ; use normal max. depth
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
305 btfsc FLAG_TFT_divemode_warning
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
306 call TFT_divemode_warning
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
307 btfsc FLAG_TFT_divemode_warning_clear
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
308 call TFT_divemode_warning_clear
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
309 btfsc FLAG_TFT_dive_warning_text_clear
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
310 call TFT_clear_warning_text ; clear complete warnings area
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
311 btfsc FLAG_TFT_dive_warning_text_clr2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
312 call TFT_clear_warning_text_2nd_row ; clear 2nd row of warnings
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
313 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
314
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
315 TFT_output3_alternative: ; tasks any new second
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
316 btfsc FLAG_TFT_max_depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
317 call TFT_max_depth_alternative ; big max. depth
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
318 btfsc FLAG_TFT_dive_warning_text_clear
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
319 call TFT_clear_warning_text ; clear complete warnings area (in alt mode only 2nd row...)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
320 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
321
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
322 TFT_output4_normal: ; tasks any round, any mode, before deco calculations (stable timebase)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
323 btfsc FLAG_TFT_depth
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
324 call TFT_depth ; display depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
325 btfsc FLAG_TFT_active_gas_divemode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
326 call TFT_active_gas_divemode ; display gas/setpoint
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
327 btfsc FLAG_TFT_temp_divemode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
328 call TFT_temp_divemode ; update temperature
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
329 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
330
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
331 TFT_output4_alternative: ; tasks any round, any mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
332 btfsc FLAG_TFT_depth
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
333 call TFT_depth ; display new depth
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
334 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
335
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
336
0
heinrichsweikamp
parents:
diff changeset
337 ;--------------------------------------------------------------------------------------------------------
heinrichsweikamp
parents:
diff changeset
338
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
339 divemode_apnoe_tasks: ; 1 sec. apnoe tasks
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
340 call TFT_display_apnoe_descent ; show descent timer
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
341 call TFT_max_depth ; use normal max. depth
0
heinrichsweikamp
parents:
diff changeset
342
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
343 btfsc divemode2 ; time running?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
344 bra divemode_apnoe_tasks2 ; YES - new descent, reset data if flag is set
0
heinrichsweikamp
parents:
diff changeset
345
heinrichsweikamp
parents:
diff changeset
346 rcall apnoe_calc_maxdepth
heinrichsweikamp
parents:
diff changeset
347 call TFT_display_apnoe_surface
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
348 call TFT_display_apnoe_last_max ; show last max. depth
0
heinrichsweikamp
parents:
diff changeset
349 incf apnoe_surface_secs,F
heinrichsweikamp
parents:
diff changeset
350 movlw d'60'
heinrichsweikamp
parents:
diff changeset
351 cpfseq apnoe_surface_secs
heinrichsweikamp
parents:
diff changeset
352 bra divemode_apnoe_tasks1
heinrichsweikamp
parents:
diff changeset
353 clrf apnoe_surface_secs
heinrichsweikamp
parents:
diff changeset
354 incf apnoe_surface_mins,F
heinrichsweikamp
parents:
diff changeset
355
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
356 divemode_apnoe_tasks1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
357 bcf FLAG_active_descent ; clear flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
358 btfsc divemode2 ; time running?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
359 return ; YES - return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
360 bsf FLAG_active_descent ; set flag
0
heinrichsweikamp
parents:
diff changeset
361 return
heinrichsweikamp
parents:
diff changeset
362
heinrichsweikamp
parents:
diff changeset
363 divemode_apnoe_tasks2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
364 btfss FLAG_active_descent ; are we descending?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
365 return ; NO - we are at the surface
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
366 rcall apnoe_calc_maxdepth ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
367 call TFT_apnoe_clear_surface ; clear surface timer
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
368 clrf apnoe_timeout_counter ; delete timeout
0
heinrichsweikamp
parents:
diff changeset
369 clrf apnoe_surface_secs
heinrichsweikamp
parents:
diff changeset
370 clrf apnoe_surface_mins
heinrichsweikamp
parents:
diff changeset
371 clrf apnoe_secs
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
372 clrf apnoe_mins ; reset descent time
0
heinrichsweikamp
parents:
diff changeset
373 movlw .0
heinrichsweikamp
parents:
diff changeset
374 movff WREG,max_pressure+0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
375 movff WREG,max_pressure+1 ; reset max. depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
376 bcf FLAG_active_descent ; clear flag
0
heinrichsweikamp
parents:
diff changeset
377 return
heinrichsweikamp
parents:
diff changeset
378
heinrichsweikamp
parents:
diff changeset
379 global apnoe_calc_maxdepth
heinrichsweikamp
parents:
diff changeset
380 apnoe_calc_maxdepth:
heinrichsweikamp
parents:
diff changeset
381 movff apnoe_max_pressure+0,sub_a+0
heinrichsweikamp
parents:
diff changeset
382 movff apnoe_max_pressure+1,sub_a+1
heinrichsweikamp
parents:
diff changeset
383 movff max_pressure+0,sub_b+0
heinrichsweikamp
parents:
diff changeset
384 movff max_pressure+1,sub_b+1
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
385 call subU16 ; sub_c = sub_a - sub_b
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
386 ; apnoe_max_pressure < max_pressure -> neg_flag=1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
387 ; max_pressure <= apnoe_max_pressure -> neg_flag=0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
388 btfss neg_flag
0
heinrichsweikamp
parents:
diff changeset
389 return
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
390 ;apnoe_max_pressure<max_pressure
0
heinrichsweikamp
parents:
diff changeset
391 movff max_pressure+0,apnoe_max_pressure+0
heinrichsweikamp
parents:
diff changeset
392 movff max_pressure+1,apnoe_max_pressure+1
heinrichsweikamp
parents:
diff changeset
393 return
heinrichsweikamp
parents:
diff changeset
394
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
395 ; --------------------------------------------------------------------------------------
0
heinrichsweikamp
parents:
diff changeset
396
605
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
397 calc_deco_divemode:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
398 btfss FLAG_gauge_mode ; in gauge mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
399 rcall calc_deko_engine ; NO - do deco calculations
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
400
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
401 ; Increment the time accumulators used for calculating the average depths.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
402 ; This done here and not in the ISR to guarantee synchronism between time
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
403 ; and depth accumulator incrementing.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
404 infsnz average_divesecs+0,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
405 incf average_divesecs+1,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
406 infsnz average_divesecs_total+0,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
407 incf average_divesecs_total+1,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
408
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
409 btg onesectoggle ; toggle the one-second toggle bit
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
410 btfss onesectoggle ; toggle bit set?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
411 bra calc_deko_divemode2 ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
412 ;bra calc_deko_divemode1 ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
413
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
414 calc_deko_divemode1: ; every-2-seconds tasks, 1st phase
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
415 ; call TFT_debug_output ; optional debug output
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
416 btfsc FLAG_gauge_mode ; in gauge mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
417 return ; YES - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
418 goto check_gas_best ; NO - checks if a better gas should be selected (by user) and return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
419
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
420 calc_deko_divemode2: ; every-2-seconds tasks, 2nd phase
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
421 call calc_average_depth ; calculate average depth
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
422 call calc_velocity ; calculate vertical velocity and display if > threshold (every two seconds)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
423 goto set_reset_safety_stop ; set/reset flags for safety stop and return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
424
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
425
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
426 calc_deko_engine:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
427 btfsc FLAG_ccr_mode ; in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
428 call check_dive_autosp ; YES - check for Auto-SP
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
429
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
430 btfsc FLAG_ccr_mode ; in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
431 rcall calc_deko_divemode_sensor ; YES - do sensor data acquisition if applicable by OSTC model
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
432
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
433 btfsc FLAG_pscr_mode ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
434 rcall calc_deko_divemode_sensor ; YES - do sensor data acquisition if applicable by OSTC model
0
heinrichsweikamp
parents:
diff changeset
435
195
bca0f054f023 allow auto-return from setpoint fallback
heinrichsweikamp
parents: 193
diff changeset
436
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
437 ; check deco engine state and switch between normal and alternative plan calculations
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
438 ;
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
439 ; Remark: Any reconfigurations done here do only affect the ascent & deco calculation settings,
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
440 ; not the settings for the calculations done on the real tissues. The later ones are only
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
441 ; altered in case of a gas change, or in case of a real bailout or switchback to setpoint
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
442 ; or sensor, respectively.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
443 ; In case of a gas change or real bailout/switchback, the settings for the deco calculations
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
444 ; are also changed to match the settings for the real tissues. This is done on signal through
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
445 ; 'divemode_gaschange' and will also leave the deco engine status in state as if having done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
446 ; the alternative plan last.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
447
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
448 ; get working copies of char_O_main_status and char_O_deco_status
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
449 movff char_O_main_status,hi ; get char_O_main_status into hi
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
450 movff char_O_deco_status,lo ; get char_O_deco_status into lo
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
451
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
452 ; check state of deco calculations
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
453 btfsc hi,DECO_COMPLETED_NORM ; finished calculations for normal plan?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
454 bra calc_deko_engine_alt ; YES - do an alternative plan next (or a normal one with more features enabled)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
455 btfsc hi,DECO_COMPLETED_ALT ; finished calculations for alternative plan?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
456 bra calc_deko_engine_norm ; YES - do a normal plan next
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
457 bra calc_deko_engine_cont ; NO to both - continue calculations / do first invocation in INIT mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
458
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
459 calc_deko_engine_norm:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
460 ; Last cycle did an alternative plan, or the deco engine has been restarted because of a gas change etc.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
461 ; --> Reconfigure to normal plan for next computation cycle.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
462 bcf lo,DECO_PLAN_FLAG ; clear flag for alternative plan to do a normal plan next
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
463 bcf lo,DECO_ASCENT_FLAG ; clear flag for delayed ascent calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
464 bcf lo,DECO_VOLUME_FLAG ; clear flag for gas needs calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
465 bcf lo,DECO_BAILOUT_FLAG ; clear flag for bailout mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
466 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
467 bcf hi,DECO_CAVE_MODE ; clear flag for cave mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
468 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
469
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
470 btfsc FLAG_ccr_mode ; in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
471 bra calc_deko_engine_norm_loop ; YES - reload diluents and reconfigure CCR mode if not in bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
472 btfsc FLAG_pscr_mode ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
473 bra calc_deko_engine_norm_loop ; YES - reload diluents and reconfigure pSCR mode if not in bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
474 ;bra calc_deko_engine_norm_OC ; neither in CCR nor pSCR mode, so reload OC gases and reconfigure OC mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
475 ; (first cycle omits gas needs calculation for faster first deco results)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
476 calc_deko_engine_norm_OC:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
477 movff active_gas,WREG ; get current OC gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
478 call deco_setup_oc_gases_pre ; set up deco calculations in OC mode with OC gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
479 bra calc_deko_engine_start ; start deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
480
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
481 calc_deko_engine_norm_loop: ; switch to loop calculation if not in a real bailout situation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
482 btfsc FLAG_bailout_mode ; check if a real bailout situation is present
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
483 bra calc_deko_engine_norm_OC ; YES - revert to OC mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
484 ; NO - switch to loop calculation:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
485 movff active_dil,WREG ; - get current diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
486 call deco_setup_cc_diluents_pre ; - set up deco calculations in CCR/pSCR mode with diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
487 bra calc_deko_engine_start ; - start deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
488
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
489 calc_deko_engine_alt:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
490 ; A normal plan was computed in the last cycle. For the next calculation cycle the mode may be switched
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
491 ; to alternative plan, or stay in normal plan but with certain features enabled...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
492 bcf lo,DECO_ASCENT_FLAG ; clear flag for delayed ascent calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
493 bcf lo,DECO_VOLUME_FLAG ; clear flag for gas needs calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
494 bcf lo,DECO_BAILOUT_FLAG ; clear flag for bailout mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
495 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
496 bcf hi,DECO_CAVE_MODE ; clear flag for cave mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
497 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
498
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
499 btfsc FLAG_bailout_mode ; check if a real bailout situation is present
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
500 bra calc_deko_engine_alt_1 ; YES - stay in normal plan mode and preclude delayed ascent calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
501 TSTOSS char_I_extra_time ; NO - check if a delayed ascent is enabled
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
502 bra calc_deko_engine_alt_1 ; NO - stay in normal plan mode and preclude delayed ascent calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
503 bsf lo,DECO_PLAN_FLAG ; YES - set flag for alternative plan
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
504 bsf lo,DECO_ASCENT_FLAG ; - set flag for delayed ascent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
505
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
506 calc_deko_engine_alt_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
507 TSTOSS opt_calc_asc_gasvolume ; check if gas volume calculation is enabled
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
508 bra calc_deko_engine_start ; NO - no volume calculation, no simulated bailout plan in this case
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
509 bsf lo,DECO_VOLUME_FLAG ; YES - set gas needs calculation flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
510
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
511 btfsc FLAG_bailout_mode ; check if a real bailout situation is present
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
512 bra calc_deko_engine_start ; YES - normal plan already does bailout (OC) calculation "for real"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
513
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
514 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
515 bsf hi,DECO_CAVE_MODE ; activate cave mode by default
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
516 btfss FLAG_cave_mode ; cave mode switched on?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
517 bcf hi,DECO_CAVE_MODE ; NO - deactivate p2deco cave mode again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
518 btfsc FLAG_dive_turned ; dive turned?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
519 bcf hi,DECO_CAVE_MODE ; YES - deactivate p2deco cave mode again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
520 btfsc FLAG_cave_mode_shutdown ; cave mode function shut down?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
521 bcf hi,DECO_CAVE_MODE ; YES - deactivate p2deco cave mode again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
522 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
523
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
524 btfss lo,DECO_MODE_LOOP_FLAG ; NO - has a loop mode calculation been done during the normal plan?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
525 bra calc_deko_engine_start ; NO - when not in loop mode, no simulated bailout to be done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
526 decf best_gas_number,W ; YES - get best gas number -1 into WREG. If not available, WREG will be 255 now. If not computed yet, WREG will be 254 now.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
527 btfsc WREG,7 ; - WREG < 128 (a bailout gas is available)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
528 bra calc_deko_engine_alt_2 ; NO - no simulated bailout possible because no bailout gas available to switch to
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
529 bsf lo,DECO_PLAN_FLAG ; YES - set flag for alternative plan
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
530 bsf lo,DECO_BAILOUT_FLAG ; - set bailout mode flag (enables gas changes before 1st stop)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
531 movf best_gas_number,W ; - put number of best gas into WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
532 call deco_setup_oc_gases_pre ; - set up deco calculations in OC mode with OC gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
533 bra calc_deko_engine_start ; - start in alternative plan mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
534
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
535 calc_deko_engine_alt_2:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
536 bcf lo,DECO_PLAN_FLAG ; clear flag for alternative plan
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
537 bcf lo,DECO_ASCENT_FLAG ; clear flag for delayed ascent calculation
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
538 bcf lo,DECO_VOLUME_FLAG ; clear flag for gas needs calculation
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
539 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
540 bcf hi,DECO_CAVE_MODE ; clear flag for cave mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
541 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
542 call inval_alternative_plan_data ; invalidate all alternative (bailout) plan data because they are not applicable any more
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
543
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
544 calc_deko_engine_start:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
545 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
546 movff hi,char_O_main_status ; write-back char_O_main_status to deco engine interface
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
547 ENDIF
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
548 movff lo,char_O_deco_status ; write-back char_O_deco_status to deco engine interface
0
heinrichsweikamp
parents:
diff changeset
549
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
550 calc_deko_engine_cont:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
551 SAFE_2BYTE_COPY amb_pressure,int_I_pres_respiration ; transfer ambient pressure to deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
552 clrf TMR5L ; restart timer used to preempt stops calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
553 clrf TMR5H ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
554 call deco_calc_hauptroutine ; invoke the deco engine (p2_deco.c)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
555 banksel common
0
heinrichsweikamp
parents:
diff changeset
556
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
557 ; check if display shall be updated due to deco engine restart
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
558 btfsc FLAG_TFT_display_ndl_or_deko; shall update immediately?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
559 bra calc_deko_engine_update ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
560
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
561 ; check if new calculation results for normal plan mode are available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
562 movff char_O_main_status,WREG ; get deco status of deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
563 btfss WREG,DECO_COMPLETED_NORM ; new calculation results for normal plan available?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
564 return ; NO - done
605
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
565
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
566 calc_deko_engine_update:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
567 bcf FLAG_TFT_display_ndl_or_deko; YES - reset flag for immediate update
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
568 movff char_O_deco_info,WREG ; - get deco info vector
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
569 btfsc WREG,deco_ceiling ; - ceiling depth > 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
570 bra calc_deko_engine_update_deco; YES - in deco
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
571 ;bra calc_deko_engine_update_NDL ; NO - within NDL
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
572
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
573 calc_deko_engine_update_NDL: ; within NDL
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
574 btfsc decostop_active ; been in deco mode before?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
575 bsf FLAG_TFT_display_ndl_mask ; YES - clear deco data, display NDL time
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
576 bsf FLAG_TFT_display_ndl ; display NDL time
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
577 bcf decostop_active ; clear flag for been in deco mode before
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
578 return
0
heinrichsweikamp
parents:
diff changeset
579
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
580 calc_deko_engine_update_deco: ; in deco
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
581 btfss decostop_active ; already been in deco mode before?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
582 bsf FLAG_TFT_display_deko_mask ; NO - clear NDL time, display deco data
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
583 bsf FLAG_TFT_display_deko ; display deco data
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
584 bsf FLAG_TFT_display_tts ; display TTS
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
585 bsf decostop_active ; set flag for being in deco mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
586 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
587
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
588 ; --------------------------------------------------------------------------------------
0
heinrichsweikamp
parents:
diff changeset
589
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
590 global calc_deko_divemode_sensor
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
591 calc_deko_divemode_sensor:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
592 ; sensor acquisition code
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
593 btfss s8_digital ; check if we have a digital interface to the sensors
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
594 bra calc_deko_divemode_sensor_analog ; NO - check if we have an analog interface
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
595 btfss new_s8_data_available ; YES - check if a new data frame was received
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
596 bra calc_deko_divemode_sensor_common ; NO - use old values
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
597 call compute_mvolts_for_all_sensors ; YES - compute mV values from digital data
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
598 bra calc_deko_divemode_sensor_common
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
599 calc_deko_divemode_sensor_analog:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
600 btfss analog_o2_input ; do we have an analog input?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
601 bra calc_deko_divemode_sensor_opt ; NO - check if we have an optical interface
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
602 call get_analog_inputs ; YES - get the analog voltages and continue with the common part
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
603 bra calc_deko_divemode_sensor_common
583
6636cbe64c6d optical input work
heinrichsweikamp
parents: 582
diff changeset
604 calc_deko_divemode_sensor_opt:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
605 btfss optical_input ; do we have an optical input?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
606 return ; NO - return (we have no sensors at all: not analog, not S8 and not optical)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
607 btfss sensor1_active ; YES - o2_ppo2_sensor1, o2_ppo2_sensor2 and o2_ppo2_sensor3 are already filled in ISR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
608 bcf use_O2_sensor1 ; check HUD status data and eventually clear use_O2_sensorX
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
609 btfss sensor2_active
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
610 bcf use_O2_sensor2
583
6636cbe64c6d optical input work
heinrichsweikamp
parents: 582
diff changeset
611 btfss sensor3_active
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
612 bcf use_O2_sensor3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
613 bra calc_deko_divemode_sensor_A ; continue with calculating sensor average
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
614
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
615 calc_deko_divemode_sensor_common:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
616 ; Check each sensor if it is calibrated and if its mV value is within min_mv and max_mv limits.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
617 ; If ok: compute o2_ppo2_sensorX = o2_mv_sensorX * opt_x_sX / 1000
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
618 ; If not ok: reset o2_ppo2_sensorX, reset use_O2_sensorX and show the customview 1 in case the sensor was ok before
0
heinrichsweikamp
parents:
diff changeset
619
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
620 ; check sensor 1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
621 btfss sensor1_calibrated_ok ; check if sensor is usable at all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
622 bra check_sensor_1_fail ; NO - handle it as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
623 ; check min threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
624 movff o2_mv_sensor1+0,sub_a+0 ; load sensor mV value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
625 movff o2_mv_sensor1+1,sub_a+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
626 rcall check_min_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
627 btfsc neg_flag ; check if result is negative, i.e. sensor_mv < min_mv
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
628 bra check_sensor_1_fail ; YES - declare sensor as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
629 ; check max_threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
630 rcall check_max_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
631 btfss neg_flag ; check if result is negative, i.e. sensor_mv < max_mv
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
632 bra check_sensor_1_fail ; NO - declare sensor as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
633 ; check HUD data, if available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
634 btfss hud_connection_ok ; check if there is a HUD connected
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
635 bra check_sensor_1_ok ; NO - all checks done then and positive
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
636 btfss sensor1_active ; YES - HUD status ok?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
637 bra check_sensor_1_fail ; NO - HUD reports a fail
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
638 check_sensor_1_ok:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
639 ; o2_ppo2_sensor1 = o2_mv_sensor1:2 * opt_x_s1:2 / 1000
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
640 movff o2_mv_sensor1+0,xA+0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
641 movff o2_mv_sensor1+1,xA+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
642 movff opt_x_s1+0,xB+0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
643 movff opt_x_s1+1,xB+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
644 rcall compute_ppo2_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
645 movff xC+0,o2_ppo2_sensor1 ; result in 0.01 bar
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
646 bra check_sensor_2 ; continue with next sensor
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
647 check_sensor_1_fail:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
648 clrf WREG
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
649 movff WREG,o2_ppo2_sensor1 ; set ppO2 reading to zero
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
650 btfss use_O2_sensor1 ; check if sensor was in use before
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
651 bra check_sensor_1_fail_1 ; NO - no new news then
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
652 call check_sensor_custview_helper; YES - show customview 1 (sensor values) on further conditions met
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
653 check_sensor_1_fail_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
654 bcf use_O2_sensor1 ; revoke sensor from usage
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
655
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
656 check_sensor_2: ; check min_mv of sensor 2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
657 btfss sensor2_calibrated_ok ; check if sensor is usable at all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
658 bra check_sensor_2_fail ; NO - handle it as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
659 ; check min threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
660 movff o2_mv_sensor2+0,sub_a+0 ; load sensor mV value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
661 movff o2_mv_sensor2+1,sub_a+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
662 rcall check_min_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
663 btfsc neg_flag ; check if result is negative, i.e. sensor_mv < min_mv
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
664 bra check_sensor_2_fail ; YES - declare sensor as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
665 ; check max_threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
666 rcall check_max_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
667 btfss neg_flag ; check if result is nagative, i.e. sensor_mv < max_mv
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
668 bra check_sensor_2_fail ; NO - declare sensor as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
669 ; check HUD data, if available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
670 btfss hud_connection_ok ; check if there is a HUD connected
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
671 bra check_sensor_2_ok ; NO - all checks done then and positive
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
672 btfss sensor2_active ; YES - HUD status ok?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
673 bra check_sensor_2_fail ; NO - HUD reports a fail
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
674 check_sensor_2_ok:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
675 ; o2_ppo2_sensor2 = o2_mv_sensor2:2 * opt_x_s2:2 / 1000
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
676 movff o2_mv_sensor2+0,xA+0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
677 movff o2_mv_sensor2+1,xA+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
678 movff opt_x_s2+0,xB+0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
679 movff opt_x_s2+1,xB+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
680 rcall compute_ppo2_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
681 movff xC+0,o2_ppo2_sensor2 ; result in 0.01 bar
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
682 bra check_sensor_3 ; continue with next sensor
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
683 check_sensor_2_fail:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
684 clrf WREG
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
685 movff WREG,o2_ppo2_sensor2 ; set ppO2 reading to zero
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
686 btfss use_O2_sensor2 ; check if sensor was in use before
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
687 bra check_sensor_2_fail_1 ; NO - no new news then
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
688 call check_sensor_custview_helper; YES - show customview 1 (sensor values) on further conditions met
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
689 check_sensor_2_fail_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
690 bcf use_O2_sensor2 ; revoke sensor from usage
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
691
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
692 check_sensor_3: ; check min_mv of sensor 2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
693 btfss sensor3_calibrated_ok ; check if sensor is usable at all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
694 bra check_sensor_3_fail ; NO - handle it as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
695 ; check min threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
696 movff o2_mv_sensor3+0,sub_a+0 ; load sensor mV value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
697 movff o2_mv_sensor3+1,sub_a+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
698 rcall check_min_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
699 btfsc neg_flag ; check if result is negative, i.e. sensor_mv < min_mv
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
700 bra check_sensor_3_fail ; YES - declare sensor as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
701 ; check max threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
702 rcall check_max_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
703 btfss neg_flag ; check if result is negative, i.e. sensor_mv < max_mv
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
704 bra check_sensor_3_fail ; NO - declare sensor as failed
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
705 ; check HUD data, if available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
706 btfss hud_connection_ok ; check if there is a HUD connected
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
707 bra check_sensor_3_ok ; NO - all checks done then and positive
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
708 btfss sensor3_active ; YES - HUD status ok?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
709 bra check_sensor_3_fail ; NO - HUD reports a fail
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
710 check_sensor_3_ok:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
711 ; o2_ppo2_sensor3 = o2_mv_sensor3:2 * opt_x_s1:2 / 1000
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
712 movff o2_mv_sensor3+0,xA+0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
713 movff o2_mv_sensor3+1,xA+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
714 movff opt_x_s3+0,xB+0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
715 movff opt_x_s3+1,xB+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
716 rcall compute_ppo2_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
717 movff xC+0,o2_ppo2_sensor3 ; result in 0.01 bar
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
718 bra calc_deko_divemode_sensor_A ; continue with calculating sensor average
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
719 check_sensor_3_fail:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
720 clrf WREG
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
721 movff WREG,o2_ppo2_sensor3 ; set ppO2 reading to zero
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
722 btfss use_O2_sensor3 ; check if sensor was in use before
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
723 bra check_sensor_3_fail_1 ; NO - no new news then
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
724 call check_sensor_custview_helper; YES - show custom view 1 (sensor values) on further conditions met
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
725 check_sensor_3_fail_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
726 bcf use_O2_sensor3 ; revoke sensor from usage
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
727
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
728 calc_deko_divemode_sensor_A: ; calculate sensor average
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
729 ; exit here if not in dive mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
730 btfss divemode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
731 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
732
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
733 ; compute sensor_setpoint = average of all o2_ppo2_sensorX of those sensors that have use_O2_sensorX == true
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
734 ; sum up sensor values (in xA:2) and active sensors in (xB:2)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
735 clrf xB+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
736 clrf xB+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
737 clrf xA+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
738 clrf xA+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
739 divemode_setup_sensor_1_value:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
740 btfss use_O2_sensor1 ; sensor1 active?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
741 bra divemode_setup_sensor_2_value ; NO
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
742 movf o2_ppo2_sensor1,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
743 addwf xA+0,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
744 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
745 addwfc xA+1,F ; add into xA:2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
746 incf xB+0,F ; add a sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
747 divemode_setup_sensor_2_value:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
748 btfss use_O2_sensor2 ; sensor2 active?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
749 bra divemode_setup_sensor_3_value ; NO
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
750 movf o2_ppo2_sensor2,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
751 addwf xA+0,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
752 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
753 addwfc xA+1,F ; add into xA:2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
754 incf xB+0,F ; add a sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
755 divemode_setup_sensor_3_value:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
756 btfss use_O2_sensor3 ; sensor3 active?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
757 bra divemode_setup_sensor_mean ; NO
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
758 movf o2_ppo2_sensor3,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
759 addwf xA+0,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
760 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
761 addwfc xA+1,F ; add into xA:2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
762 incf xB+0,F ; add a sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
763
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
764 ; divide sum of sensor values by number of active sensors found
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
765 divemode_setup_sensor_mean:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
766 clrf xC+0 ; set zero as default result
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
767 tstfsz xB+0 ; pending div/0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
768 call div16x16 ; NO - execute xC = xA / xB = summed ppO2 / number of sensors
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
769 movff xC+0,sensor_setpoint ; copy result (or its default)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
770
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
771 ; set default value for pSCR mode: 0 => let p2_deco.c compute the ppO2 based on current dil gas and depth
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
772 ; will be overwritten later in case we are in sensor mode and have at least one usable sensor
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
773 clrf WREG ; preload a zero
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
774 btfsc FLAG_pscr_mode ; check if we are in pSCR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
775 movff WREG,char_I_const_ppO2 ; YES - write 0 to char_I_const_ppo2,
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
776 ; it will be overwritten if we have a usable sensor reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
777 btfsc FLAG_bailout_mode ; check if we are in bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
778 bra calc_deko_divemode_sensor_V ; YES - no sensor data transfer to char_I_const_ppO2 in this case
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
779 movff opt_ccr_mode,WREG ; NO - get mode (0: Fixed SP, 1: Sensor, 2: Auto SP)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
780 sublw .1 ; - in sensor mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
781 bnz calc_deko_divemode_sensor_V ; NO - not in sensor mode - no transfer of sensor data to char_I_const_ppO2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
782 tstfsz xB+0 ; YES - check if we have found at least one usable sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
783 bra divemode_setup_sensor_mean1 ; YES - we have at least one usable sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
784 bsf setpoint_fallback ; NO - we have NO usable sensors -> initiate fallback
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
785 btfss FLAG_ccr_mode ; - check if we are in CCR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
786 bra calc_deko_divemode_sensor_V ; NO - continue with voting logic flags
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
787 movff char_I_setpoint_cbar+0,char_I_const_ppO2; YES - select fixed setpoint no. 1 for fallback
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
788 bra calc_deko_divemode_sensor_V ; - continue with voting logic flags
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
789 ; we have at least one usable sensor with a ppO2 value > 0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
790 divemode_setup_sensor_mean1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
791 bcf setpoint_fallback ; clear fallback condition
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
792 movff sensor_setpoint,char_I_const_ppO2 ; transfer average sensor value to p2_deco.c code
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
793 ; vote sensors
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
794 calc_deko_divemode_sensor_V:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
795 bsf voting_logic_sensor1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
796 movff o2_ppo2_sensor1,lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
797 rcall check_sensor_voting_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
798 tstfsz WREG ; sensor within range (WREG = 0)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
799 bcf voting_logic_sensor1 ; NO - vote out this sensor
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
800
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
801 bsf voting_logic_sensor2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
802 movff o2_ppo2_sensor2,lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
803 rcall check_sensor_voting_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
804 tstfsz WREG ; sensor within range (WREG = 0)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
805 bcf voting_logic_sensor2 ; NO - vote out this sensor
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
806
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
807 bsf voting_logic_sensor3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
808 movff o2_ppo2_sensor3,lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
809 rcall check_sensor_voting_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
810 tstfsz WREG ; sensor within range (WREG = 0)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
811 bcf voting_logic_sensor3 ; NO - vote out this sensor
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
812
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
813 ; check if a warning shall be issued on sensor disagreement
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
814 btfsc FLAG_ccr_mode ; check if we are in CCR mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
815 bra check_warn_sensor_0 ; YES - continue with further checks
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
816 btfsc FLAG_pscr_mode ; check if we are in pSCR mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
817 bra check_warn_sensor_0 ; YES - continue with further checks
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
818 bra check_warn_sensor_done ; not in CCR and not in pSCR, so no warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
819 check_warn_sensor_0: ; we are in CCR or pSCR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
820 btfsc FLAG_bailout_mode ; check if we are in bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
821 bra check_warn_sensor_done ; YES - no warning in this case
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
822 movff opt_ccr_mode,WREG ; get mode (0: Fixed SP, 1: Sensor, 2: Auto SP)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
823 sublw .1 ; in sensor mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
824 bnz check_warn_sensor_done ; NO - not in sensor mode - no warning in this case
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
825 ; check sensor 1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
826 check_warn_sensor_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
827 btfss sensor1_calibrated_ok ; check if sensor has a valid calibration
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
828 bra check_warn_sensor_2 ; NO - sensor can not cause a warning then
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
829 btfss use_O2_sensor1 ; YES - check if sensor is in use
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
830 bra check_warn_sensor_2 ; NO - sensor can not cause a warning then
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
831 btfsc voting_logic_sensor1 ; YES - check if sensor value is within agreement range
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
832 bra check_warn_sensor_2 ; YES - continue with next sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
833 bcf sensors_agree ; NO - issue a warning
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
834 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
835 ; check sensor 2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
836 check_warn_sensor_2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
837 btfss sensor2_calibrated_ok ; check if sensor has a valid calibration
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
838 bra check_warn_sensor_3 ; NO - sensor can not cause a warning then
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
839 btfss use_O2_sensor2 ; YES - check if sensor is in use
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
840 bra check_warn_sensor_3 ; NO - sensor can not cause a warning then
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
841 btfsc voting_logic_sensor2 ; YES - check if sensor value is within agreement range
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
842 bra check_warn_sensor_3 ; YES - continue with next sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
843 bcf sensors_agree ; NO - issue a warning
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
844 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
845 ; check sensor 3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
846 check_warn_sensor_3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
847 btfss sensor3_calibrated_ok ; check if sensor has a valid calibration
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
848 bra check_warn_sensor_agree ; NO - sensor can not cause a warning then
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
849 btfss use_O2_sensor3 ; YES - check if sensor is in use
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
850 bra check_warn_sensor_agree ; NO - sensor can not cause a warning then
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
851 btfsc voting_logic_sensor3 ; YES - check if sensor value is within agreement range
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
852 bra check_warn_sensor_agree ; YES - continue with next sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
853 bcf sensors_agree ; NO - issue a warning
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
854 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
855 ; no need for a warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
856 check_warn_sensor_done:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
857 check_warn_sensor_agree:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
858 bsf sensors_agree
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
859 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
860
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
861
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
862 check_min_threshold:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
863 movlw LOW min_mv ; load minimum mV value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
864 movwf sub_b+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
865 movlw HIGH min_mv
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
866 movwf sub_b+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
867 goto sub16 ; sub_c = sensor_mv - min_mv (and return)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
868
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
869 check_max_threshold:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
870 movlw LOW max_mv
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
871 movwf sub_b+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
872 movlw HIGH max_mv
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
873 movwf sub_b+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
874 goto sub16 ; sub_c = sensor_mv - max_mv (and return)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
875
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
876 compute_ppo2_helper:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
877 call mult16x16 ; xA:2*xB:2=xC:4
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
878 movlw LOW .1000
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
879 movwf xB+0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
880 movlw HIGH .1000
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
881 movwf xB+1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
882 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
883 movlw d'1'
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
884 addwf xC+0,W ; we are just interested in the carry flag
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
885 movlw d'0'
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
886 addwfc xC+1,W ; we are still just interested in the carry flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
887 tstfsz WREG ; ppO2 is higher than 2.55bar?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
888 setf xC+0 ; YES
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
889 return
0
heinrichsweikamp
parents:
diff changeset
890
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
891 check_sensor_custview_helper:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
892 btfss divemode ; check if we are in dive mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
893 return ; NO - not in dive mode, return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
894 movff opt_ccr_mode,WREG ; YES - =0: Fixed SP, =1: Sensor, =2: Auto SP
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
895 decfsz WREG,W ; - opt_ccr_mode = 1 (sensors)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
896 return ; NO - not using the sensors in the moment
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
897 btfsc alternative_divelayout ; YES - in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
898 call switch_layout_to_normal ; YES - switch to normal layout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
899 movlw index_ppo2_sensors-1 ; custom view number one below ppO2 sensors
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
900 movwf menupos3 ; set custom view number
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
901 bsf toggle_customview ; initiate toggle to desired custom view -> ppO2 sensors
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
902 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
903
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
904 check_sensor_voting_helper:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
905 movf lo,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
906 cpfsgt sensor_setpoint
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
907 bra check_sensor_voting_helper2 ; lo < sensor_setpoint
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
908 ; lo > sensor_setpoint
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
909 movf lo,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
910 subwf sensor_setpoint,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
911 movwf lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
912 check_sensor_voting_helper1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
913 movlw sensor_voting_logic_threshold ; threshold in 0.01 bar
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
914 cpfsgt lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
915 retlw .0 ; within range
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
916 retlw .1 ; out of range
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
917 check_sensor_voting_helper2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
918 ; lo < sensor_setpoint
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
919 movf sensor_setpoint,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
920 subwf lo,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
921 bra check_sensor_voting_helper1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
922
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
923 ;-----------------------------------------------------------------------------
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
924
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
925 divemodemode_togglegf: ; toggle aGF/GF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
926 bcf toggle_gf ; clear command flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
927 btg use_agf ; toggle status flag for GF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
928
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
929 btfsc use_agf ; aGF activated?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
930 bra divemodemode_togglegf_1 ; YES - branch to using aGF
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
931 movff opt_GF_low,char_I_GF_Low_percentage ; NO - use normal GF factors
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
932 movff opt_GF_high,char_I_GF_High_percentage ; -
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
933 bra divemodemode_togglegf_2 ; - continue with common part
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
934 divemodemode_togglegf_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
935 movff opt_aGF_low,char_I_GF_Low_percentage ; YES - use alternative GF factors
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
936 movff opt_aGF_high,char_I_GF_High_percentage ; -
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
937 divemodemode_togglegf_2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
938 call TFT_gf_factors_mask ; update custom view mask to show which one is in use
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
939 ; the custom view itself has been called from divemenu_tree before
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
940 goto restart_deco_engine ; ...and return
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
941
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
942
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
943 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
944 divemodemode_toggleturn:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
945 bcf toggle_turn_dive ; clear command flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
946 btg FLAG_dive_turned ; toggle dive turned state
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
947 btfsc FLAG_cave_mode_shutdown ; cave mode function shut down?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
948 bsf FLAG_dive_turned ; YES - allow only activating turned state
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
949 goto set_logbook_marker ; set a logbook marker (and return)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
950 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
951
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
952 calc_velocity: ; called every two seconds
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
953 btfsc display_velocity
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
954 bra calc_velocity1 ; always update if already displayed
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
955 btfss divemode2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
956 return ; display velocity only if deeper then 1m (Not at the surface after the dive)
399
db25f2028074 CHANGE: New segmented speed graph in divemode
heinrichsweikamp
parents: 398
diff changeset
957 calc_velocity1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
958 SAFE_2BYTE_COPY amb_pressure, sub_a
0
heinrichsweikamp
parents:
diff changeset
959 movff last_pressure_velocity+0,sub_b+0
heinrichsweikamp
parents:
diff changeset
960 movff last_pressure_velocity+1,sub_b+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
961 movff sub_a+0,last_pressure_velocity+0 ; store old value for velocity
0
heinrichsweikamp
parents:
diff changeset
962 movff sub_a+1,last_pressure_velocity+1
heinrichsweikamp
parents:
diff changeset
963
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
964 call subU16 ; sub_c = amb_pressure - last_pressure
0
heinrichsweikamp
parents:
diff changeset
965
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
966 bcf neg_flag_velocity
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
967 btfsc neg_flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
968 bsf neg_flag_velocity
318
6d8c82fe5a01 VSIbar #3d: more filter, neg_flag_velocity close to calculation, debug color for descend bar
janos_kovacs <kovjanos@gmail.com>
parents: 315
diff changeset
969
0
heinrichsweikamp
parents:
diff changeset
970 movff sub_c+0,xA+0
heinrichsweikamp
parents:
diff changeset
971 movff sub_c+1,xA+1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
972 movlw d'39' ; 77 when called every second....
0
heinrichsweikamp
parents:
diff changeset
973 movwf xB+0
heinrichsweikamp
parents:
diff changeset
974 clrf xB+1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
975 call mult16x16 ; differential pressure in mbar*77...
0
heinrichsweikamp
parents:
diff changeset
976 movff xC+0,divA+0
heinrichsweikamp
parents:
diff changeset
977 movff xC+1,divA+1
heinrichsweikamp
parents:
diff changeset
978 movlw d'7'
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
979 call div16 ; divA = divA / 2^WREG, divide by 2^7 equals velocity in m/min
0
heinrichsweikamp
parents:
diff changeset
980
heinrichsweikamp
parents:
diff changeset
981 movlw d'99'
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
982 cpfsgt divA+0 ; velocity > 99 m/min ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
983 bra calc_velocity3 ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
984 movwf divA+0 ; YES - set divA = 99
0
heinrichsweikamp
parents:
diff changeset
985
heinrichsweikamp
parents:
diff changeset
986 calc_velocity3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
987 ; Copy old speeds
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
988 movff old_velocity+2,old_velocity+3
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
989 movff old_velocity+1,old_velocity+2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
990 movff old_velocity+0,old_velocity+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
991 movff divA+0,old_velocity+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
992
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
993 ; movff old_velocity+3,WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
994 ; addwf divA+0,F ; add old speed
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
995 ; bcf STATUS,C
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
996 ; rrcf divA+0,F ; /2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
997 ; movff old_velocity+2,WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
998 ; addwf divA+0,F ; add old speed
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
999 ; bcf STATUS,C
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1000 ; rrcf divA+0,F ; /2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1001 ; movff old_velocity+1,WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1002 ; addwf divA+0,F ; add old speed
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1003 ; bcf STATUS,C
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1004 ; rrcf divA+0,F ; /2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1005 ; movff old_velocity+0,WREG
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1006 ; addwf divA+0,F ; add old speed
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1007 ; bcf STATUS,C
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1008 ; rrcf divA+0,F ; /2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1009 goto TFT_display_velocity ; with divA+0 = m/min..., and return...
0
heinrichsweikamp
parents:
diff changeset
1010
heinrichsweikamp
parents:
diff changeset
1011
heinrichsweikamp
parents:
diff changeset
1012 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
1013
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1014 set_reset_safety_stop: ; set flags for safety stop and/or reset safety stop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1015 TSTOSS opt_enable_safetystop ; safety stop enabled? (=1: show safety stop)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1016 bra delete_safety_stop ; NO - don't show safety stop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1017
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1018 btfsc decostop_active ; is a deco stop displayed?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1019 bra delete_safety_stop ; YES - don't show safety stop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1020
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1021 ; Below "opt_safety_stop_reset"? if yes, set flag and reset count-down timer
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1022 SAFE_2BYTE_COPY rel_pressure, lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1023 call adjust_depth_with_salinity ; computes salinity setting into lo:hi [mbar]
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1024 movff lo,sub_a+0
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1025 movff hi,sub_a+1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1026 movff opt_safety_stop_reset,WREG ; [cbar]
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1027 mullw .10 ; mbar in PRODL:H
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1028 movff PRODL,sub_b+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1029 movff PRODH,sub_b+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1030 call subU16 ; sub_c = sub_a - sub_b
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1031 btfss neg_flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1032 bra reset_safety_stop ; below 10m, reset safety stop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1033
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1034 ; Above "opt_safety_stop_end"? if yes ,clear flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1035 movff opt_safety_stop_end,WREG ; [cbar]
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1036 mullw .10 ; mbar in PRODL:H
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1037 movff PRODL,sub_b+0 ; sub_a is still loaded with adjusted rel_pressure
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1038 movff PRODH,sub_b+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1039 call subU16 ; sub_c = sub_a - sub_b
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1040 btfsc neg_flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1041 bra delete_safety_stop ; above 3m, remove safety stop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1042
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1043 ; Above "opt_safety_stop_start"? if yes, activate safety stop
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1044 movff opt_safety_stop_start,WREG ; [cbar]
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1045 mullw .10 ; mbar in PRODL:H
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1046 movff PRODL,sub_b+0 ; sub_a is still loaded with adjusted rel_pressure
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1047 movff PRODH,sub_b+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1048 call subU16 ; sub_c = sub_a - sub_b
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1049 btfsc neg_flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1050 bra acivate_safety_stop ; above 5m, activate safety stop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1051 bra reset_safety_stop2 ; pause safety stop
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1052
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1053 acivate_safety_stop:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1054 tstfsz safety_stop_countdown ; countdown at zero?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1055 bsf show_safety_stop ; NO - set flag
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1056 return
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1057
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1058 delete_safety_stop:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1059 clrf safety_stop_countdown ; reset timer
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1060 bra reset_safety_stop2 ; remove safety stop from display
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1061
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1062 reset_safety_stop:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1063 movff opt_safety_stop_length,safety_stop_countdown ; reset timer
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1064 reset_safety_stop2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1065 bcf show_safety_stop ; clear flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1066 btfss safety_stop_active ; safety stop shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1067 return ; NO - don't delete it
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1068 bcf safety_stop_active ; clear flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1069 bsf FLAG_TFT_clear_safety_stop ; Clear safety stop
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1070 return
428
eccae727702f some cleanup
heinrichsweikamp
parents: 403
diff changeset
1071
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1072
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1073 ;=============================================================================
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1074
0
heinrichsweikamp
parents:
diff changeset
1075 timeout_menuview:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1076 decfsz timeout_counter2,F ; timeout for menu view?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1077 return ; NO - done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1078 ; Timeout, clear e.g. "Menu?"
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1079 goto menuview_toggle_reset ; ...and return
0
heinrichsweikamp
parents:
diff changeset
1080
heinrichsweikamp
parents:
diff changeset
1081 timeout_divemode_menu:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1082 decfsz timeout_counter2,F ; timeout for divemode menu
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1083 return
0
heinrichsweikamp
parents:
diff changeset
1084
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1085 global timeout_divemode_menu2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1086 timeout_divemode_menu2: ; called from divemenu_tree.asm
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1087 bcf divemode_menu ; timeout, clear flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1088 call TFT_clear_divemode_menu ; clear menu
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1089 bsf FLAG_TFT_active_gas_divemode; redraw gas/setpoint/diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1090 bcf blinking_better_gas ; clear flag to have temperature updated once
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1091 bcf blinking_better_dil ; clear flag to have temperature updated once
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1092 bsf FLAG_TFT_temp_divemode ; display temperature
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1093 call TFT_draw_gassep_line ; gas separator grid in spec mode only
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1094
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1095 btfss decostop_active ; in deco mode ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1096 bra timeout_divemode_menu_ndl ; NO - show NDL again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1097 ; Show deco data
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1098 bsf FLAG_TFT_display_deko_mask
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1099 bsf FLAG_TFT_display_deko
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1100 bsf FLAG_TFT_display_tts
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1101 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1102
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1103 timeout_divemode_menu_ndl:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1104 ; Show NDL
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1105 bsf FLAG_TFT_display_ndl_mask
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1106 bsf FLAG_TFT_display_ndl
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1107 return
0
heinrichsweikamp
parents:
diff changeset
1108
heinrichsweikamp
parents:
diff changeset
1109 timeout_divemode:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1110 btfsc divemode_menu ; divemode menu active?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1111 rcall timeout_divemode_menu ; YES - check the timeout for it...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1112
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1113 btfsc menuview ; is a menu view shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1114 rcall timeout_menuview ; YES - check the timeout for it...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1115
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1116 btfss realdive ; dive longer than one minute?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1117 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1118
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1119 btfsc FLAG_apnoe_mode ; in apnoe mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1120 bra timeout_divemode2 ; YES - use apnoe_timeout [min] for timeout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1121
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1122 IFNDEF __DEBUG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1123 btfsc simulatormode_active ; in simulator mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1124 bra timeout_divemode3 ; YES - use simulator timeout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1125 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1126
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1127 bcf divemode ; terminate divemode my default
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1128 infsnz timeout_counter1+0,F ; increment timeout counter
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1129 incf timeout_counter1+1,F ; timeout is 16 bit counter
0
heinrichsweikamp
parents:
diff changeset
1130
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1131 movff opt_diveTimeout,WREG ; get timeout in minutes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1132 mullw .60 ; convert into seconds
444
d93d75ae01bf Adjustable timeout for Divemode (Config 0x48)
heinrichsweikamp
parents: 437
diff changeset
1133 movff PRODL,sub_a+0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1134 movff PRODH,sub_a+1
0
heinrichsweikamp
parents:
diff changeset
1135
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1136 movff timeout_counter1+0,sub_b+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1137 movff timeout_counter1+1,sub_b+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1138 call subU16 ; sub_c = sub_a - sub_b
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1139 btfss neg_flag ; result negative, i.e. timeout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1140 bsf divemode ; NO - set divemode flag again
0
heinrichsweikamp
parents:
diff changeset
1141 return
heinrichsweikamp
parents:
diff changeset
1142
heinrichsweikamp
parents:
diff changeset
1143 timeout_divemode2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1144 incf timeout_counter1+0,F ; seconds...
0
heinrichsweikamp
parents:
diff changeset
1145 movlw d'60'
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1146 cpfseq timeout_counter1+0 ; timeout_counter1+0 = 60 ?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1147 return ; No
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1148 ; one minute timeout done
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1149 clrf timeout_counter1+0
0
heinrichsweikamp
parents:
diff changeset
1150 bcf divemode
heinrichsweikamp
parents:
diff changeset
1151 incf apnoe_timeout_counter,F
heinrichsweikamp
parents:
diff changeset
1152 movlw apnoe_timeout ; apnoe timeout [min]
heinrichsweikamp
parents:
diff changeset
1153 cpfseq apnoe_timeout_counter
heinrichsweikamp
parents:
diff changeset
1154 bsf divemode
heinrichsweikamp
parents:
diff changeset
1155 return
heinrichsweikamp
parents:
diff changeset
1156
heinrichsweikamp
parents:
diff changeset
1157 timeout_divemode3:
heinrichsweikamp
parents:
diff changeset
1158 bcf divemode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1159 incf timeout_counter1+0,F
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1160 movlw simulator_timeout ; simulator timeout
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1161 cpfsgt timeout_counter1+0
0
heinrichsweikamp
parents:
diff changeset
1162 bsf divemode
heinrichsweikamp
parents:
diff changeset
1163 return
heinrichsweikamp
parents:
diff changeset
1164
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1165 update_divemode60: ; update any minute
0
heinrichsweikamp
parents:
diff changeset
1166 call get_battery_voltage ; gets battery voltage
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1167 rcall set_powersafe ; check if battery low
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1168 ;call customview_minute ; do every-minute tasks for the custom view area
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1169 bcf oneminupdate
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1170 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1171 movlw .1 ; prepare to add backtrack data for 1 minute
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1172 btfsc FLAG_cave_mode ; cave mode enabled?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1173 rcall update_backtrack ; YES - make it so
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1174 ENDIF
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1175 btfss simulatormode_active ; in simulator mode?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1176 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1177 movlw .20 ; YES - quite dive mode simulation after 21 * 256 sec = 89 min : 36 sec
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1178 cpfsgt total_divetime_seconds+1 ; timeout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1179 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1180 IFDEF __DEBUG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1181 return ; YES - but no timeout in debug mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1182 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1183 bra divemode_option1 ; YES - set depth to 0 m and "return"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1184
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1185 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1186 update_backtrack:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1187 btfsc FLAG_dive_turned ; dive turned?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1188 return ; YES - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1189 movwf lo ; store minutes to add in lo
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1190 lfsr FSR1,char_I_backtrack_depth ; load FSR1 with base address of backtrack storage
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1191 movff char_I_backtrack_time,FSR1L ; adjust FSR1 to last index
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1192 update_backtrack_loop:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1193 btfsc FLAG_cave_mode_shutdown ; backtrack storage full?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1194 return ; YES - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1195 movff curr_depth,PREINC1 ; NO - increment index and write current depth to backtrack storage
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1196 incfsz FSR1L,W ; - did a wrap-around of the index occur (backtrack storage full)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1197 bra update_backtrack_loop_1 ; NO - continue loop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1198 bsf FLAG_cave_mode_shutdown ; YES - flag backtrack storage as being full
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1199 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1200 update_backtrack_loop_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1201 decfsz lo,F ; decrement loop counter, did it became zero?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1202 bra update_backtrack_loop ; NO - loop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1203 movff FSR1L,char_I_backtrack_time ; YES - read-back index
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1204 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1205 ENDIF
0
heinrichsweikamp
parents:
diff changeset
1206
heinrichsweikamp
parents:
diff changeset
1207 set_max_depth:
heinrichsweikamp
parents:
diff changeset
1208 movff max_pressure+0,sub_a+0
heinrichsweikamp
parents:
diff changeset
1209 movff max_pressure+1,sub_a+1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1210 SAFE_2BYTE_COPY rel_pressure, sub_b
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1211 call subU16 ; sub_c = sub_a - sub_b
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1212 ; max_pressure < rel_pressure -> neg_flag=1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1213 ; rel_pressure <= max_pressure -> neg_flag=0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1214 btfss neg_flag
0
heinrichsweikamp
parents:
diff changeset
1215 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1216 ; max_pressure < rel_pressure
0
heinrichsweikamp
parents:
diff changeset
1217 movff sub_b+0,max_pressure+0
heinrichsweikamp
parents:
diff changeset
1218 movff sub_b+1,max_pressure+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1219 bsf FLAG_TFT_max_depth ; set flag
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1220 return
0
heinrichsweikamp
parents:
diff changeset
1221
heinrichsweikamp
parents:
diff changeset
1222 set_min_temp:
heinrichsweikamp
parents:
diff changeset
1223 movff minimum_temperature+0,sub_a+0
heinrichsweikamp
parents:
diff changeset
1224 movff minimum_temperature+1,sub_a+1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1225 SAFE_2BYTE_COPY temperature,sub_b
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1226 call sub16 ; sub_c = sub_a - sub_b
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1227 ; minimum_temperature < T -> neg_flag=1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1228 ; T <= minimum_temperature -> neg_flag=0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1229 btfsc neg_flag
0
heinrichsweikamp
parents:
diff changeset
1230 return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1231 ; minimum_temperature >= T
0
heinrichsweikamp
parents:
diff changeset
1232 movff sub_b+0,minimum_temperature+0
heinrichsweikamp
parents:
diff changeset
1233 movff sub_b+1,minimum_temperature+1
heinrichsweikamp
parents:
diff changeset
1234 return
heinrichsweikamp
parents:
diff changeset
1235
heinrichsweikamp
parents:
diff changeset
1236 global set_dive_modes
heinrichsweikamp
parents:
diff changeset
1237 set_dive_modes:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1238 btfsc high_altitude_mode ; in high altitude (fly) mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1239 bra set_dive_modes3 ; YES
0
heinrichsweikamp
parents:
diff changeset
1240
heinrichsweikamp
parents:
diff changeset
1241 set_dive_modes0:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1242 movlw LOW start_dive_threshold
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1243 movwf sub_a+0 ; dive_treshold is in cm
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1244 movlw HIGH start_dive_threshold
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1245 movwf sub_a+1 ; dive_treshold is in cm
0
heinrichsweikamp
parents:
diff changeset
1246
heinrichsweikamp
parents:
diff changeset
1247 set_dive_modes1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1248 SAFE_2BYTE_COPY rel_pressure, sub_b
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1249 call subU16 ; sub_c = sub_a - sub_b
0
heinrichsweikamp
parents:
diff changeset
1250
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1251 btfss neg_flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1252 bra set_dive_modes2 ; too shallow (rel_pressure < dive_threshold)
0
heinrichsweikamp
parents:
diff changeset
1253
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1254 btfsc realdive ; dive longer than one minute?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1255 clrf timeout_counter1+0 ; YES - reset timeout counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1256
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1257 bsf divemode ; (re-)set divemode flag
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1258 bsf divemode2 ; displayed divetime is running
0
heinrichsweikamp
parents:
diff changeset
1259 return
heinrichsweikamp
parents:
diff changeset
1260
heinrichsweikamp
parents:
diff changeset
1261 set_dive_modes2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1262 bcf divemode2 ; stop time
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1263 btfss realdive ; dive longer then one minute?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1264 bcf divemode ; NO - this was no real dive
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1265 return ; YES - return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1266
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1267 set_dive_modes3: ; high-altitude mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1268 btfsc realdive ; dive longer then one minute?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1269 bra set_dive_modes0 ; YES - this is a real dive -> Use start_dive_threshold or ascend
0
heinrichsweikamp
parents:
diff changeset
1270
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1271 movlw LOW high_altitude_dive_threshold
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1272 movwf sub_a+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1273 movlw HIGH high_altitude_dive_threshold
0
heinrichsweikamp
parents:
diff changeset
1274 movwf sub_a+1
heinrichsweikamp
parents:
diff changeset
1275 bra set_dive_modes1
heinrichsweikamp
parents:
diff changeset
1276
heinrichsweikamp
parents:
diff changeset
1277 set_powersafe:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1278 movlw color_code_battery_low+1; [%]
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1279 cpfslt batt_percent
0
heinrichsweikamp
parents:
diff changeset
1280 return
heinrichsweikamp
parents:
diff changeset
1281
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1282 movlw d'7' ; type of alarm (battery Low)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1283 movwf AlarmType ; copy to alarm register
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1284 bsf event_occured ; set event flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1285 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1286 movff WREG,opt_brightness ; set brightness to ECO
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1287 return ; return
0
heinrichsweikamp
parents:
diff changeset
1288
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1289
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1290 reset_average:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1291 bcf reset_average_depth ; clear reset-average flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1292 clrf average_depth_hold+0 ; clear the depth accumulator
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1293 clrf average_depth_hold+1 ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1294 clrf average_depth_hold+2 ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1295 clrf average_depth_hold+3 ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1296 clrf average_divesecs+0 ; clear the time accumulator
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1297 clrf average_divesecs+1 ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1298 SAFE_2BYTE_COPY rel_pressure,avg_rel_pressure ; prime result with current rel.pressure/depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1299 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1300
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1301
0
heinrichsweikamp
parents:
diff changeset
1302 calc_average_depth:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1303 ; 1. compute rel_pressure x 2, because this routine is called every 2nd second only
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1304 SAFE_2BYTE_COPY rel_pressure,xB ; copy current rel pressure to xB
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1305 bcf STATUS,C
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1306 rlcf xB+0,F ; multiply rel pressure x 2 (via shift left)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1307 rlcf xB+1,F ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1308
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1309 ; 2a add (rel_pressure x 2) to the resettable depth accumulator
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1310 movf xB+0,W
0
heinrichsweikamp
parents:
diff changeset
1311 addwf average_depth_hold+0,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1312 movf xB+1,W
0
heinrichsweikamp
parents:
diff changeset
1313 addwfc average_depth_hold+1,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1314 movlw .0
0
heinrichsweikamp
parents:
diff changeset
1315 addwfc average_depth_hold+2,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1316 addwfc average_depth_hold+3,F ; will work up to 9999 mbar * 60 * 60 * 24 = 863913600 mbar (24h @ 90 m depth)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1317
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1318 ; 2b add (rel_pressure x 2) to the total depth accumulator
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1319 movf xB+0,W
0
heinrichsweikamp
parents:
diff changeset
1320 addwf average_depth_hold_total+0,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1321 movf xB+1,W
0
heinrichsweikamp
parents:
diff changeset
1322 addwfc average_depth_hold_total+1,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1323 movlw .0
0
heinrichsweikamp
parents:
diff changeset
1324 addwfc average_depth_hold_total+2,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1325 addwfc average_depth_hold_total+3,F ; will work up to 9999 mbar * 60 * 60 * 24 = 863913600 mbar (24h @ 90 m depth)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1326
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1327 ; 3a compute avg_rel_pressure on base of average_divesecs:2
0
heinrichsweikamp
parents:
diff changeset
1328 movff average_depth_hold+0,xC+0
heinrichsweikamp
parents:
diff changeset
1329 movff average_depth_hold+1,xC+1
heinrichsweikamp
parents:
diff changeset
1330 movff average_depth_hold+2,xC+2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1331 movff average_depth_hold+3,xC+3 ; copy accumulated depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1332 movff average_divesecs+0,xB+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1333 movff average_divesecs+1,xB+1 ; copy accumulated time
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1334 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
437
23b58c4bc6aa CHANGE: Language fixes, 2.08 release
heinrichsweikamp
parents: 428
diff changeset
1335 movff xC+0,avg_rel_pressure+0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1336 movff xC+1,avg_rel_pressure+1 ; store result
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1337
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1338 btfss divemode2 ; displayed divetime is running?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1339 return ; NO (e.g. too shallow)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1340
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1341 ; 3b compute avg_rel_pressure_total on base of average_divesecs_total:2
0
heinrichsweikamp
parents:
diff changeset
1342 movff average_depth_hold_total+0,xC+0
heinrichsweikamp
parents:
diff changeset
1343 movff average_depth_hold_total+1,xC+1
heinrichsweikamp
parents:
diff changeset
1344 movff average_depth_hold_total+2,xC+2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1345 movff average_depth_hold_total+3,xC+3 ; copy accumulated depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1346 movff average_divesecs_total+0,xB+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1347 movff average_divesecs_total+1,xB+1 ; copy accumulated time
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1348 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
437
23b58c4bc6aa CHANGE: Language fixes, 2.08 release
heinrichsweikamp
parents: 428
diff changeset
1349 movff xC+0,avg_rel_pressure_total+0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1350 movff xC+1,avg_rel_pressure_total+1 ; store result
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1351
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1352 btfsc reset_average_depth ; reset the resettable average depth?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1353 rcall reset_average ; YES - reset the resettable average depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1354
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1355 TSTOSS opt_2ndDepthDisp ; drawing avg depth instead of max depth?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1356 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1357 bsf FLAG_TFT_max_depth ; YES - flag to update display
0
heinrichsweikamp
parents:
diff changeset
1358 return
heinrichsweikamp
parents:
diff changeset
1359
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1360
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1361 test_switches_divemode: ; checks switches in divemode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1362 btfsc divemode_menu ; divemode menu shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1363 bra test_switches_divemode_menu ; YES - use menu processor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1364 btfsc switch_left ; NO - left button pressed?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1365 goto menuview_toggle ; YES - menu or simulator tasks; and return...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1366 btfss switch_right ; NO - right button pressed?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1367 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1368 tstfsz menupos2 ; YES - any option shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1369 bra test_switches_divemode1 ; YES - do option tasks
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1370 bsf toggle_customview ; NO - toggle custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1371 return ; - done
0
heinrichsweikamp
parents:
diff changeset
1372
heinrichsweikamp
parents:
diff changeset
1373 test_switches_divemode_menu:
heinrichsweikamp
parents:
diff changeset
1374 btfsc switch_left
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1375 bra test_switches_divemode_menu2 ; move cursor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1376 btfsc switch_right ; left button pressed?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1377 bra test_switches_divemode_menu3 ; YES - enter submenu or do something
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1378 return ; NO - done
0
heinrichsweikamp
parents:
diff changeset
1379
heinrichsweikamp
parents:
diff changeset
1380 test_switches_divemode_menu1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1381 clrf menupos1
0
heinrichsweikamp
parents:
diff changeset
1382 test_switches_divemode_menu2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1383 incf menupos1,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1384 incf menupos4,W ; menupos4 + 1 -> WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1385 cpfslt menupos1 ; > menupos4 (set in menu_processor.asm)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1386 bra test_switches_divemode_menu1 ; YES - set to 1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1387 call TFT_divemode_menu_cursor ; update the cursor
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1388 bcf switch_left
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1389 movlw divemode_menu_timeout ; reload timeout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1390 movwf timeout_counter2 ; timeout for divemode menu
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1391 return
0
heinrichsweikamp
parents:
diff changeset
1392
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1393 test_switches_divemode_menu3: ; enter submenu or do something
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1394 bcf switch_right
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1395 ; decf menupos1,F ; menu_processor needs 0-5...
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1396 goto do_line_menu ; Warning! trashes STKPTR and returns to diveloop_loop4:
0
heinrichsweikamp
parents:
diff changeset
1397
heinrichsweikamp
parents:
diff changeset
1398 test_switches_divemode1:
heinrichsweikamp
parents:
diff changeset
1399 bcf switch_right
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1400 movlw divemode_menuview_timeout
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1401 movwf timeout_counter2 ; reload timeout
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1402 movff menupos2,WREG ; menupos2 holds number of customview/divemode menu function
0
heinrichsweikamp
parents:
diff changeset
1403 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1404 bra divemode_option_gaschange ; switch to the the "better gas" / "better diluent"
137
28b057aa9f75 Simplify gas change
heinrichsweikamp
parents: 134
diff changeset
1405 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1406 bra divemode_option0 ; start/setup Divemode menu
0
heinrichsweikamp
parents:
diff changeset
1407 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1408 bra divemode_option1 ; quit simulation?
0
heinrichsweikamp
parents:
diff changeset
1409 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1410 bra divemode_option2 ; descent 1m
0
heinrichsweikamp
parents:
diff changeset
1411 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1412 bra divemode_option3 ; ascend 1m
0
heinrichsweikamp
parents:
diff changeset
1413 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1414 bra divemode_option4 ; quit Apnoe mode
0
heinrichsweikamp
parents:
diff changeset
1415 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1416 bra divemode_option5 ; reset stopwatch (gauge mode only)
216
973a0969e0ac NEW: On-board simulator can increase divetime in 5min steps
heinrichsweikamp
parents: 206
diff changeset
1417 dcfsnz WREG,F
973a0969e0ac NEW: On-board simulator can increase divetime in 5min steps
heinrichsweikamp
parents: 206
diff changeset
1418 bra divemode_option6 ; +5mins simulation
254
5fe7aff622f3 preparations to set a course for the compass display
heinrichsweikamp
parents: 239
diff changeset
1419 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1420 bra divemode_option7 ; store heading
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1421 dcfsnz WREG,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1422 bra divemode_option8 ; switch to alternative layout
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1423 return
0
heinrichsweikamp
parents:
diff changeset
1424
heinrichsweikamp
parents:
diff changeset
1425 gas_switched_common:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1426 bcf divemode_gaschange ; clear flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1427 btfss FLAG_back_to_loop ; check if it is a switchback from OC bailout to loop
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1428 bra gas_switched_common0 ; NO - continue with checking if selected gas is valid
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1429 bcf FLAG_back_to_loop ; YES - clear flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1430 movff active_dil,menupos1 ; reload last diluent
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1431 bra gas_switched_common1 ; continue with common part
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1432 gas_switched_common0:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1433 tstfsz menupos1 ; menupos1 = 0 ?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1434 bra gas_switched_common1 ; NO - valid gas
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1435 return ; YES - something went wrong, invalid gas, abort
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1436 gas_switched_common1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1437 movf menupos1,W ; get selected gas into WREG (1-6)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1438 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1439 bra gas_switched_common_OC ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1440 btfsc FLAG_bailout_mode ; in bailout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1441 bra gas_switched_common_OC ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1442 gas_switched_common_loop: ; NO to both - must be loop mode then
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1443 rcall setup_dil_registers ; with WREG = diluent 1-6
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1444 rcall deco_setup_cc_diluents ; with WREG = diluent 1-6
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1445 bra gas_switched_common3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1446 gas_switched_common_OC:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1447 rcall setup_gas_registers ; with WREG = Gas 1-6
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1448 rcall deco_setup_oc_gases ; with WREG = Gas 1-6
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1449 gas_switched_common3:
605
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1450 banksel int_O_breathed_ppO2
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1451 bcf int_O_breathed_ppO2+1,int_low_flag ; | clear all flags that control color-coding
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1452 bcf int_O_breathed_ppO2+1,int_high_flag ; | to have the new gas initially displayed in
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1453 bcf int_O_breathed_ppO2+1,int_attention_flag ; | memo color instead of a warning or attention
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1454 bcf int_O_breathed_ppO2+1,int_warning_flag ; | color that belonged to the previous gas
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1455 banksel common
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1456 bsf FLAG_TFT_active_gas_divemode ; redraw gas/setpoint/diluent
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1457 call restart_deco_engine_wo_ceiling ; abort any running deco calculations and restart the deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1458 ; set flags for profile recording
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1459 bsf event_occured ; set event flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1460 btfsc FLAG_bailout_mode ; choose OC Bailouts (OC Gases)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1461 bsf bailoutgas_event ; bailout gas change
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1462 btfss FLAG_bailout_mode ; choose OC Bailouts (OC Gases)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1463 bsf stored_gas_changed ; OC gas change
0
heinrichsweikamp
parents:
diff changeset
1464 return
heinrichsweikamp
parents:
diff changeset
1465
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1466
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1467 ; Code to pass all parameters to the C code
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1468
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1469 global get_first_gas_to_WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1470 get_first_gas_to_WREG: ; gets first gas (1-5) into WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1471 lfsr FSR1,opt_gas_type ; point to gas types
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1472 clrf lo ; start with gas 0
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1473 get_first_gas_to_WREG2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1474 movf lo,W
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 606
diff changeset
1475 movf PLUSW1,W ; get type of gas #lo (0=Disabled, 1=First, 2=Travel, 3=Deco)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1476 sublw .1 ; it is = 1 (First Gas)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1477 bz get_first_gas_to_WREG3 ; found the first gas!
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1478 incf lo,F ; ++
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1479 movlw NUM_GAS+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1480 cpfseq lo ; all done?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1481 bra get_first_gas_to_WREG2 ; NO - not yet
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1482 ; no first gas found, use #1
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 606
diff changeset
1483 movlw .1 ; coding of First gas
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1484 movff WREG,opt_gas_type+0 ; set gas 1 to First
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1485 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1486 get_first_gas_to_WREG3:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1487 movf lo,W ; put into WREG
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1488 incf WREG,W ; 0-4 -> 1-5
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1489 return ; done
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1490
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1491 global get_first_dil_to_WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1492 get_first_dil_to_WREG: ; gets first dil (1-5) into WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1493 lfsr FSR1,opt_dil_type ; point to dil types
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1494 clrf lo ; start with dil 0
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1495 get_first_dil_to_WREG2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1496 movf lo,W
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 606
diff changeset
1497 movf PLUSW1,W ; get type of Dil #lo (0=Disabled, 1=First, 2=Normal)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1498 sublw .1 ; it is = 1 (First Dil)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1499 bz get_first_dil_to_WREG3 ; found the first dil!
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1500 incf lo,F ; ++
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1501 movlw NUM_GAS+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1502 cpfseq lo ; all done?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1503 bra get_first_dil_to_WREG2 ; NO - not yet
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1504 ; no first dil found, use #1
608
d866684249bd work on 2.99 stable
heinrichsweikamp
parents: 606
diff changeset
1505 movlw .1 ; coding of First Dil
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1506 movff WREG,opt_dil_type+0 ; set dil 1 to First
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1507 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1508 get_first_dil_to_WREG3:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1509 movf lo,W ; Put into WREG
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1510 incf WREG,W ; 0-4 -> 1-5
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1511 return ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1512
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1513
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1514 deco_setup_oc_gases: ; with currently breathed gas in WREG (1-5 or 6)
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1515 movff char_O_deco_status,lo ; working copy of char_O_deco_status in bank common
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1516 deco_setup_oc_gases_pre: ; entry point with lo preloaded
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1517 movff WREG,char_I_current_gas ; set gas to start with when doing the deco calculations
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1518 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1519 ; Memory Map:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1520 ; ---------------------------------------------------------------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1521 ; opt_gas_O2_ratio res NUM_GAS | char_I_deco_O2_ratio res NUM_GAS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1522 ; opt_dil_O2_ratio res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1523 ; opt_gas_He_ratio res NUM_GAS | char_I_deco_He_ratio res NUM_GAS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1524 ; opt_dil_He_ratio res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1525 ; opt_gas_type res NUM_GAS | char_I_deco_gas_type res NUM_GAS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1526 ; opt_dil_type res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1527 ; opt_gas_change res NUM_GAS | char_I_deco_gas_change res NUM_GAS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1528 ; opt_dil_change res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1529 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1530 lfsr FSR2,char_I_deco_O2_ratio ; Load FSR2 with base address of char_I_deco_O2_ratio.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1531 ; FSR2 will step through all char_I_deco_... vars.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1532 lfsr FSR1,opt_gas_O2_ratio ; load FSR1 with base address of opt_gas_O2_ratio
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1533 rcall deco_setup_copy ; copy all OC O2 ratios
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1534 lfsr FSR1,opt_gas_He_ratio ; load FSR1 with base address of opt_gas_He_ratio
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1535 rcall deco_setup_copy ; copy all OC He ratios
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1536 lfsr FSR1,opt_gas_type ; load FSR1 with base address of opt_gas_type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1537 rcall deco_setup_copy ; copy all gas types
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1538 lfsr FSR1,opt_gas_change ; load FSR1 with base address of opt_gas_change
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1539 rcall deco_setup_copy ; copy all gas change depths
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1540 ; switch to oc mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1541 bcf lo,DECO_MODE_PSCR_FLAG ; clear the pSCR-mode flag (may not be set, but never mind)
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1542 bcf lo,DECO_MODE_LOOP_FLAG ; clear the loop/CCR-mode flag
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1543 movff lo,char_O_deco_status ; bank safe write-back of char_O_deco_status
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1544 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1545
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1546
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1547 deco_setup_cc_diluents: ; with currently breathed diluent in WREG (1-5 or 6)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1548 movff char_O_deco_status,lo ; working copy of char_O_deco_status in bank common
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1549 deco_setup_cc_diluents_pre: ; entry point with lo preloaded
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1550 btfsc FLAG_bailout_mode ; check if in bailout condition | --------------- FOR SAFETY ONLY --------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1551 bra deco_setup_oc_gases_pre ; YES - revert to setting up OC gases | This branch should never happen to be taken...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1552 movff WREG,char_I_current_gas ; NO - set diluent to start with when doing the deco calculations
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1553 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1554 ; Memory Map:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1555 ; ---------------------------------------------------------------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1556 ; opt_gas_O2_ratio res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1557 ; opt_dil_O2_ratio res NUM_GAS | char_I_deco_O2_ratio res NUM_GAS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1558 ; opt_gas_He_ratio res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1559 ; opt_dil_He_ratio res NUM_GAS | char_I_deco_He_ratio res NUM_GAS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1560 ; opt_gas_type res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1561 ; opt_dil_type res NUM_GAS | char_I_deco_gas_type res NUM_GAS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1562 ; opt_gas_change res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1563 ; opt_dil_change res NUM_GAS | char_I_deco_gas_change res NUM_GAS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1564 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1565 lfsr FSR2,char_I_deco_O2_ratio ; Load FSR2 with base address of char_I_deco_O2_ratio.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1566 ; FSR2 will step through all char_I_deco_... vars.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1567 lfsr FSR1,opt_dil_O2_ratio ; load FSR1 with base address of opt_dil_O2_ratio
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1568 rcall deco_setup_copy ; copy all dil O2 ratios
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1569 lfsr FSR1,opt_dil_He_ratio ; load FSR1 with base address of opt_dil_He_ratio
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1570 rcall deco_setup_copy ; copy all dil He ratios
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1571 lfsr FSR1,opt_dil_type ; load FSR1 with base address of opt_dil_type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1572 rcall deco_setup_copy ; copy all dil types
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1573 lfsr FSR1,opt_dil_change ; load FSR1 with base address of opt_dil_change
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1574 rcall deco_setup_copy ; copy all dil change depths
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1575 ; switch to CCR / pSCR mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1576 bsf lo,DECO_MODE_LOOP_FLAG ; loop flag is set in both, CCR and pSCR mode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1577 bcf lo,DECO_MODE_PSCR_FLAG ; clear pSCR mode flag by default
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1578 btfsc FLAG_pscr_mode ; check if we are in pSCR mode
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1579 bsf lo,DECO_MODE_PSCR_FLAG ; YES - set additional flag for pSCR mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1580 movff lo,char_O_deco_status ; bank safe write-back of char_O_deco_status
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1581 return
0
heinrichsweikamp
parents:
diff changeset
1582
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1583 deco_setup_copy:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1584 movlw NUM_GAS ; load loop counter with number of gases (5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1585 deco_setup_copy_loop:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1586 movff POSTINC1,POSTINC2 ; copy from (FSR1) to (FSR2)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1587 decfsz WREG ; decrement loop counter and check if it became 0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1588 bra deco_setup_copy_loop ; NO - not yet, loop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1589 return ; YES - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1590
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1591
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1592 global setup_gas_registers
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1593 setup_gas_registers: ; with currently breathed gas in WREG (1-5 or 6)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1594 movwf active_gas ; set as current gas
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1595 movlw .6
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1596 cpfseq active_gas ; gas = gas6 ?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1597 bra setup_gas_registers_15 ; NO - load gas 1-5
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1598 movff gas6_O2_ratio,char_I_O2_ratio ; copy gas6 O2 ratio to deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1599 movff gas6_He_ratio,char_I_He_ratio ; copy gas6 H2 ratio to deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1600 movlw .3 ; declare gas6 as a deco gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1601 movff WREG,char_I_current_gas_type; copy gas type to deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1602 movff curr_depth,char_I_gas6_depth; set current depth as change depth
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1603 bra setup_gas_registers_com ; continue with common part
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1604 setup_gas_registers_15:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1605 decf active_gas,W ; 1-5 -> 0-4
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1606 lfsr FSR1,opt_gas_O2_ratio
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1607 movff PLUSW1,char_I_O2_ratio ; copy gas 1-5 O2 ratio to deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1608 lfsr FSR1,opt_gas_He_ratio
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1609 movff PLUSW1,char_I_He_ratio ; copy gas 1-5 He ratio to deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1610 lfsr FSR1,opt_gas_type ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1611 movff PLUSW1,char_I_current_gas_type ; copy gas 1-5 type (0=Disabled, 1=First, 2=Travel, 3=Deco)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1612 setup_gas_registers_com:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1613 movff char_O_main_status,lo ; working copy of char_O_main_status in bank common
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1614 bcf lo,DECO_MODE_PSCR_FLAG ; clear the pSCR-mode flag (may not be set, but never mind)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1615 bcf lo,DECO_MODE_LOOP_FLAG ; clear the loop/CCR-mode flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1616 movff lo,char_O_main_status ; bank safe write-back of char_O_main_status
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1617 movf active_gas,W ; reload WREG with gas 1-5 or 6 (important!)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1618 return
137
28b057aa9f75 Simplify gas change
heinrichsweikamp
parents: 134
diff changeset
1619
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1620 global setup_dil_registers
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1621 setup_dil_registers: ; with currently breathed gas in WREG (1-5 or 6)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1622 btfsc FLAG_bailout_mode ; check if in bailout condition | --------------- FOR SAFETY ONLY --------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1623 bra setup_gas_registers ; revert to setting up OC gases in bailout condition | This branch should never happen to be taken...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1624 movwf active_dil ; set as current diluent
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1625 movlw .6
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1626 cpfseq active_dil ; diluent = gas6 ?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1627 bra setup_dil_registers_15 ; NO - load diluent 1-5
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1628 movff gas6_O2_ratio,char_I_O2_ratio ; copy gas6 O2 ratio to deco engine
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1629 movff gas6_He_ratio,char_I_He_ratio ; copy gas6 H2 ratio to deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1630 movlw .2 ; declare gas6 as a normal diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1631 movff WREG,char_I_current_gas_type; copy gas type to deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1632 movff curr_depth,char_I_gas6_depth; set current depth as change depth
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1633 bra setup_dil_registers_com ; continue with common part
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1634 setup_dil_registers_15:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1635 decf active_dil,W ; 1-5 -> 0-4
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1636 lfsr FSR1,opt_dil_O2_ratio
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1637 movff PLUSW1,char_I_O2_ratio ; copy diluent 1-5 O2 ratio to deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1638 lfsr FSR1,opt_dil_He_ratio
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1639 movff PLUSW1,char_I_He_ratio ; copy diluent 1-5 He ratio to deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1640 lfsr FSR1,opt_dil_type ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1641 movff PLUSW1,char_I_current_gas_type ; copy dil type (0=Disabled, 1=First, 2=Normal)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1642 setup_dil_registers_com:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1643 movff char_O_main_status,lo ; working copy of char_O_main_status in bank common
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1644 bsf lo,DECO_MODE_LOOP_FLAG ; loop flag is set in both, CCR and pSCR mode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1645 bcf lo,DECO_MODE_PSCR_FLAG ; clear pSCR mode flag by default
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1646 btfsc FLAG_pscr_mode ; check if we are in pSCR mode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1647 bsf lo,DECO_MODE_PSCR_FLAG ; YES - set additional flag for pSCR mode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1648 movff lo,char_O_main_status ; bank safe write-back of char_O_main_status
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1649 movf active_dil,W ; reload WREG with diluent 1-5 or 6 (important!)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1650 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1651
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1652
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1653 divemode_option_gaschange: ; switch to the "better gas" / "better diluent"
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1654 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1655 bra divemode_option_gaschange_oc; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1656 btfsc FLAG_bailout_mode ; in bailout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1657 bra divemode_option_gaschange_oc; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1658 divemode_option_gaschange_loop: ; in CCR/pSCR mode and not in bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1659 movff best_dil_number,menupos1 ; NO - select best diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1660 bcf better_dil_available ; - clear flag immediately
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1661 bra divemode_option_gaschange3 ; - continue with common part
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1662 divemode_option_gaschange_oc: ; in OC or bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1663 movff best_gas_number,menupos1 ; select best gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1664 bcf better_gas_available ; clear flag immediately
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1665 divemode_option_gaschange3 ; common part
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1666 bsf divemode_gaschange ; command a gas/diluent change
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1667 call menuview_toggle_reset ; terminate the options menu
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1668 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1669
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1670 divemode_option0: ; start/setup dive mode menu
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1671 call TFT_clear_divemode_menu ; clear menu area
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1672 bcf menuview
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1673 call do_main_divemenu
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1674
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1675 global divemode_option0_return
0
heinrichsweikamp
parents:
diff changeset
1676 divemode_option0_return:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1677 ; movlw .1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1678 ; movwf menupos1 ; set to first option in dive mode menu
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1679 call TFT_divemode_menu_cursor ; show the cursor
0
heinrichsweikamp
parents:
diff changeset
1680 movlw divemode_menu_timeout
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1681 movwf timeout_counter2 ; timeout for dive mode menu
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1682 bsf divemode_menu ; set flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1683 clrf menupos2 ; clear option counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1684 goto diveloop_loop4 ; go back to dive loop (menu processor trashes STKPTR!)
0
heinrichsweikamp
parents:
diff changeset
1685
heinrichsweikamp
parents:
diff changeset
1686 divemode_option4:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1687 movlw d'58' ; two seconds left
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1688 movwf timeout_counter1+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1689 movlw apnoe_timeout-1 ; apnoe timeout [min]
0
heinrichsweikamp
parents:
diff changeset
1690 movwf apnoe_timeout_counter
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1691 btfss simulatormode_active ; in simulator mode?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1692 return ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1693 ;bra divemode_option1 ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1694
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1695 divemode_option1: ; quit simulation mode
0
heinrichsweikamp
parents:
diff changeset
1696 banksel isr_backup
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1697 movlw LOW .1000
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1698 movwf sim_pressure+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1699 movlw HIGH .1000
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1700 movwf sim_pressure+1 ; set to 0m -> end of dive
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1701 banksel common
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1702 call menuview_toggle_reset ; reset to zero (zero = no menu view)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1703
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1704 btfss FLAG_apnoe_mode ; in apnoe mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1705 return ; NO - done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1706 movlw d'58' ; two seconds left
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1707 movwf timeout_counter1+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1708 movlw apnoe_timeout-1 ; apnoe timeout [min]
0
heinrichsweikamp
parents:
diff changeset
1709 movwf apnoe_timeout_counter
heinrichsweikamp
parents:
diff changeset
1710 return
heinrichsweikamp
parents:
diff changeset
1711
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1712 divemode_option3: ; minus 1m
0
heinrichsweikamp
parents:
diff changeset
1713 banksel isr_backup
315
4f83470dcece VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents: 310
diff changeset
1714 movlw d'100'
0
heinrichsweikamp
parents:
diff changeset
1715 subwf sim_pressure+0
heinrichsweikamp
parents:
diff changeset
1716 movlw .0
heinrichsweikamp
parents:
diff changeset
1717 subwfb sim_pressure+1
heinrichsweikamp
parents:
diff changeset
1718 rcall divemode_simulator_check_limits
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1719 banksel common
0
heinrichsweikamp
parents:
diff changeset
1720 return
heinrichsweikamp
parents:
diff changeset
1721
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1722 divemode_option2: ; plus 1m
0
heinrichsweikamp
parents:
diff changeset
1723 banksel isr_backup
315
4f83470dcece VSIbar #3: remaining changes for the split style bar
Janos Kovacs <kovjanos@gmail.com>
parents: 310
diff changeset
1724 movlw d'100'
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1725 addwf sim_pressure+0,F
0
heinrichsweikamp
parents:
diff changeset
1726 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1727 addwfc sim_pressure+1,F
0
heinrichsweikamp
parents:
diff changeset
1728 rcall divemode_simulator_check_limits
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1729 banksel common
0
heinrichsweikamp
parents:
diff changeset
1730 return
heinrichsweikamp
parents:
diff changeset
1731
heinrichsweikamp
parents:
diff changeset
1732 divemode_option5:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1733 call menuview_toggle_reset ; reset to zero (zero = no menu view)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1734 bsf reset_average_depth ; set flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1735 return
0
heinrichsweikamp
parents:
diff changeset
1736
216
973a0969e0ac NEW: On-board simulator can increase divetime in 5min steps
heinrichsweikamp
parents: 206
diff changeset
1737 divemode_option6:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1738 ; advance tissues and deco by 5 minutes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1739 movlw .5 ; + 5 minutes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1740 movff WREG,char_I_sim_advance_time; copy to mailbox
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1741 call restart_deco_engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1742
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1743 ; stop divetime incrementing in ISR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1744 bcf divemode2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1745
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1746 ; add 5 minutes to divemins
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1747 movlw .5
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1748 addwf divemins+0,F
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1749 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1750 addwfc divemins+1,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1751
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1752 ; add 5 minutes (5 * 60 seconds) to total_divetime_seconds
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1753 movlw LOW (.5*.60)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1754 addwf total_divetime_seconds+0,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1755 movlw HIGH (.5*.60)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1756 addwfc total_divetime_seconds+1,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1757
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1758 ; continue dive time incrementing in ISR
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1759 bsf divemode2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1760
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1761 ; add 5 minutes (5 * 60 seconds) to resettable time accumulator
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1762 movlw LOW (.5*.60)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1763 addwf average_divesecs+0,F
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1764 movlw HIGH (.5*.60)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1765 addwfc average_divesecs+1,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1766
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1767 ; add 5 minutes (5 * 60 seconds) to total time accumulator
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1768 movlw LOW (.5*.60)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1769 addwf average_divesecs_total+0,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1770 movlw HIGH (.5*.60)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1771 addwfc average_divesecs_total+1,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1772
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1773
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1774 ; calculate 300 x depth in mbar (300 = 5 min * 60 sec/min)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1775 SAFE_2BYTE_COPY rel_pressure, xB
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1776 movlw LOW (.5*.60)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1777 movwf xA+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1778 movlw HIGH (.5*.60)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1779 movwf xA+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1780 call mult16x16 ; xA*xB=xC
386
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1781
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1782 ; add to the resettable depth accumulator
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1783 movf xC+0,W
386
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1784 addwf average_depth_hold+0,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1785 movf xC+1,W
386
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1786 addwfc average_depth_hold+1,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1787 movf xC+2,W
386
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1788 addwfc average_depth_hold+2,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1789 movf xC+3,W
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1790 addwfc average_depth_hold+3,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1791
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1792 ; add to the total depth accumulator
386
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1793 movf xC+0,w
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1794 addwf average_depth_hold_total+0,F
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1795 movf xC+1,w
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1796 addwfc average_depth_hold_total+1,F
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1797 movf xC+2,w
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
1798 addwfc average_depth_hold_total+2,F
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1799 movf xC+3,w
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1800 addwfc average_depth_hold_total+3,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1801
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1802 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1803 ; update backtracking data
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1804 movlw .5 ; add backtrack data for 5 minutes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1805 call update_backtrack ; make it so
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1806 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1807
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1808 goto menuview_toggle_reset ; and return...
216
973a0969e0ac NEW: On-board simulator can increase divetime in 5min steps
heinrichsweikamp
parents: 206
diff changeset
1809
254
5fe7aff622f3 preparations to set a course for the compass display
heinrichsweikamp
parents: 239
diff changeset
1810 divemode_option7:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1811 ; Store heading for compass view
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1812 movff compass_heading_shown+0,compass_bearing+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1813 movff compass_heading_shown+1,compass_bearing+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1814 bsf compass_bearing_set ; set flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1815 goto menuview_toggle_reset ; and return...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1816
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1817 divemode_option8:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1818 bsf alternative_divelayout ; set flag for alternative layout mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1819 call menuview_toggle_reset ; terminate the pre-menu
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1820 call TFT_ClearScreen ; clear the whole screen
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1821 bsf FLAG_TFT_divemode_mask_alt ; set flag to draw the alternative mask
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1822 movff menupos3,customview_divemode; back-up the custom view shown in normal layout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1823 clrf menupos3 ; select the default alternative layout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1824 call customview_mask_alternative ; draw the default alternative layout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1825 return ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1826
216
973a0969e0ac NEW: On-board simulator can increase divetime in 5min steps
heinrichsweikamp
parents: 206
diff changeset
1827
0
heinrichsweikamp
parents:
diff changeset
1828 divemode_simulator_check_limits:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1829 ; check limits (150m and 0m)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1830 movlw LOW d'16000' ; compare to 16 bar = 16000 mbar (150m)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1831 subwf sim_pressure+0,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1832 movlw HIGH d'16000'
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1833 subwfb sim_pressure+1,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1834 bnc divemode_simulator_check_limits2 ; no carry = borrow = not deeper
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1835
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1836 ; too deep, limit to 150m
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1837 movlw LOW d'16000'
0
heinrichsweikamp
parents:
diff changeset
1838 movwf sim_pressure+0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1839 movlw HIGH d'16000'
0
heinrichsweikamp
parents:
diff changeset
1840 movwf sim_pressure+1
heinrichsweikamp
parents:
diff changeset
1841 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1842
0
heinrichsweikamp
parents:
diff changeset
1843 divemode_simulator_check_limits2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1844 movlw LOW d'1000' ; compare to 1 bar == 0m == 1000 mbar
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1845 subwf sim_pressure+0,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1846 movlw HIGH d'1000'
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1847 subwfb sim_pressure+1,W
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1848 btfsc STATUS,C ; no carry = borrow = not deeper
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1849 return ; deeper than 0 m == ok
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1850 ; too shallow, limit to 0m
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1851 movlw LOW d'1000'
0
heinrichsweikamp
parents:
diff changeset
1852 movwf sim_pressure+0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1853 movlw HIGH d'1000'
0
heinrichsweikamp
parents:
diff changeset
1854 movwf sim_pressure+1
heinrichsweikamp
parents:
diff changeset
1855 return
heinrichsweikamp
parents:
diff changeset
1856
heinrichsweikamp
parents:
diff changeset
1857 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1858 ; Find the best gas and diluent for the current depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1859 ; and check if a gas/diluent change is to be advised.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1860 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1861 ; Output: best_gas_number : number of best gas, 0= none avail, 255= not computed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1862 ; best_dil_number : number of best dil, 0= none avail, 255= not computed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1863 ; better_gas_available : flag indicating if a change is advised
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1864 ; better_dil_available : flag indicating if a change is advised
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1865 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1866 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1867 ; in CCR and pSCR mode: - checks both, gases and diluents for respective best gas / best diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1868 ; - if not in bailout, sets better_dil_available on diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1869 ; - if in bailout, sets better_gas_available on OC gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1870 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1871 ; in OC mode : - checks only gases for best gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1872 ; - sets better_gas_available on OC gases
0
heinrichsweikamp
parents:
diff changeset
1873 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1874 check_gas_best:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1875 movff amb_press_10+0,xA+0 ; copy ambient pressure / 10 into xA:2, will be used by ppO2 min/max checks later
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1876 movff amb_press_10+1,xA+1 ; ...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1877 ; set maximum ppO2 allowed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1878 movff char_I_ppO2_max,ppO2_max ; max ppO2 for working phase (default)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1879 movff char_O_deco_info,lo ; bank-safe copy of deco info vector
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1880 btfsc lo,deco_flag ; is the ppo2 deco limit enabled?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1881 movff char_I_ppO2_max_deco,ppO2_max ; YES - replace by max ppO2 for deco phase
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1882 ; check dive mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1883 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1884 bra check_gas_best_gas ; YES - skip diluents, check for best gas only
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1885
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1886 check_gas_best_dil:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1887 ; set minimum ppO2 required
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1888 movff char_I_ppO2_min,WREG ; min ppO2 for pure diluent in CCR mode (default)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1889 btfsc FLAG_pscr_mode ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1890 movff char_I_ppO2_min_loop,ppO2_min ; YES - replace by min ppO2 for pure diluent in pSCR mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1891 ; preset results to nothing found
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1892 clrf best_gas_num ; initialize best diluent as 0 = nothing found yet
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1893 bcf better_dil_available ; =1: a better diluent is available and a gas change is advised in divemode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1894 ; ; current diluent = 'gas6' ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1895 ; movlw .6 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1896 ; cpfseq active_dil ; using 'gas6' as current diluent?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1897 ; bra check_gas_best_dil0 ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1898 ; bra check_gas_best_dil3 ; YES - suppress better diluent search in this case
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1899 ;check_gas_best_dil0:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1900 ; check all diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1901 lfsr FSR1,opt_dil_O2_ratio ; set base address for diluent arrays
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1902 movff active_dil,lo ; number of currently used diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1903 setf best_gas_depth ; initialize change depth of best dil found so far to 255 meter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1904 ; original code
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1905 clrf check_gas_num
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1906 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1907 rcall check_gas_best_common ; check diluent 1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1908 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1909 rcall check_gas_best_common ; check diluent 2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1910 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1911 rcall check_gas_best_common ; check diluent 3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1912 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1913 rcall check_gas_best_common ; check diluent 4
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1914 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1915 rcall check_gas_best_common ; check diluent 5
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1916 ; alternative code
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1917 ; movlw .5
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1918 ; movwf check_gas_num
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1919 ;check_gas_best_dil_loop:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1920 ; rcall check_gas_best_common
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1921 ; decfsz check_gas_num
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1922 ; bra check_gas_best_dil_loop
0
heinrichsweikamp
parents:
diff changeset
1923 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1924 ; store result
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1925 movff best_gas_num,best_dil_number ; store new best diluent found (1-5 or 0 of no usable diluent available)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1926 ; check if change advices shall be given in general
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1927 btfsc FLAG_bailout_mode ; in bailout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1928 bra check_gas_best_gas ; YES - no better diluent advice when in bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1929 check_gas_best_dil1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1930 ; check if a change advice shall be given right now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1931 movf best_dil_number,W ; load number of best diluent into WREG (1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1932 bz check_gas_best_dil3 ; has a best diluent been found at all? NO - nothing to signal for
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1933 cpfseq active_dil ; is this the currently used diluent?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1934 bra check_gas_best_dil2 ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1935 bra check_gas_best_dil3 ; YES - no need to signal a better diluent if this diluent is already in use
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1936 check_gas_best_dil2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1937 btfsc setpoint_fallback ; is a fallback warning active?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1938 bra check_gas_best_dil3 ; YES - suppress better diluent prompt in this case
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1939 ; not using the best gas - show better diluent hint whenever a better diluent is available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1940 bsf better_dil_available ; signal that a better diluent is available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1941 bsf FLAG_TFT_active_gas_divemode ; redraw gas/setpoint/diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1942 check_gas_best_dil3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1943 btfss better_dil_available ; shall a better diluent be signaled for?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1944 bcf blinking_better_dil ; NO - clear blinking flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1945 ; continue with checking for best bailout gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1946
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1947 check_gas_best_gas:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1948 ; set minimum ppO2 required
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1949 movff char_I_ppO2_min,ppO2_min ; min ppO2 for OC/Bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1950 ; preset results to nothing found
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1951 clrf best_gas_num ; initialize best gas as 0 = nothing found yet
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1952 bcf better_gas_available ; =1: a better gas is available and a gas change is advised in divemode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1953 ; ; current gas = 'gas6' ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1954 ; movlw .6 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1955 ; cpfseq active_gas ; using 'gas6' as current gas?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1956 ; bra check_gas_best_gas0 ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1957 ; bra check_gas_best_gas3 ; YES - suppress better gas search in this case
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1958 ;check_gas_best_gas0:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1959 ; check all gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1960 lfsr FSR1,opt_gas_O2_ratio ; set base address for gas arrays
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1961 movff active_gas,lo ; number of currently used gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1962 setf best_gas_depth ; initialize change depth of best gas found so far to 255 meter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1963 ; original code
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1964 clrf check_gas_num
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1965 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1966 rcall check_gas_best_common ; check gas 1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1967 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1968 rcall check_gas_best_common ; check gas 2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1969 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1970 rcall check_gas_best_common ; check gas 3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1971 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1972 rcall check_gas_best_common ; check gas 4
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1973 incf check_gas_num,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1974 rcall check_gas_best_common ; check gas 5
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1975 ; alternative code
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1976 ; movlw .5
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1977 ; movwf check_gas_num
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1978 ;check_gas_best_gas_loop:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1979 ; rcall check_gas_best_common
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1980 ; decfsz check_gas_num
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1981 ; bra check_gas_best_gas_loop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1982 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1983 ; store result
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1984 movff best_gas_num,best_gas_number ; store new best gas found (1-5 or 0 of no usable gas available)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1985 ; check if change advices shall be given in general
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1986 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1987 bra check_gas_best_gas1 ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1988 btfsc FLAG_bailout_mode ; in bailout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1989 bra check_gas_best_gas1 ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1990 return ; NO - no better (OC) gas advice when not in OC or bailout mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1991 check_gas_best_gas1: ; check if we are already on the best gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1992 ; check if a change advice shall be given right now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1993 movf best_gas_number,W ; load number of best gas into WREG (1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1994 bz check_gas_best_gas3 ; has a best gas been found at all? NO - nothing to signal for
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1995 cpfseq active_gas ; is this the currently used gas?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1996 bra check_gas_best_gas2 ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1997 bra check_gas_best_gas3 ; YES - no need to signal a better gas if this gas is already in use
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1998 check_gas_best_gas2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1999 ; not using the best gas - show better gas hint whenever a better gas is available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2000 bsf better_gas_available ; YES - signal that a better gas is available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2001 bsf FLAG_TFT_active_gas_divemode ; YES - redraw gas/setpoint/diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2002 check_gas_best_gas3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2003 btfss better_gas_available ; shall a better gas be signaled for?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2004 bcf blinking_better_gas ; NO - clear blinking flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2005 return
0
heinrichsweikamp
parents:
diff changeset
2006
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2007 check_gas_best_common: ; with gas to be checked in check_gas_num (1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2008 ; ; and current gas in lo (1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2009 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2010 ; Memory Map:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2011 ; ---------------------------------------------------------------------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2012 ; opt_gas_O2_ratio res 5 ; base address for gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2013 ; opt_dil_O2_ratio res 5 ; base address for diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2014 ; opt_gas_He_ratio res 5 ; (not needed here)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2015 ; opt_dil_He_ratio res 5 ; (not needed here)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2016 ; opt_gas_type res 5 ; has offset of 20 bytes from base address for gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2017 ; opt_dil_type res 5 ; has offset of 20 bytes from base address for diluents
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2018 ; opt_gas_change res 5 ; has offset of 10 bytes from opt_gas_type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2019 ; opt_dil_change res 5 ; has offset of 10 bytes from opt_dil_type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2020
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2021 ; get gas data
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2022 decf check_gas_num,W ; (1-5) -> (0-4) into WREG to be used as index
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2023 movff PLUSW1,check_gas_O2_ratio ; load O2 ratio (%) of current gas/dil into check_gas_O2_ratio
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2024 addlw .20 ; add offset of 20 bytes to index type in opt_gas_type/opt_dil_type
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2025 movff PLUSW1,check_gas_type ; load type of current gas/dil into check_gas_type (0=disabled, 1=first, 2=travel/normal, 3=deco/-)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2026 addlw .10 ; add offset of 10 bytes to index change depth in opt_gas_change/opt_dil_change
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2027 movff PLUSW1,check_gas_depth ; load change depth of current gas/dil into check_gas_depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2028 ; check if gas is usable (i.e. not disabled)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2029 tstfsz check_gas_type ; type = disabled (0)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2030 bra check_gas_best_common0 ; NO - continue checks
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2031 movf check_gas_num,W ; YES - get the number of the gas to be checked (1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2032 cpfseq lo ; - is this the currently used gas?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2033 return ; NO - skip disabled gases which are not the current gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2034 bra check_gas_best_common1 ; YES - a gas in use overrides it's disabled status, therefore treat it as available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2035 check_gas_best_common0:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2036 ; skip deco gases (type=3) if not in deco mode, but search among all enabled gases when in loop or bailout mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2037 movlw .3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2038 cpfseq check_gas_type ; type = deco (3)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2039 bra check_gas_best_common1 ; NO - proceed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2040 btfsc FLAG_bailout_mode ; YES - in bailout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2041 bra check_gas_best_common1 ; YES - proceed, include deco gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2042 movff char_O_main_status,WREG ; NO - get main deco mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2043 btfsc WREG,DECO_MODE_LOOP_FLAG ; - in loop mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2044 bra check_gas_best_common1 ; YES - proceed, include deco gases
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2045 movff char_O_deco_info,WREG ; NO - get deco info vector
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2046 btfss WREG,deco_flag ; - in deco mode (deco_flag set), i.e. use of deco gases allowed?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2047 return ; NO - skip deco gas while not in deco mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2048 check_gas_best_common1: ; YES - proceed
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2049 ; ; check if gas change depth is below minimum change depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2050 ; movlw minimum_change_depth ; for value see definition in hwos.inc
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2051 ; cpfsgt check_gas_depth ; change depth of checked gas > minimum_change_depth?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2052 ; return ; NO - change depth not deep enough, skip and check next gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2053 ; check if gas is usable, i.e. its change depth is below or equal to the current depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2054 movf curr_depth,W ; load current depth (in m) into WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2055 cpfslt check_gas_depth ; change depth of checked gas < (shallower than) current depth?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2056 bra check_gas_best_common2 ; NO - gas is usable
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2057 return ; YES - gas is not usable
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2058 check_gas_best_common2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2059 ; check if this gas is the first best gas candidate
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2060 movf best_gas_num,W ; get best gas found so far (1-5) or 0 if none found yet
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2061 tstfsz WREG ; has a best gas candidate been found yet?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2062 bra check_gas_best_common3 ; YES - check if the new one is better than the one we have so far
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2063 bra check_gas_best_common4 ; NO - no need to do the above mentioned check
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2064 check_gas_best_common3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2065 ; check if the change depth of the checked gas is < (shallower) than the change depth of the best gas found so far
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2066 movf best_gas_depth,W ; load change depth of best gas so far into WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2067 cpfslt check_gas_depth ; change depth of checked gas < (shallower than) change depth of best gas so far?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2068 return ; NO - this gas is not better than the best already found
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2069 check_gas_best_common4:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2070 ; check if the gas fits into the ppO2 limits
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2071 movff check_gas_O2_ratio,xB+0 ; xB = O2 ratio, xA is still loaded with (p_amb / 10)
69
50697bd41c54 +CHANGE: Some French Translations
heinrichsweikamp
parents: 55
diff changeset
2072 clrf xB+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2073 call mult16x16 ; xC = O2 ratio * (p_amb / 10)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2074 ; check for very high ppO2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2075 tstfsz xC+2 ; O2_ratio * p_amb / 10 > 65536, i.e. ppO2 > 6.55 bar ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2076 return ; YES - gas is not usable
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2077 btfsc xC+1,7 ; check if ppO2 > 3.30 bar
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2078 return ; YES - gas is not usable
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2079 ; check for low ppO2
526
0d1cda9f2d43 BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents: 521
diff changeset
2080 movff xC+0,sub_a+0
0d1cda9f2d43 BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents: 521
diff changeset
2081 movff xC+1,sub_a+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2082 movf ppO2_min,W
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2083 mullw .100 ; char_I_ppO2_min * 100
526
0d1cda9f2d43 BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents: 521
diff changeset
2084 movff PRODL,sub_b+0
0d1cda9f2d43 BUGFIX: Skip MOD Test for CCR in Sensor modes (OSTC cR and OSTC3 only)
heinrichsweikamp
parents: 521
diff changeset
2085 movff PRODH,sub_b+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2086 call subU16 ; sub_c = sub_a - sub_b
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2087 btfsc neg_flag ; within limit?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2088 return ; NO - too low, gas is not usable
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2089 ; check for high ppO2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2090 movf ppO2_max,W
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2091 mullw .100 ; ppO2_max * 100
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2092 movff PRODL,sub_b+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2093 movff PRODH,sub_b+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2094 infsnz sub_b+0,F ; add 1 mbar to allowance to avoid exclusion on equal
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2095 incf sub_b+1,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2096 call subU16 ; sub_c = sub_a - sub_b
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2097 btfss neg_flag ; within limit?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2098 return ; NO - too high, gas is not usable
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2099 ; we have a (new) best gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2100 movff check_gas_num, best_gas_num ; set checked gas (1-5) as best gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2101 movff check_gas_depth,best_gas_depth ; memorize its change depth
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2102 return
0
heinrichsweikamp
parents:
diff changeset
2103
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2104
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2105 ;=============================================================================
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2106 ; Check for Auto-SP
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2107 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2108 check_dive_autosp: ; check for Auto-SP
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2109 movff opt_ccr_mode,WREG ; =0: Fixed SP, =1: Sensor, =2: Auto SP
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2110 sublw .2 ; opt_ccr_mode = 2 (Auto SP)?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2111 bz check_dive_autosp2 ; YES - check
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2112 return ; NO - return for sensor or fixed mode
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2113 check_dive_autosp2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2114 ; Check SP2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2115 btfsc sp2_switched ; SP 2 used so far?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2116 bra check_dive_autosp3 ; YES - continue with SP 3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2117 movff char_I_setpoint_change+1,lo ; NO - get depth in m
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2118 tstfsz lo ; - SP change depth = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2119 bra check_dive_autosp2a ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2120 bra check_dive_autosp3 ; YES - continue with SP 3
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2121 check_dive_autosp2a:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2122 decf lo,W ; SP change depth -1 -> WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2123 cpfsgt curr_depth ; current depth > change depth - 1 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2124 bra check_dive_autosp3 ; NO - continue with SP 3
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2125 ; auto switch to SP2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2126 movff char_I_setpoint_cbar+1,char_I_const_ppO2 ; YES - use SP
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2127 rcall xmit_sp_set_flag ; - send SP to external devices
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2128 bsf sp2_switched ; - set SP 2 used flag
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2129 check_dive_autosp3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2130 ; Check SP3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2131 btfsc sp3_switched ; SP 3 used so far?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2132 bra check_dive_autosp4 ; YES - continue with SP 4
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2133 movff char_I_setpoint_change+2,lo ; NO - get depth in m
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2134 tstfsz lo ; - SP change depth = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2135 bra check_dive_autosp3a ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2136 bra check_dive_autosp4 ; YES - continue with SP 4
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2137 check_dive_autosp3a:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2138 decf lo,W ; SP change depth -1 -> WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2139 cpfsgt curr_depth ; current depth > change depth - 1 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2140 bra check_dive_autosp4 ; NO - continue with SP 4
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2141 ; auto switch to SP3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2142 movff char_I_setpoint_cbar+2,char_I_const_ppO2 ; YES - use SP
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2143 rcall xmit_sp_set_flag ; - send SP to external devices
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2144 bsf sp3_switched ; - set SP 3 used flag
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2145 check_dive_autosp4:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2146 ; Check SP4
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2147 btfsc sp4_switched ; SP 4 used so far?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2148 bra check_dive_autosp5 ; YES - continue with SP 5
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2149 movff char_I_setpoint_change+3,lo ; NO - get depth in m
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2150 tstfsz lo ; - SP change depth = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2151 bra check_dive_autosp4a ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2152 bra check_dive_autosp5 ; YES - continue with SP 5
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2153 check_dive_autosp4a:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2154 decf lo,W ; SP change depth -1 -> WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2155 cpfsgt curr_depth ; current depth > change depth - 1 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2156 bra check_dive_autosp5 ; NO - continue with SP 5
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2157 ; auto switch to SP4
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2158 movff char_I_setpoint_cbar+3,char_I_const_ppO2 ; YES - use SP
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2159 rcall xmit_sp_set_flag ; - send SP to external devices
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2160 bsf sp4_switched ; - set SP 4 used flag
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2161 check_dive_autosp5:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2162 ; Check SP5
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2163 btfsc sp5_switched ; SP 5 used so far?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2164 bra check_dive_autosp6 ; YES - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2165 movff char_I_setpoint_change+4,lo ; NO - get depth in m
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2166 tstfsz lo ; - SP change depth = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2167 bra check_dive_autosp5a ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2168 bra check_dive_autosp6 ; YES - done
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2169 check_dive_autosp5a:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2170 decf lo,W ; SP change depth -1 -> WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2171 cpfsgt curr_depth ; current depth > change depth - 1 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2172 bra check_dive_autosp6 ; NO - done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2173 ; auto switch to SP5
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2174 movff char_I_setpoint_cbar+4,char_I_const_ppO2 ; YES - use SP
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2175 rcall xmit_sp_set_flag ; - send SP to external devices
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2176 bsf sp5_switched ; - set SP 5 used flag
352
5c6da9fa5cb0 add setpoint change to first sample in CCR mode
heinrichsweikamp
parents: 339
diff changeset
2177 check_dive_autosp6:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2178 return
352
5c6da9fa5cb0 add setpoint change to first sample in CCR mode
heinrichsweikamp
parents: 339
diff changeset
2179
5c6da9fa5cb0 add setpoint change to first sample in CCR mode
heinrichsweikamp
parents: 339
diff changeset
2180 xmit_sp_set_flag:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2181 movff char_I_const_ppO2,WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2182 call transmit_setpoint ; transmit current setpoint from WREG (in cbar) to external electronics
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2183 bsf setpoint_changed ; set flag (for profile)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2184 bsf event_occured ; set event flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2185 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2186
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2187 set_logbook_marker:
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2188 bcf FLAG_set_marker ; clear flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2189 movlw d'6' ; set type of alarm (manual marker)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2190 movwf AlarmType ; copy to alarm register
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2191 bsf event_occured ; set event flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2192 return
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2193
0
heinrichsweikamp
parents:
diff changeset
2194 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2195 ; Setup everything to enter dive mode
0
heinrichsweikamp
parents:
diff changeset
2196 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2197 global dive_boot_oc_bail
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2198 dive_boot_oc_bail:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2199 ; copy opt_gas_types into backup (for "lost gas" feature)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2200 movff opt_gas_type+0,opt_gas_type_backup+0 ; 0=Disabled, 1=First, 2=Travel, 3=Deco
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2201 movff opt_gas_type+1,opt_gas_type_backup+1 ; 0=Disabled, 1=First, 2=Travel, 3=Deco
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2202 movff opt_gas_type+2,opt_gas_type_backup+2 ; 0=Disabled, 1=First, 2=Travel, 3=Deco
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2203 movff opt_gas_type+3,opt_gas_type_backup+3 ; 0=Disabled, 1=First, 2=Travel, 3=Deco
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2204 movff opt_gas_type+4,opt_gas_type_backup+4 ; 0=Disabled, 1=First, 2=Travel, 3=Deco
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2205 ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2206 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2207
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2208 global dive_boot_oc
0
heinrichsweikamp
parents:
diff changeset
2209 dive_boot_oc:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2210 ; set-up registers
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2211 rcall get_first_gas_to_WREG ; get first gas (1-5) into WREG
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2212 rcall setup_gas_registers ; set-up of gas parameters of currently breathed gas (with WREG = gas 1-5)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2213 rcall deco_setup_oc_gases ; set-up of gas list for deco calculations (with WREG = gas 1-5)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2214 return
0
heinrichsweikamp
parents:
diff changeset
2215
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2216 global dive_boot_cc
0
heinrichsweikamp
parents:
diff changeset
2217 dive_boot_cc:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2218 ; copy opt_dil_types into backup (for "lost diluent" feature)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2219 movff opt_dil_type+0,opt_dil_type_backup+0 ; 0=Disabled, 1=First, 2=Normal
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2220 movff opt_dil_type+1,opt_dil_type_backup+1 ; 0=Disabled, 1=First, 2=Normal
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2221 movff opt_dil_type+2,opt_dil_type_backup+2 ; 0=Disabled, 1=First, 2=Normal
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2222 movff opt_dil_type+3,opt_dil_type_backup+3 ; 0=Disabled, 1=First, 2=Normal
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2223 movff opt_dil_type+4,opt_dil_type_backup+4 ; 0=Disabled, 1=First, 2=Normal
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2224 ; clear flags
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2225 bcf FLAG_bailout_mode ; =1: bailout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2226 bcf setpoint_fallback ; =1: fallback to SP1 due to external O2 sensor failure
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2227 ; set-up registers
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2228 rcall get_first_dil_to_WREG ; get first diluent (1-5) into WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2229 rcall setup_dil_registers ; set-up of diluent parameters for currently breathed diluent (with WREG = current diluent 1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2230 rcall deco_setup_cc_diluents ; set-up of diluent list for deco calculations (with WREG = current diluent 1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2231 ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2232 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2233
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2234 dive_boot_cc_part2:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2235 ; revoke sensors from usage if they do not have a valid calibration
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2236 bsf use_O2_sensor1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2237 bsf use_O2_sensor2
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2238 bsf use_O2_sensor3
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2239 btfss sensor1_calibrated_ok
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2240 bcf use_O2_sensor1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2241 btfss sensor2_calibrated_ok
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2242 bcf use_O2_sensor2
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2243 btfss sensor3_calibrated_ok
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2244 bcf use_O2_sensor3
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2245 ; check for external HUD/ppO2 Monitor
583
6636cbe64c6d optical input work
heinrichsweikamp
parents: 582
diff changeset
2246 btfss optical_input ; do we have an optical input?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2247 bra dive_boot_cc_part2_1 ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2248 ; copy (initial) valid flags from HUD/ppO2 Monitor
583
6636cbe64c6d optical input work
heinrichsweikamp
parents: 582
diff changeset
2249 btfsc sensor1_active
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2250 bsf use_O2_sensor1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2251 btfsc sensor2_active
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2252 bsf use_O2_sensor2
583
6636cbe64c6d optical input work
heinrichsweikamp
parents: 582
diff changeset
2253 btfsc sensor3_active
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2254 bsf use_O2_sensor3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2255 dive_boot_cc_part2_1:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2256 ; In pSCR mode, only settings 0 (calculated ppO2) and 1 (ppO2 from sensors) are defined.
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2257 ; In case we still have 3 (auto SP) selected out of previous CCR mode, we reset to 0.
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2258 btfss FLAG_pscr_mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2259 bra dive_boot_cc_part2_2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2260 movff opt_ccr_mode,WREG ; =0: Fixed SP (CCR) / calculated SP (pSCR), =1: Sensor, =2: Auto SP
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2261 sublw .2 ; opt_ccr_mode = 1 (Auto SP)?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2262 bnz dive_boot_cc_part2_2
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2263 movlw .0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2264 movff WREG,opt_ccr_mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2265 dive_boot_cc_part2_2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2266 bsf setpoint_changed ; set flag (for profile)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2267 bcf sp2_switched ; =1: this setpoint has been auto-selected already
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2268 bcf sp3_switched ; =1: this setpoint has been auto-selected already
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2269 bcf sp4_switched ; =1: this setpoint has been auto-selected already
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2270 bcf sp5_switched ; =1: this setpoint has been auto-selected already
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2271 ; Start with SP1 (CCR) or 0 (pSCR) as default.
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2272 ; If in sensor mode, this value will be overwritten by calc_deko_divemode_sensor
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2273 clrf WREG ; preload WREG with setpoint value 0 for pSCR calculated
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2274 btfsc FLAG_ccr_mode ; are we in CCR mode?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2275 movff char_I_setpoint_cbar+0,WREG ; YES - get value of setpoint 1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2276 movff WREG,char_I_const_ppO2 ; write setpoint to deco engine
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2277 call transmit_setpoint ; transmit current setpoint from WREG (in cbar) to external electronics
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2278 goto calc_deko_divemode_sensor ; read & process sensor data (and return)
0
heinrichsweikamp
parents:
diff changeset
2279
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2280
0
heinrichsweikamp
parents:
diff changeset
2281 diveloop_boot:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2282
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2283 ; do the basic initialization
0
heinrichsweikamp
parents:
diff changeset
2284 call restart_set_modes_and_flags
heinrichsweikamp
parents:
diff changeset
2285
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2286 ; stop accelerometer and compass
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2287 call I2C_sleep_accelerometer
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2288 call I2C_sleep_compass
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2289
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2290 ; reset max pressure aka max depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2291 clrf WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2292 movff WREG,max_pressure+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2293 movff WREG,max_pressure+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2294
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2295 ; initialize press needs to zero and invalid (not yet computed) state
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2296 clrf WREG ; set WREG to 0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2297 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2298 movff WREG,char_I_backtrack_time ; clear backtracking time (index to char_I_backtrack_depth)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2299 movff WREG,char_I_backtrack_depth ; prime first entry with depth 0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2300 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2301 bsf WREG,int_is_zero ; set zero flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2302 bsf WREG,int_invalid_flag ; set invalid flag (additionally)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2303 banksel int_O_ascent_pres_need ; select bank with shared output vars
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2304 movwf int_O_ascent_pres_need+1 ; Set flags for tank pressure needs = 0 before p2_deco.c
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2305 movwf int_O_ascent_pres_need+3 ; can do it. If this is not done here and the gas needs
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2306 movwf int_O_ascent_pres_need+5 ; custom view is shown before p2_deco.c completes the first
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2307 movwf int_O_ascent_pres_need+7 ; deco calculation, some rubbish numbers from last dive or
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2308 movwf int_O_ascent_pres_need+9 ; simulation may be shown
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2309 banksel common ; back to bank common
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2310
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2311 ; configure the deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2312 clrf hi
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2313 bsf hi,DECO_Z_FACTOR_FLAG ; enable Z factor mode by default
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2314 TSTOSS opt_ZfactorUse ; shall use Z factor mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2315 bcf hi,DECO_Z_FACTOR_FLAG ; NO - disable again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2316 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2317 bsf hi,DECO_TR_FUNCTIONS ; enable TR mode by default
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2318 btfss FLAG_tr_enabled ; shall use TR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2319 bcf hi,DECO_TR_FUNCTIONS ; NO - disable again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2320 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2321 movff hi,char_O_main_status ; bank-safe copy to deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2322
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2323 movff char_O_deco_status,lo ; bank-safe read
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2324 bsf lo,DECO_STATUS_0_FLAG ; set init- | ATTENTION: The deco engine must be started in init state! If omitted, it may
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2325 bsf lo,DECO_STATUS_1_FLAG ; state, | enter an infinite loop at some point in time and brick the OSTC!
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2326 bcf lo,DECO_PLAN_FLAG ; normal plan mode,
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2327 bcf lo,DECO_VOLUME_FLAG ; disable gas volume calculation, and
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2328 bcf lo,DECO_ASCENT_FLAG ; disable delayed ascent calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2329 movff lo,char_O_deco_status ; bank-safe copy back to deco engine
0
heinrichsweikamp
parents:
diff changeset
2330
heinrichsweikamp
parents:
diff changeset
2331 clrf WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2332 movff WREG,char_O_deco_warnings ; clear any deco warnings remaining from last dive
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2333 movff WREG,char_O_deco_info ; clear any deco infos remaining from last dive
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2334
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2335 movlw deco_distance ; load distance between actual depth and depth used for deco calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2336 movff WREG,char_I_deco_distance ; write distance to the deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2337
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2338 movff opt_last_stop,char_I_depth_last_deco ; write last stop depth to deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2339 movff opt_GF_low,char_I_GF_Low_percentage ; write GF low to deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2340 movff opt_GF_high,char_I_GF_High_percentage ; write GF high to deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2341
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2342 bcf onesectoggle ; clear toggle bit for calculation phasing
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2343 bcf use_agf ; start with normal GF set
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2344 bcf divemode_menu ; clear dive mode menu flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2345 bcf alternative_divelayout ; start with default layout
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2346 bcf blinking_depth_prev ; clear flag for blinking depth
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2347 bcf blinking_depth_toggle ; clear flag for blinking depth
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2348 bcf blinking_depth_warning ; clear flag for blinking depth as warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2349 bcf blinking_depth_attention ; clear flag for blinking depth as attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2350 bcf max_depth_greater_100m ; clear flag for last max/avg depth was > 100 m
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2351
0
heinrichsweikamp
parents:
diff changeset
2352 movlw d'1'
heinrichsweikamp
parents:
diff changeset
2353 movwf apnoe_max_pressure+0
heinrichsweikamp
parents:
diff changeset
2354 clrf apnoe_max_pressure+1
386
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
2355 ; clrf apnoe_surface_mins
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2356 ; clrf apnoe_surface_secs
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2357
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2358 ; copy date and time for logbook
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2359 movff year,start_year
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2360 movff month,start_month
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2361 movff day,start_day
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2362 movff hours,start_hours
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2363 movff mins,start_mins
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2364
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2365 movff int_O_CNS_fraction+0,CNS_start+0 ; save CNS value at beginning of dive
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2366 movff int_O_CNS_fraction+1,WREG ; get high byte to WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2367 bcf WREG,int_warning_flag ; clear warning flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2368 bcf WREG,int_attention_flag ; clear attention flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2369 movff WREG,CNS_start+1 ; move high byte on
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2370 movff int_O_gradient_factor+0,GF_start ; save GF value at beginning of dive (only lower byte used for value)
545
7e6df19264b6 BUGFIX: Simulator in CC mode
heinrichsweikamp
parents: 543
diff changeset
2371
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2372 bcf no_more_divesecs ; =1: do no longer show seconds in dive mode
0
heinrichsweikamp
parents:
diff changeset
2373 bcf divemode_menu_active
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2374 clrf menupos1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2375 clrf menupos2 ; reset to zero (Zero=no pre-menu or simulator task)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2376 bsf sensors_agree ; init of sensors disagree warning system
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2377
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2378 bcf show_safety_stop ; =1: show the safety stop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2379 clrf safety_stop_countdown ; clear count-down
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2380
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2381 clrf samplesecs ; timer for data logging
0
heinrichsweikamp
parents:
diff changeset
2382 clrf apnoe_timeout_counter ; timeout in minutes
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2383 clrf timeout_counter1+0 ; takes care of the timeout (low byte)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2384 clrf timeout_counter1+1 ; takes care of the timeout (high byte)
0
heinrichsweikamp
parents:
diff changeset
2385 clrf AlarmType ; Clear all alarms
heinrichsweikamp
parents:
diff changeset
2386 bcf event_occured ; clear flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2387 clrf average_divesecs_total+0 ; clear non-resettable time accumulator
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2388 clrf average_divesecs_total+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2389 clrf average_depth_hold_total+0 ; clear non-resettable average depth
0
heinrichsweikamp
parents:
diff changeset
2390 clrf average_depth_hold_total+1
heinrichsweikamp
parents:
diff changeset
2391 clrf average_depth_hold_total+2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2392 clrf average_depth_hold_total+3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2393 call reset_average ; reset the resettable average depth
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2394
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2395 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2396 btfss FLAG_tr_enabled ; TR functions enabled?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2397 bra diveloop_boot_0 ; NO - skip TR function initialization
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2398 ; YES - initialize TR function variables
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2399 banksel int_O_sac_rate
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2400 clrf int_O_sac_rate+0 ; clear low byte of SAC rate
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2401 clrf int_O_pressure_need+0 ; clear low byte of 1st pressure need value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2402 clrf int_O_pressure_need+2 ; clear low byte of 2nd pressure need value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2403 banksel int_IO_pressure_value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2404 clrf int_IO_pressure_value+0 ; clear low byte of 1st pressure reading value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2405 clrf int_IO_pressure_value+2 ; clear low byte of 2nd pressure reading value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2406 clrf int_I_pressure_drop+0 ; clear low byte of 1st pressure drop value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2407 clrf int_I_pressure_drop+2 ; clear low byte of 2nd pressure drop value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2408 clrf char_I_pressure_gas+0 ; clear gas selection of 1st pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2409 clrf char_I_pressure_gas+1 ; clear gas selection of 2nd pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2410 clrf char_I_pressure_age+0 ; clear age of 1st pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2411 clrf char_I_pressure_age+1 ; clear age of 2nd pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2412 clrf char_I_pressure_stat+0 ; clear status of 1st pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2413 clrf char_I_pressure_stat+1 ; clear status of 2nd pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2414 clrf WREG ; clear WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2415 bsf WREG,int_not_avail_flag ; set WREG to coding for integer numbers -> data not available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2416 banksel int_O_sac_rate
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2417 movwf int_O_sac_rate+1 ; copy to high byte of SAC rate
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2418 movwf int_O_pressure_need+1 ; copy to high byte of 1st pressure need value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2419 movwf int_O_pressure_need+3 ; copy to high byte of 1st pressure need value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2420 banksel int_IO_pressure_value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2421 movwf int_IO_pressure_value+1 ; copy to high byte of 1st pressure reading value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2422 movwf int_IO_pressure_value+3 ; copy to high byte of 2nd pressure reading value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2423 movwf int_I_pressure_drop+1 ; copy to high byte of 1st pressure drop value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2424 movwf int_I_pressure_drop+3 ; copy to high byte of 1st pressure drop value
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2425 banksel gas__last_1st ; select bank with vars for pressure drop calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2426 setf gas__last_1st ; invalidate last gas of 1st reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2427 setf gas__last_2nd ; invalidate last gas of 2nd reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2428 banksel common ; back to bank common
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2429 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2430
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2431 diveloop_boot_0:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2432 bcf decostop_active ; clear flag for being in deco
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2433 setf best_gas_number ; initialize best gas as not computed yet (255)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2434 setf best_dil_number ; initialize best diluent as not computed yet (255)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2435 bcf better_gas_available ; =1: a better gas is available and a gas change is advised
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2436 bcf better_dil_available ; =1: a better diluent is available and a gas change is advised
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2437
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2438 rcall dive_boot_oc_bail ; basic settings required for all modes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2439
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2440 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2441 rcall dive_boot_oc ; YES - add OC mode settings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2442
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2443 btfsc FLAG_ccr_mode ; in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2444 rcall dive_boot_cc ; YES - add CC mode settings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2445 btfsc FLAG_ccr_mode ; in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2446 rcall dive_boot_cc_part2 ; YES - add CC sensor and SP settings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2447
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2448 btfsc FLAG_pscr_mode ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2449 rcall dive_boot_cc ; YES - add CC mode settings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2450 btfsc FLAG_pscr_mode ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2451 rcall dive_boot_cc_part2 ; YES - add CC sensor and SP settings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2452
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2453 call ghostwriter_short_header ; write short header with dive number into profile memory
0
heinrichsweikamp
parents:
diff changeset
2454
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2455 btfsc simulatormode_active
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2456 bra diveloop_boot_1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2457
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2458 ; normal mode = surface pressure is the pressure 30 minutes before dive
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2459 SAFE_2BYTE_COPY last_surfpressure_30min, int_I_pres_surface ;copy surface pressure to deco routine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2460 SAFE_2BYTE_COPY last_surfpressure_30min, last_surfpressure ;copy surface pressure to last_surfpressure for correct depth
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2461 bra diveloop_boot_2
0
heinrichsweikamp
parents:
diff changeset
2462
heinrichsweikamp
parents:
diff changeset
2463 diveloop_boot_1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2464 ; simulator mode: set surface pressure to 1 bar because simulated depths are also based on 1 bar surface pressure
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2465 movlw LOW .1000
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2466 movff WREG,int_I_pres_surface+0 ; LOW copy surface pressure to deco routine
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2467 movlw HIGH .1000
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2468 movff WREG,int_I_pres_surface+1 ; HIGH copy surface pressure to deco routine
0
heinrichsweikamp
parents:
diff changeset
2469
heinrichsweikamp
parents:
diff changeset
2470 diveloop_boot_2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2471 SAFE_2BYTE_COPY temperature,minimum_temperature ; reset minimum temperature registers
0
heinrichsweikamp
parents:
diff changeset
2472
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2473 call init_recording_params ; set up all the divisors
0
heinrichsweikamp
parents:
diff changeset
2474
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2475 bsf FLAG_diluent_setup ; for CCR mode (required to have better gas working)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2476 btfsc FLAG_ccr_mode ; =1: CCR mode (fixed ppO2 or Sensor) active
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2477 bra diveloop_boot_3
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2478 btfsc FLAG_pscr_mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2479 bra diveloop_boot_3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2480 bcf FLAG_diluent_setup ; for OC mode (required to have better gas working)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2481
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2482 diveloop_boot_3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2483 bcf LEDg ; switch off green LED / release reset to RX circuitry
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2484 bcf LEDr ; switch off red LED
0
heinrichsweikamp
parents:
diff changeset
2485 bcf realdive
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2486 btfss simulatormode_active ; in simulator mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2487 call disable_rs232 ; NO - disable RS232
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2488
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2489 IFDEF _screendump
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2490 btfsc enable_screen_dumps ; =1: ignore vin_usb, wait for "l" command (screen dump)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2491 call enable_rs232 ; also sets to speed_normal
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2492 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2493
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2494 ; reset dive time seconds
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2495 ; movlw .2 ; start at 2 seconds
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2496 ; movwf total_divetime_seconds+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2497 ; clrf total_divetime_seconds+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2498 ; movwf divesecs
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2499 ; movwf apnoe_secs
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2500 ; bsf divemode2 ; displayed dive time is running (dive time starts HERE)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2501
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2502 ; clear the timers (start dive times at zero)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2503 clrf total_divetime_seconds+0
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2504 clrf total_divetime_seconds+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2505 clrf divesecs
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2506 clrf divemins+0
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2507 clrf divemins+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2508 clrf apnoe_secs
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2509 clrf apnoe_mins
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2510
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2511 ; divemode2 flag will be set by pressure & timeout evaluation in function set_dive_modes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2512
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2513 return ; done with dive mode boot
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2514
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2515
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2516 ;=============================================================================
0
heinrichsweikamp
parents:
diff changeset
2517
heinrichsweikamp
parents:
diff changeset
2518 divemode_check_for_warnings:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2519 movlw .1 ; one message at a time in alternative layout
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2520 btfss alternative_divelayout
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2521 movlw .2 ; two messages at a time in default layout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2522 cpfsgt message_counter ; only one (or two) messages active?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2523 bra divemode_check_for_warnings1; YES - update every second
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2524
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2525 btfss secs,0 ; every two seconds...
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2526 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2527 btfss secs,1 ; every four seconds...
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2528 return
0
heinrichsweikamp
parents:
diff changeset
2529
131
35b9da423de6 NEW: Update warnings every second
heinrichsweikamp
parents: 113
diff changeset
2530 divemode_check_for_warnings1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2531 bcf message_advice ; clear flag for messages of level advice
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2532 bcf message_attention ; clear flag for messages of level attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2533 bcf message_warning ; clear flag for messages of level warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2534 clrf message_counter ; clear message counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2535
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2536 ; messages sorted by severity: highest severity warnings first, then attentions, advices and last info
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2537
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2538 ; warnings for all modes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2539 call check_warn_battery ; check if the battery level should be displayed/warned
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2540 call check_divetimeout ; check and show the dive mode timeout (not actually a warning)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2541
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2542 btfsc FLAG_apnoe_mode ; in Apnoe mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2543 bra divemode_check_for_warnings2; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2544 btfsc FLAG_gauge_mode ; in gauge mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2545 bra divemode_check_for_warnings2; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2546
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2547 ; warnings applicable only in deco modes
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2548 rcall check_ppO2 ; check ppO2 and displays warning, if required
0
heinrichsweikamp
parents:
diff changeset
2549
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2550 btfss sensors_agree ; are the sensor values within the threshold range?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2551 rcall check_warn_sensors_disagree ; NO - further evaluate
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2552 btfsc sensors_agree ; are the sensor values within the threshold range?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2553 bcf sensor_warning ; YES - revoke memorized sensor warning
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2554
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2555 rcall check_outside ; check of ZHL16 model violation
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2556
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2557 rcall check_IBCD ; check for IBCD attention or warning
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2558
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2559 rcall check_OC_gas_avail ; check if a breathable OC gas is available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2560
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2561 btfsc decostop_active ; in deco mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2562 rcall check_and_store_gf_violation; YES - sets warnings, if required
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2563
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2564 rcall check_mbubbles ; check for micro bubbles
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2565
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2566 rcall check_cns_violation ; Check CNS value and display it, if required
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2567
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2568 rcall check_gas_needs_ascent ; show gas needs warning if any gas need for ascent is > threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2569
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2570 rcall check_eod_cns_violation ; check CNS values for end-of-dive and display warning, if required
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2571
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2572 rcall check_display_ftts ; show @+x time
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2573
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2574 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2575 btfsc FLAG_cave_mode ; cave mode enabled?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2576 rcall check_cavemode ; YES - check cave mode status
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2577 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2578
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2579 btfsc use_agf ; in aGF mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2580 rcall warn_agf ; YES - show memo
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2581
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2582 btfsc setpoint_fallback ; fallback to SP1 due to external O2 sensor failure?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2583 rcall warn_fallback ; YES - show a warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2584
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2585 btfsc better_dil_available ; is a better diluent available?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2586 rcall advice_gas_change ; YES - display an advice
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2587 btfsc better_gas_available ; is a better gas available?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2588 rcall advice_gas_change ; YES - display an advice
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2589
0
heinrichsweikamp
parents:
diff changeset
2590 divemode_check_for_warnings2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2591 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2592 btfss FLAG_tr_enabled ; TR functions enabled?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2593 bra divemode_check_for_warnings3 ; NO - skip
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2594 call check_tr_functions ; YES - check transmitter functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2595 call check_tr_messages ; - check SAC attention and switch advice
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2596 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2597
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2598 divemode_check_for_warnings3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2599 ; Display the attention or warning icon?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2600 btfsc message_advice ; any message of level advice?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2601 bsf FLAG_TFT_divemode_warning ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2602 btfsc message_attention ; any message of level attention?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2603 bsf FLAG_TFT_divemode_warning ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2604 btfsc message_warning ; any message of level warning?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2605 bsf FLAG_TFT_divemode_warning ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2606 btfss FLAG_TFT_divemode_warning ; any message of above levels?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2607 bsf FLAG_TFT_divemode_warning_clear ; NO - clear warning icon
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2608
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2609 ; Setup message page number
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2610 incf message_page,F
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2611 movf message_page,W
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2612 bcf STATUS,C
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2613 btfss alternative_divelayout ; in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2614 rlcf message_page,W ; NO - *2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2615 cpfsgt message_counter ; > message_counter?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2616 clrf message_page ; NO - clear
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2617
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2618 ; Clear both rows of messages if there is nothing to show at all
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2619 tstfsz message_counter ; any messages?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2620 bra divemode_check_for_warnings4 ; YES - look if second row needs to be cleared
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2621 bsf FLAG_TFT_dive_warning_text_clear; set flag
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2622 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2623
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2624 divemode_check_for_warnings4:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2625 ; Clear 2nd row of messages if there is nothing to show (on this page)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2626 btfss second_row_warning ; =1: the second row contains a warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2627 bsf FLAG_TFT_dive_warning_text_clr2 ; set flag for 2nd row
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2628 return ; done
0
heinrichsweikamp
parents:
diff changeset
2629
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2630 global check_warn_battery
0
heinrichsweikamp
parents:
diff changeset
2631 check_warn_battery:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2632 movff batt_percent,lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2633 movlw battery_show_level+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2634 cpfslt lo ; battery percentage ok?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2635 return ; YES - no display, no warning
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2636 ; Display Battery, but warn?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2637 movff batt_percent,lo
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2638 movlw color_code_battery_low+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2639 cpfsgt lo ; battery percent below warning threshold?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2640 bsf message_warning ; YES - set warning flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2641 btfsc alternative_divelayout ; in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2642 bra check_warn_battery2 ; YES - show warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2643 movlw index_clock_batt_surfpress ; NO - index of custom view clock, battery and surface pressure
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2644 cpfseq menupos3 ; - battery shown in custom view?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2645 bra check_warn_battery2 ; NO - show warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2646 return ; YES - do not show twice (in custom view and in message area)
472
4fdf6886004b CHANGE: Show warnings either in Customview (If active) _or_ next to warning sign
heinrichsweikamp
parents: 471
diff changeset
2647 check_warn_battery2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2648 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2649 goto TFT_update_batt_percent_divemode ; show percent (and return)
513
heinrichsweikamp
parents: 507
diff changeset
2650
55
448ba265fdae Change "O2" warning to "ppO2"
heinrichsweikamp
parents: 39
diff changeset
2651 check_divetimeout:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2652 btfsc divemode2 ; dive time running?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2653 return ; YES - do nothing
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2654 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2655 goto TFT_divetimeout ; show timeout counter (and return)
55
448ba265fdae Change "O2" warning to "ppO2"
heinrichsweikamp
parents: 39
diff changeset
2656
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2657 check_ppO2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2658 btfsc FLAG_oc_mode ; are we in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2659 bra check_ppO2_1 ; YES - continue with breathed gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2660 btfsc FLAG_bailout_mode ; NO - in bailout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2661 bra check_ppO2_1 ; YES - continue with breathed gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2662 ; CCR / pSCR mode - checks on pure diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2663 movff int_O_pure_ppO2+0,lo ; get value and attention/warning flags for the pure diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2664 movff int_O_pure_ppO2+1,hi ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2665 btfsc hi,int_warning_flag ; ppO2 of the pure diluent to low or high?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2666 rcall check_ppO2_dw ; YES - show warning and return on next line
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2667 btfsc hi,int_attention_flag ; ppO2 of the pure diluent in attention state?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2668 rcall check_ppO2_da ; YES - show attention and return on next line
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2669 ; all modes - checks on breathed gas (OC or from loop)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2670 check_ppO2_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2671 movff int_O_breathed_ppO2+0,lo ; get value and attention/warning flags for the breathed gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2672 movff int_O_breathed_ppO2+1,hi ; get warnings for breathed gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2673 btfsc hi,int_attention_flag ; breathed ppO2 in attention state (when in loop mode, no attention will be generated)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2674 bra check_ppo2_display_a ; YES - set attention flag and show ppO2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2675 btfsc hi,int_low_flag ; breathed ppO2 to low?
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2676 bra check_ppO2_low ; YES - record the warning and show ppO2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2677 btfsc hi,int_high_flag ; breathed ppO2 to high?
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2678 bra check_ppO2_high ; YES - record the warning and show ppO2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2679 TSTOSS opt_showppo2 ; show ppO2 anyhow? (0 = no, 1 = show always)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2680 return ; NO - no warnings, no show - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2681 bra check_ppO2_common_2 ; YES - but only when in OC or bailout...
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2682 check_ppO2_low:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2683 movlw d'4' ; set type of alarm (ppO2 low)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2684 bra check_ppO2_common ; continue with common part
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2685 check_ppO2_high:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2686 movlw d'5' ; set type of alarm (ppO2 high)
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2687 check_ppO2_common:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2688 movwf AlarmType ; copy alarm type to alarm register
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2689 bsf event_occured ; set event flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2690 bsf message_warning ; show warning sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2691 check_ppO2_common_2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2692 btfsc FLAG_oc_mode ; are we in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2693 bra check_ppo2_display ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2694 btfsc FLAG_bailout_mode ; are we in bailout mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2695 bra check_ppo2_display ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2696 return ; NO - in loop mode, ppO2 is already shown via setpoint display
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2697 check_ppo2_display_a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2698 bsf message_attention ; show attention sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2699 check_ppo2_display:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2700 btfsc alternative_divelayout ; in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2701 bra check_ppO2_d ; YES - show warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2702 movlw index_ppo2_ead_end_cns ; NO - index of custom view ppO2, EAD/END and CNS)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2703 cpfseq menupos3 ; ppO2 shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2704 bra check_ppO2_b ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2705 return ; YES - do not show twice (in custom view and in warning area)
471
9edb1359ce43 NEW: New Customview 11 in dive mode shows ppO2, EAD/END and CNS
heinrichsweikamp
parents: 444
diff changeset
2706 check_ppO2_b:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2707 movlw index_pscr_info ; index of custom view with pSCR data
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2708 cpfseq menupos3 ; ppO2 shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2709 bra check_ppO2_d ; NO - show warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2710 return ; YES - do not show twice (in custom view and in warning area)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2711 check_ppO2_dw:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2712 bsf message_warning ; show warning sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2713 check_ppO2_da:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2714 bsf message_attention ; show attention sign (no problem if a warning sign is set as well, as it will take priority)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2715 check_ppO2_d:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2716 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2717 goto TFT_display_ppo2_warning ; show breathed gas or diluent ppO2 warning (and return)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2718
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2719
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2720 check_display_ftts:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2721 movff char_I_extra_time,lo ; get extra time
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2722 tstfsz lo ; extra time > 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2723 bra check_display_ftts_1 ; YES - continue checking bailout condition
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2724 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2725 check_display_ftts_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2726 btfsc FLAG_bailout_mode ; in bailout mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2727 return ; YES - in bailout no fTTS will be computed, so nothing to display
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2728 incf message_counter,F ; NO - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2729 goto TFT_display_ftts ; - show @+x time
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2730
376
e99bb91f6f92 CHANGE: Do not show ppO2 in warning area if already shown in custom view
heinrichsweikamp
parents: 352
diff changeset
2731
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2732 global check_cns_violation
0
heinrichsweikamp
parents:
diff changeset
2733 check_cns_violation:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2734 ; Check if CNS should be displayed
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2735 movff int_O_CNS_fraction+1,WREG ; get high byte
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2736 btfsc WREG,int_warning_flag ; warning flag set?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2737 bra check_cns_violation_1 ; YES - issue warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2738 btfsc WREG,int_attention_flag ; NO - attention flag set?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2739 bra check_cns_violation_2 ; YES - issue attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2740 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2741 check_cns_violation_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2742 bsf message_warning ; show warning sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2743 check_cns_violation_2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2744 bsf message_attention ; show attention sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2745 btfsc alternative_divelayout ; in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2746 bra check_cns_violation_4 ; YES - show attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2747 movlw index_ppo2_ead_end_cns ; NO - index of custom view ppO2, EAD/END and CNS
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2748 cpfseq menupos3 ; - CNS shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2749 bra check_cns_violation_3 ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2750 return ; YES - do not show twice (in custom view and in warning area)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2751 check_cns_violation_3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2752 movlw index_CNS ; index of custom view with CNS values
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2753 cpfseq menupos3 ; CNS shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2754 bra check_cns_violation_4 ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2755 return ; YES - do not show twice (in custom view and in warning area)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2756 check_cns_violation_4:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2757 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2758 goto TFT_display_cns ; show CNS (and return)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2759
0
heinrichsweikamp
parents:
diff changeset
2760
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2761 global check_eod_cns_violation ; check end-of-dive CNS values
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2762 check_eod_cns_violation:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2763 movff int_O_CNS_fraction+1,WREG ; get high-byte of current CNS value
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2764 btfsc WREG,int_warning_flag ; current CNS value in warning state?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2765 return ; YES - inhibit end-of-dive warning if current CNS is already in warning
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2766 movff int_O_normal_CNS_fraction+1,WREG
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2767 btfsc WREG,int_invalid_flag ; flag for invalid value set?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2768 bra check_eod_cns_violation1 ; YES - continue with checking the other CNS value
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2769 btfsc WREG,int_warning_flag ; NO - flag for warning set?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2770 bra check_eod_cns_violation2 ; YES - issue warning
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2771 check_eod_cns_violation1: ; NO - continue with checking the other CNS value
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2772 movff int_O_alternate_CNS_fraction+1,WREG
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2773 btfsc WREG,int_invalid_flag ; flag for invalid value set?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2774 return ; YES - done with CNS checking
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2775 btfsc WREG,int_warning_flag ; NO - flag for warning set?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2776 bra check_eod_cns_violation2 ; YES - issue warning
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2777 return ; NO - done with CNS checking
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2778 check_eod_cns_violation2: ; issue warning (actually only on attention level)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2779 bsf message_attention ; show attention sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2780 btfsc alternative_divelayout ; in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2781 bra display_eod_cns_violation ; YES - show warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2782 movlw index_CNS ; NO - index of custom view with CNS values
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2783 cpfseq menupos3 ; - CNS values shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2784 bra display_eod_cns_violation ; NO - issue textual warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2785 return ; YES - do not show twice (in custom view and in warning area)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2786 display_eod_cns_violation:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2787 incf message_counter,F ; increase counter
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2788 goto TFT_display_eod_cns ; issue CNS at end-of-dive warning (and return)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2789
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2790
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2791 global check_and_store_gf_violation
0
heinrichsweikamp
parents:
diff changeset
2792 check_and_store_gf_violation:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2793 movff int_O_gradient_factor+1,WREG ; get upper byte of gradient factor
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2794 btfss WREG,int_warning_flag ; check if the warning flag is set
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2795 bra check_and_store_gf_violation2 ; NO - continue with checking for attention flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2796 movlw d'2' ; YES - set type of alarm
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2797 movwf AlarmType ; copy to alarm register
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2798 bsf event_occured ; set event flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2799 bsf message_warning ; set warning flag
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2800 bra check_and_store_gf_violation3 ; show gf warning
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2801 check_and_store_gf_violation2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2802 btfsc WREG,int_attention_flag ; check if the attention flag is set
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2803 bra check_and_store_gf_violation3 ; YES - show gf
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2804 TSTOSS opt_enable_IBCD ; NO - IBCD warning activated?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2805 bra check_and_store_gf_violation4 ; NO - continue checking of deco info
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2806 movff char_O_deco_warnings,WREG ; YES - get the deco warnings vector
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2807 btfss WREG,IBCD_warning ; is the IBCD warning flag set?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2808 bra check_and_store_gf_violation4 ; NO - continue checking for deco info
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2809 check_and_store_gf_violation3: ; YES - show gf
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2810 bsf message_attention ; show attention sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2811 incf message_counter,F ; increase counter
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2812 goto TFT_warning_gf ; show GF (and return)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2813 check_and_store_gf_violation4: ; check for deco info
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2814 btfss divemode ; in dive mode?
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2815 return ; NO - done, return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2816 btfsc FLAG_bailout_mode ; YES - in bailout mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2817 return ; YES - done, return (deco_decreasing flag is not updated when in bailout mode)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2818 movff char_O_deco_info,WREG ; NO - get the deco info vector
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2819 btfss WREG,deco_decreasing ; check if the deco_decreasing flag is set
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2820 return ; NO - done, return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2821 incf message_counter,F ; YES - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2822 goto TFT_info_deco ; - show deco info
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2823
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2824
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2825 check_outside:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2826 movff char_O_deco_warnings,WREG ; bank-safe copy of deco warnings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2827 btfss WREG,outside_warning_lock ; are we outside of the ZH-L16 model?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2828 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2829 incf message_counter,F ; YES - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2830 bsf message_attention ; - show attention sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2831 btfsc WREG,outside_warning ; - are we outside the ZH-L16 model right now (-> warning)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2832 bsf message_warning ; - set warning flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2833 goto TFT_warning_outside ; - show outside-ZHL-model warning/attention (and return)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2834
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2835
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2836 global check_mbubbles
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2837 check_mbubbles:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2838 movff char_O_deco_warnings,WREG ; bank-safe copy for deco warnings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2839 btfsc WREG,mbubble_warning ; are we in micro bubbling zone right now?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2840 bra check_mbubbles_warn ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2841 btfss WREG,mbubble_warning_lock ; were we in micro bubbling zone?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2842 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2843 check_mbubble_att ; YES - attention level
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2844 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2845 bsf message_attention ; show attention sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2846 goto TFT_warning_mbubbles ; show micro bubble attention (and return) - TFT_warning_mbubbles switches by itself between attention and warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2847 check_mbubbles_warn: ; locked micro bubbles - warning level if at issue, attention level if locked
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2848 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2849 bsf message_warning ; set warning flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2850 goto TFT_warning_mbubbles ; show micro bubbles warning (and return)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2851
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2852 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2853 check_cavemode:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2854 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2855 btfsc FLAG_dive_turned ; dive turned?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2856 goto TFT_info_dive_turned ; YES - show info that dive is turned
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2857 btfsc FLAG_cave_mode_shutdown ; NO - has cave mode shut down?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2858 goto TFT_warn_cave_shutdown ; YES - show that cave mode has shut down
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2859 goto TFT_info_cave_mode ; NO - show that cave mode is active
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2860 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2861
0
heinrichsweikamp
parents:
diff changeset
2862 warn_agf:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2863 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2864 goto TFT_warning_agf ; show aGF warning (and return)
145
e3ac5b2021bc NEW: Setpoint-Fallback option for external O2 sensor failure
heinrichsweikamp
parents: 138
diff changeset
2865
e3ac5b2021bc NEW: Setpoint-Fallback option for external O2 sensor failure
heinrichsweikamp
parents: 138
diff changeset
2866 warn_fallback:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2867 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2868 bsf message_warning ; set warning flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2869 goto TFT_warning_fallback ; show fallback warning (and return)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2870
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2871
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2872 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2873
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2874 check_tr_messages:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2875 movff int_O_sac_rate+1,WREG ; bank-safe copy of current SAC rate
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2876 btfss WREG,int_attention_flag ; attention flag set?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2877 bra check_tr_messages2 ; NO - skip
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2878 btfsc WREG,int_not_avail_flag ; SAC rate available?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2879 bra check_tr_messages2 ; NO - continue with swap advice
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2880 bsf message_attention ; YES - show attention sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2881 btfsc alternative_divelayout ; - in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2882 bra check_tr_messages1 ; YES - show attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2883 movlw index_pressures_SAC ; NO - index of custom view with SAC rate
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2884 cpfseq menupos3 ; - SAC rate shown right now?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2885 bra check_tr_messages1 ; NO - show attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2886 bra check_tr_messages2 ; YES - do not show twice, continue with swap advice
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2887 check_tr_messages1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2888 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2889 call TFT_attention_sac ; show SAC attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2890 check_tr_messages2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2891 movff char_O_deco_info,WREG ; bank-safe copy of deco info vector
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2892 btfss WREG,ind_double_switch ; swap tank flag set?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2893 return ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2894 incf message_counter,F ; YES - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2895 bsf message_advice ; - show advice sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2896 goto TFT_advice_switch ; - show swap advice
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2897
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2898
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2899 #DEFINE show_custview ul,0 ; show pressure readings custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2900 #DEFINE show_transmitter ul,1 ; show transmitter attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2901 #DEFINE show_pres_warning ul,2 ; show transmitter pressure warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2902 #DEFINE show_pres_attention ul,3 ; show transmitter pressure attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2903
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2904 check_tr_functions:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2905 clrf ul ; set all messages as not shown yet
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2906 btfsc alternative_divelayout ; in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2907 bra check_tr_functions_tr1 ; YES - continue with checking transmitter 1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2908 movlw index_pressures_SAC ; NO - index of custom view pressure readings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2909 cpfseq menupos3 ; - pressure readings shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2910 bra check_tr_functions_tr1 ; NO - continue with checking transmitter 1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2911 bsf show_custview ; YES - suppress redraw by faking it has already been redrawn
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2912 check_tr_functions_tr1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2913 movff char_I_pressure_stat+0,WREG ; get status of 1st pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2914 rcall check_tr_functions_helper1 ; check for transmitter 1 lost
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2915 rcall check_tr_functions_helper2 ; check for transmitter 1 low battery
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2916 movff int_IO_pressure_value+1,WREG ; get high byte of 1st pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2917 rcall check_tr_functions_helper3 ; check for transmitter 1 pressure warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2918 rcall check_tr_functions_helper4 ; check for transmitter 1 pressure attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2919 check_tr_functions_tr2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2920 movff char_I_pressure_stat+1,WREG ; get status of 2nd pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2921 rcall check_tr_functions_helper5 ; check for transmitter 2 lost
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2922 rcall check_tr_functions_helper6 ; check for transmitter 2 low battery
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2923 movff int_IO_pressure_value+3,WREG ; get high byte of 2nd pressure reading
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2924 rcall check_tr_functions_helper7 ; check for transmitter 2 pressure warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2925 rcall check_tr_functions_helper8 ; check for transmitter 2 pressure attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2926 check_tr_functions_show_xmtr:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2927 btfss show_transmitter ; shall show transmitter message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2928 bra check_tr_functions_show_warn ; NO - continue with pressure warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2929 bsf message_attention ; YES - set flag for attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2930 incf message_counter,F ; - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2931 call TFT_attention_transmitter ; - show transmitter attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2932 check_tr_functions_show_warn:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2933 btfss show_pres_warning ; shall show pressure warning?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2934 bra check_tr_functions_show_att ; NO - continue with pressure attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2935 bsf message_warning ; YES - set flag for warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2936 incf message_counter,F ; - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2937 goto TFT_warning_pres_reading ; - pressure reading warning message and done then
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2938 check_tr_functions_show_att:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2939 btfss show_pres_attention ; shall show pressure attention?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2940 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2941 bsf message_attention ; YES - set flag for attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2942 incf message_counter,F ; - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2943 goto TFT_attention_pres_reading ; - pressure reading warning message and done then
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2944
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2945 check_tr_functions_helper1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2946 btfsc WREG,char_transmitter_lost ; transmitter 1 lost?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2947 bra check_tr_functions_helper1a ; YES - show transmitter attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2948 bcf transmitter1_lost ; NO - clear flag for old lost attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2949 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2950 check_tr_functions_helper1a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2951 bsf show_transmitter ; show transmitter attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2952 btfsc transmitter1_lost ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2953 return ; NO - do not show the pressure readings custom view again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2954 bsf transmitter1_lost ; YES - memorize it's an old message now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2955 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2956
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2957 check_tr_functions_helper2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2958 btfsc WREG,char_transmitter_low_bat ; transmitter 1 low battery?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2959 bra check_tr_functions_helper2a ; YES - show transmitter attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2960 bcf transmitter1_battery ; NO - clear flag for old battery attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2961 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2962 check_tr_functions_helper2a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2963 bsf show_transmitter ; show transmitter attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2964 btfsc transmitter1_battery ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2965 return ; NO - do not show the pressure readings custom view again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2966 bsf transmitter1_battery ; YES - memorize it's an old message now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2967 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2968
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2969 check_tr_functions_helper3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2970 btfsc WREG,int_warning_flag ; transmitter 1 pressure warning?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2971 bra check_tr_functions_helper3a ; YES - show pressure reading message as warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2972 bcf transmitter1_pres_warn ; NO - clear flag for old warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2973 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2974 check_tr_functions_helper3a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2975 bsf show_pres_warning ; show pressure warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2976 btfsc transmitter1_pres_warn ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2977 return ; NO - do not show the pressure readings custom view again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2978 bsf transmitter1_pres_warn ; YES - memorize it's an old message now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2979 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2980
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2981 check_tr_functions_helper4:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2982 btfsc WREG,int_attention_flag ; transmitter 1 pressure attention?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2983 bra check_tr_functions_helper4a ; YES - show pressure reading message as attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2984 bcf transmitter1_pres_att ; NO - clear flag for old attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2985 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2986 check_tr_functions_helper4a
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2987 bsf show_pres_attention ; show pressure attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2988 btfsc transmitter1_pres_att ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2989 return ; NO - do not show the pressure readings custom view again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2990 bsf transmitter1_pres_att ; YES - memorize it's an old message now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2991 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2992
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2993 check_tr_functions_helper5:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2994 btfsc WREG,char_transmitter_lost ; transmitter 2 lost?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2995 bra check_tr_functions_helper5a ; YES - show transmitter attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2996 bcf transmitter2_lost ; NO - clear flag for old lost attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2997 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2998 check_tr_functions_helper5a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2999 bsf show_transmitter ; show transmitter attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3000 btfsc transmitter2_lost ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3001 return ; NO - do not show the pressure readings custom view again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3002 bsf transmitter2_lost ; YES - memorize it's an old message now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3003 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3004
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3005 check_tr_functions_helper6:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3006 btfsc WREG,char_transmitter_low_bat ; transmitter 2 low battery?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3007 bra check_tr_functions_helper6a ; YES - show transmitter attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3008 bcf transmitter2_battery ; NO - clear flag for old battery attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3009 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3010 check_tr_functions_helper6a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3011 bsf show_transmitter ; show transmitter attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3012 btfsc transmitter2_battery ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3013 return ; NO - do not show the pressure readings custom view again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3014 bsf transmitter2_battery ; YES - memorize it's an old message now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3015 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3016
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3017 check_tr_functions_helper7:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3018 btfsc WREG,int_warning_flag ; transmitter 2 pressure warning?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3019 bra check_tr_functions_helper7a ; YES - show pressure reading message as warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3020 bcf transmitter2_pres_warn ; NO - clear flag for old warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3021 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3022 check_tr_functions_helper7a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3023 bsf show_pres_warning ; show pressure warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3024 btfsc transmitter2_pres_warn ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3025 return ; NO - do not show the pressure readings custom view again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3026 bsf transmitter2_pres_warn ; YES - memorize it's an old message now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3027 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3028
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3029 check_tr_functions_helper8:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3030 btfsc WREG,int_attention_flag ; transmitter 2 pressure attention?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3031 bra check_tr_functions_helper8a ; YES - show pressure reading message as attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3032 bcf transmitter2_pres_att ; NO - clear flag for old attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3033 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3034 check_tr_functions_helper8a
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3035 bsf show_pres_attention ; show pressure attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3036 btfsc transmitter2_pres_att ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3037 return ; NO - do not show the pressure readings custom view again
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3038 bsf transmitter2_pres_att ; YES - memorize it's an old message now
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3039 ;bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3040
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3041 check_tr_functions_show_cv:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3042 btfsc show_custview ; is the pressure readings custom view not shown yet shown?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3043 return ; NO - already shown, done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3044 bsf show_custview ; YES - mark as shown
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3045 btfsc alternative_divelayout ; - in alternative layout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3046 call switch_layout_to_normal ; YES - switch to normal layout
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3047 movlw index_pressures_SAC-1 ; custom view number one below pressure readings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3048 movwf menupos3 ; set custom view number
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3049 bsf toggle_customview ; initiate toggle to desired custom view -> pressure readings view will be shown
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3050 return ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3051
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3052 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3053
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3054
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3055 check_gas_needs_ascent:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3056 banksel int_O_ascent_pres_need
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3057 movf int_O_ascent_pres_need+1,w ; get high byte from pres need of 1st tank
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3058 iorwf int_O_ascent_pres_need+3,w ; inclusive or with high byte from pres need of 2nd tank
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3059 iorwf int_O_ascent_pres_need+5,w ; inclusive or with high byte from pres need of 3rd tank
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3060 iorwf int_O_ascent_pres_need+7,w ; inclusive or with high byte from pres need of 4th tank
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3061 iorwf int_O_ascent_pres_need+9,w ; inclusive or with high byte from pres need of 5th tank
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3062 banksel common
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3063 btfsc WREG,int_invalid_flag ; check if invalid flag is set
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3064 return ; YES - no further checking required
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3065 btfsc WREG,int_warning_flag ; check if any gas has a pres_need >= pres_fill
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3066 bsf message_warning ; YES - set warning flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3067 btfsc WREG,int_warning_flag ; check if any gas has a pres_need >= pres_fill
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3068 goto TFT_warning_gas_needs_warn ; Yes - show a warning
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3069 btfsc WREG,int_attention_flag ; check if any gas has a pres_need >= pres_fill * threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3070 bsf message_attention ; YES - set attention flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3071 btfsc WREG,int_attention_flag ; check if any gas has a pres_need >= pres_fill * threshold
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3072 goto TFT_warning_gas_needs_att ; YES - show an attention
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3073 bcf gas_needs_attention ; NO - clear flag for a new attention
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3074 bcf gas_needs_warning ; clear flag for a new warning
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3075 return
0
heinrichsweikamp
parents:
diff changeset
3076
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3077
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3078 check_warn_sensors_disagree:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3079 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3080 bsf message_warning ; YES - set warning flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3081 goto TFT_warning_sensor_disagree ; show sensor disagree warning (and return)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3082
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3083
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3084 check_IBCD:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3085 TSTOSS opt_enable_IBCD ; IBCD warning activated?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3086 return ; NO - done
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3087 movff char_O_deco_warnings,WREG ; YES - get deco warnings vector
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3088 btfss WREG,IBCD_warning ; IBCD warning flag set?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3089 return ; NO - return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3090 incf message_counter,F ; YES - increase counter
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3091 goto TFT_warning_IBCD ; write warning to display
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3092
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3093
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3094 check_OC_gas_avail:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3095 tstfsz best_gas_number ; is a breathable gas available?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3096 return ; > 0 : a breathable gas is available
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3097 btfsc FLAG_ccr_mode ; = 0 : problem - in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3098 bra check_OC_gas_avail_1 ; YES - real problem
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3099 btfsc FLAG_pscr_mode ; NO - in PSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3100 bra check_OC_gas_avail_1 ; YES - real problem
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3101 return ; NO - neither CCR nor pSCR mode, suppress warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3102 check_OC_gas_avail_1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3103 btfsc FLAG_bailout_mode ; in bailout?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3104 return ; YES - suppress warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3105 incf message_counter,F ; NO - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3106 bsf message_attention ; set attention flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3107 goto TFT_warning_no_BO_gas ; show message (and return)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3108
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3109
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3110 advice_gas_change:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3111 bsf message_advice ; show advice sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3112 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3113 goto TFT_advice_gas_change
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3114
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3115
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3116 global restart_deco_engine
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3117 global restart_deco_engine_wo_ceiling
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3118 restart_deco_engine:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3119 ; invalidate ceiling
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3120 movff int_O_ceiling+1,WREG
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3121 bsf WREG,char_invalid_flag ; int_O_ceiling has its invalid flag on a char's position!
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3122 movff WREG,int_O_ceiling+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3123
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3124 restart_deco_engine_wo_ceiling:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3125 ; invalidate deco data (stop table data)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3126 movff char_O_deco_gas+0,WREG
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3127 bsf WREG,char_invalid_flag
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3128 movff WREG,char_O_deco_gas+0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3129
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3130 ; invalidate ascent time (normal plan)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3131 movff int_O_ascenttime+1,WREG
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3132 bsf WREG,int_invalid_flag
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3133 movff WREG,int_O_ascenttime+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3134
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3135 ; invalidate CNS at end of dive in normal plan
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3136 movff int_O_normal_CNS_fraction+1,WREG
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3137 bsf WREG,int_invalid_flag
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3138 movff WREG,int_O_normal_CNS_fraction+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3139
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3140 ; restart deco engine
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3141 movff char_O_main_status,WREG ; get current main engine configuration
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3142 bcf WREG,DECO_COMPLETED_NORM ; eventually clear flag stating completion of normal plan
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3143 bsf WREG,DECO_COMPLETED_ALT ; fake we came from alternative plan to force normal plan to be done next
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3144 movff WREG,char_O_main_status ; write back new configuration
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3145 movff char_O_deco_status,WREG ; get current deco engine status
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3146 bcf WREG,DECO_STATUS_0_FLAG ; set status flags to...
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3147 bcf WREG,DECO_STATUS_1_FLAG ; ... DECO_STATUS_START
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3148 movff WREG,char_O_deco_status ; write back new configuration to restart deco computations
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3149
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3150 inval_alternative_plan_data:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3151 ; invalidate ascent time (alternative plan)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3152 movff int_O_alternate_ascenttime+1,WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3153 bsf WREG,int_invalid_flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3154 movff WREG,int_O_alternate_ascenttime+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3155
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3156 ; invalidate CNS at end of dive in alternative plan
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3157 movff int_O_alternate_CNS_fraction+1,WREG
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3158 bsf WREG,int_invalid_flag
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3159 movff WREG,int_O_alternate_CNS_fraction+1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3160
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3161 ; invalidate ascent gas needs
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3162 movff int_O_ascent_pres_need+1,WREG
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3163 bsf WREG,int_invalid_flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3164 movff WREG,int_O_ascent_pres_need+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3165
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3166 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3167 ; invalidate pressure needs (TR functions)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3168 movff int_O_pressure_need+1,WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3169 bsf WREG,int_not_avail_flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3170 movff WREG,int_O_pressure_need+1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3171 movff int_O_pressure_need+3,WREG
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3172 bsf WREG,int_not_avail_flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3173 movff WREG,int_O_pressure_need+3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3174 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3175
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3176 ; update display depended on NDL or deco mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3177 bsf FLAG_TFT_display_ndl_or_deko
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3178
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3179 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3180
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3181 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3182 ; Simulator Mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3183 ;
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3184
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3185 global do_demo_divemode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3186 do_demo_divemode:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3187 call TFT_ClearScreen ; blank screen
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3188 call option_save_all ; save all settings into EEPROM before starting simulation
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3189 call deco_push_tissues_to_vault ; C-code: back-up status of the real tissues
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3190 banksel common ; bank 1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3191
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3192 ; +++ COMMENT OUT FOR TESTING PURPOSE ONLY !!! +++
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3193 bsf restore_deco_data ; restore tissue and CNS after simulator use
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3194 ; +++ DO NOT COMMENT OUT IN OPERATIONAL USE !!! +++
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3195
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3196 bcf pressure_refresh
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3197 btfss pressure_refresh ; wait for sensor
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3198 bra $-2
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3199
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3200 bsf simulatormode_active ; set flag
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3201
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3202 banksel char_I_bottom_depth ; compute dive ambient conditions
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3203 movf char_I_bottom_depth,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3204 mullw .100
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3205 movff PRODL,rel_pressure+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3206 movff PRODH,rel_pressure+1
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3207 movlw LOW (.1000)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3208 addwf PRODL,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3209 movff WREG,sim_pressure+0
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3210 movlw HIGH (.1000)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3211 addwfc PRODH,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3212 movff WREG,sim_pressure+1
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3213 banksel common ; bank 1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3214
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3215 bsf divemode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3216 goto diveloop ; switch into dive mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3217
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3218 END