annotate src/divemode.asm @ 631:185ba2f91f59

3.09 beta 1 release
author heinrichsweikamp
date Fri, 28 Feb 2020 15:45:07 +0100
parents cd58f7fc86db
children 4050675965ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
heinrichsweikamp
parents:
diff changeset
1 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
2 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3 ; File divemode.asm combined next generation V3.08.8
0
heinrichsweikamp
parents:
diff changeset
4 ;
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
5 ; Dive Mode
0
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 "math.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
19 #include "wait.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
20 #include "customview.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
21 #include "start.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
22 #include "adc_lightsensor.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
23 #include "ghostwriter.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
24 #include "i2c.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
25 #include "calibrate.inc"
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
26 #include "convert.inc"
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
27 #include "surfmode.inc"
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
28 #include "rx_ops.inc"
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
29
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
30
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
31 extern do_line_menu
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
32 extern do_main_divemenu
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
33 extern menu_draw_lines_divemode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
34 extern init_recording_params
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
35 extern option_check_and_store_all
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
36
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
37 IFDEF _compass
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
38 extern TFT_dive_compass_heading
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
39 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
40
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
41 IFDEF _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
42 extern do_main_cavemenu
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
43 ENDIF
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
44
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
45 ;---- Private local Variables -------------------------------------------------
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
46
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
47 CBLOCK local1 ; max size is 16 Byte !!!
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
48 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
49 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
50 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
51 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
52 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
53 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
54 best_gas_depth ; used in search for best gas/dil: best gas/dil change depth
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
55 last_pressure_velocity:2 ; cached last absolute pressure for velocity calculation
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
56 TFT_output_flags_1 ; TFT update flags for output phase 1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
57 TFT_output_flags_2 ; TFT update flags for output phase 2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
58 TFT_output_flags_3 ; TFT update flags for output phase 3
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
59 TFT_output_flags_4 ; TFT update flags for output phase 4
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
60 DM_flags_local ; various dive mode flags
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
61 ENDC ; used: 14 byte, remaining: 2 byte
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
62
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
63 CBLOCK local2 ; max size is 16 Byte !!!
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
64 pressure_rel_accu_trip:4 ; pressure accumulator for calculating the resettable average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
65 pressure_rel_accu_total:4 ; pressure accumulator for calculating the total dive average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
66 xmitter_flags_stat ; pressure transmitter flags for status
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
67 xmitter_flags_mesg ; pressure transmitter flags for messages
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
68 ppO2_min:2 ; used in search for best gas/dil: minimum ppO2 required
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
69 ppO2_max_default:2 ; used in search for best gas/dil: default maximum ppO2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
70 ppO2_max_deco:2 ; used in search for best gas/dil: deco maximum ppO2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
71 ENDC ; used: 16 byte, remaining: 0 byte ==> FULL
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
72
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
73
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
74 ;---- Private local Flags ----------------------------------------------------
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
75
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
76 ; TFT_output_flags_1 - phase 1: every second - before deco calculations, all modes
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
77 #DEFINE FLAG_TFT_depth_current TFT_output_flags_1,0 ; =1: show current depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
78 #DEFINE FLAG_TFT_depth_maximum TFT_output_flags_1,1 ; =1: show maximum depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
79 #DEFINE FLAG_TFT_active_gas_divemode TFT_output_flags_1,2 ; =1: show active gas and dive mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
80 #DEFINE FLAG_TFT_apnoe_surface_time TFT_output_flags_1,3 ; =1: show apnoe mode surface time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
81 #DEFINE FLAG_TFT_depth_maximum_apnoe TFT_output_flags_1,4 ; =1: show maximum depth of last apnoe dive
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
82 #DEFINE FLAG_TFT_clear_apnoe_surface TFT_output_flags_1,5 ; =1: clear apnoe mode surface data from screen
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
83 #DEFINE FLAG_TFT_apnoe_divetime TFT_output_flags_1,6 ; =1: show apnoe mode dive times
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
84 #DEFINE FLAG_TFT_temperature TFT_output_flags_1,7 ; =1: show temperature (or resettable dive time when in compass view)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
85
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
86 ; TFT_output_flags_2 - phase 2: every second - before deco calculations, deco modes only
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
87 #DEFINE FLAG_TFT_divemode_mask TFT_output_flags_2,0 ; =1: show dive mode mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
88 #DEFINE FLAG_TFT_divetime TFT_output_flags_2,1 ; =1: show dive time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
89 #DEFINE FLAG_TFT_safety_stop_show TFT_output_flags_2,2 ; =1: show safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
90 #DEFINE FLAG_TFT_safety_stop_clear TFT_output_flags_2,3 ; =1: clear safety stop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
91 ; TFT_output_flags_2,4 ; --- unused
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
92 ; TFT_output_flags_2,5 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
93 ; TFT_output_flags_2,6 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
94 ; TFT_output_flags_2,7 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
95
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
96 ; TFT_output_flags_3 - phase 3: every second - after deco calculations, deco modes only
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
97 #DEFINE FLAG_TFT_clear_deco_data TFT_output_flags_3,0 ; =1: clear deco data (NDL or stop & TTS)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
98 #DEFINE FLAG_TFT_display_ndl_mask TFT_output_flags_3,1 ; =1: show NDL mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
99 #DEFINE FLAG_TFT_display_deco_mask TFT_output_flags_3,2 ; =1: show deco mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
100 #DEFINE FLAG_TFT_display_ndl TFT_output_flags_3,3 ; =1: show NDL data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
101 #DEFINE FLAG_TFT_display_deco TFT_output_flags_3,4 ; =1: show deco stop data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
102 #DEFINE FLAG_TFT_display_tts TFT_output_flags_3,5 ; =1: show deco TTS data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
103 ; TFT_output_flags_3,6 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
104 ; TFT_output_flags_3,7 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
105
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
106 ; TFT_output_flags_4 - phase 4: every second - after deco calculations, all modes
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
107 #DEFINE FLAG_TFT_customview_callup TFT_output_flags_4,0 ; =1: show the custom view mask
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
108 #DEFINE FLAG_TFT_sign_show TFT_output_flags_4,1 ; =1: show the advice / attention / warning sign
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
109 #DEFINE FLAG_TFT_sign_clear TFT_output_flags_4,2 ; =1: clear the advice / attention / warning sign
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
110 #DEFINE FLAG_TFT_message_clear_both TFT_output_flags_4,3 ; =1: clear messages, both rows
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
111 #DEFINE FLAG_TFT_message_clear_2nd TFT_output_flags_4,4 ; =1: clear messages, 2nd row only
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
112 #DEFINE FLAG_TFT_velocity_show TFT_output_flags_4,5 ; =1: show vertical velocity
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
113 #DEFINE FLAG_TFT_velocity_clear TFT_output_flags_4,6 ; =1: clear vertical velocity
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
114 ; TFT_output_flags_4,7 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
115
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
116
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
117 ; Pressure Transmitter Status
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
118 #DEFINE transmitter1_lost xmitter_flags_stat,0 ; =1: transmitter 1 lost is an old message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
119 #DEFINE transmitter1_battery xmitter_flags_stat,1 ; =1: transmitter 1 battery low is an old message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
120 #DEFINE transmitter1_pres_warn xmitter_flags_stat,2 ; =1: transmitter 1 pressure warning is an old message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
121 #DEFINE transmitter1_pres_att xmitter_flags_stat,3 ; =1: transmitter 1 pressure attention is an old message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
122 #DEFINE transmitter2_lost xmitter_flags_stat,4 ; =1: transmitter 2 lost is an old message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
123 #DEFINE transmitter2_battery xmitter_flags_stat,5 ; =1: transmitter 2 battery low is an old message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
124 #DEFINE transmitter2_pres_warn xmitter_flags_stat,6 ; =1: transmitter 2 pressure warning is an old message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
125 #DEFINE transmitter2_pres_att xmitter_flags_stat,7 ; =1: transmitter 2 pressure attention is an old message
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
126
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
127 ; Pressure Transmitter Messages
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
128 #DEFINE pres_customview_shown xmitter_flags_mesg,0 ; =1: pressure readings custom view has been shown before
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
129 #DEFINE show_transmitter_attention xmitter_flags_mesg,1 ; =1: show transmitter attention
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
130 #DEFINE show_pres_warning xmitter_flags_mesg,2 ; =1: show transmitter pressure warning
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
131 #DEFINE show_pres_attention xmitter_flags_mesg,3 ; =1: show transmitter pressure attention
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
132 ; xmitter_flags_mesg,4 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
133 ; xmitter_flags_mesg,5 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
134 ; xmitter_flags_mesg,6 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
135 ; xmitter_flags_mesg,7 ; --- unused
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
136
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
137 ; various Flags
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
138 #DEFINE new_deco_data_avail DM_flags_local,0 ; =1: new NDL or deco data available
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
139 #DEFINE o2_sensors_agree DM_flags_local,1 ; =1: the ppO2 of all sensors are within the threshold range
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
140 #DEFINE update_menu DM_flags_local,2 ; =1: redraw the dive menu
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
141 #DEFINE FLAG_SP2_used DM_flags_local,3 ; =1: setpoint 2 has been auto-selected already
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
142 #DEFINE FLAG_SP3_used DM_flags_local,4 ; =1: setpoint 3 has been auto-selected already
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
143 #DEFINE FLAG_SP4_used DM_flags_local,5 ; =1: setpoint 4 has been auto-selected already
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
144 #DEFINE FLAG_SP5_used DM_flags_local,6 ; =1: setpoint 5 has been auto-selected already
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
145 ; DM_flags_local,7 ; --- unused
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
146
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
147
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
148 dmode CODE
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
149
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
150 ;=============================================================================
0
heinrichsweikamp
parents:
diff changeset
151
heinrichsweikamp
parents:
diff changeset
152 global diveloop
heinrichsweikamp
parents:
diff changeset
153 diveloop:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
154 clrf STKPTR ; clear return addresses stack
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
155
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
156 ; start with a clean time base
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
157 bsf reset_timebase ; request ISR to reset the main timebase,
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
158 ; as we are in dive mode the dive timers will be reset as well
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
159
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
160 ; reset global flags
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
161 clrf DM_flags_state ; clear all flags for dive mode status
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
162 clrf DM_flags_event ; clear all flags for data recording events
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
163 clrf DM_flags_request ; clear all flags for user requests / general
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
164 IFDEF _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
165 clrf DM_flags_cavereq ; clear all flags for user requests / cave mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
166 ENDIF
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
167 clrf DM_flags_layout1 ; clear all flags for display control / layout (1)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
168 clrf DM_flags_layout2 ; clear all flags for display control / layout (2)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
169 clrf DM_flags_layout3 ; clear all flags for display control / layout (3)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
170 clrf DM_flags_message ; clear all flags for display control / messages
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
171 clrf DM_flags_gas_dil ; clear all flags for display control / gases, diluents, depth
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
172
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
173 bcf dive_main_menu ; clear dive main menu flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
174 bcf dive_options_menu ; clear dive options menu flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
175
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
176 ; reset local flags
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
177 clrf TFT_output_flags_1 ; clear all flags for TFT output phase 1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
178 clrf TFT_output_flags_2 ; clear all flags for TFT output phase 2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
179 clrf TFT_output_flags_3 ; clear all flags for TFT output phase 3
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
180 clrf TFT_output_flags_4 ; clear all flags for TFT output phase 4
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
181 clrf xmitter_flags_stat ; clear all pressure transmitter status flags
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
182 clrf xmitter_flags_mesg ; clear all pressure transmitter message flags
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
183 clrf DM_flags_local ; clear all the various other flags, too
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
184
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
185 ; configure screen layout (all flags were cleared above)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
186 TSTOSC opt_layout ; alternative layout enabled?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
187 bsf alt_layout_active ; YES - start with alternative layout
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
188
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
189 ; configure tissue graphics (all flags were cleared above)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
190 TSTOSS opt_tissue_graphics ; shall show: 0= pres+sat, 1= N2+He
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
191 bsf tissue_graphic_layout ; YES - show press+sat
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
192
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
193 TSTOSC char_I_model ; GF factors enabled?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
194 bsf tissue_graphic_gf ; YES - show GF lines
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
195
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
196
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
197 ; boot tasks for all modes
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
198 call diveloop_boot
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
199
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
200 ; startup tasks for all modes
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
201 ; clrf CCP1CON ; stop PWM
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
202 ; bcf PORTC,2 ; pull PWM output to GND
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
203 ; clrf CCPR1L ; backlight off
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
204 call TFT_boot ; initialize TFT (includes clear screen)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
205 call TFT_show_divemode_mask ; display static dive mode mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
206 call TFT_Display_FadeIn ; dim up the display
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
207
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
208 ; reload and redraw last custom view
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
209 movff customview_divemode,active_customview
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
210 bsf FLAG_TFT_customview_callup
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
211
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
212 bcf divetime_longer_1min ; the dive has just begun
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
213 btfsc FLAG_apnoe_mode ; in apnea mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
214 bsf divetime_longer_1min ; YES - force dive to have lasted for longer than 1 minute already
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
215 btfsc sensor_override_active ; in simulator mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
216 bsf divetime_longer_1min ; YES - force dive to have lasted for longer than 1 minute already
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
217
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
218 bsf trigger_pres_cur_changed ; flag that the pressures have changed to have all data...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
219 bsf trigger_pres_max_changed ; ... written to the display on the first output round
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
220
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
221 bsf trigger_temp_changed ; flag that the temperature has changed to have the temperature ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
222 ; ... written to the display on the first output round
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
223
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
224 bsf new_deco_data_avail ; flag that new deco engine results are available to have the initial data ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
225 ; ... written to the display on the first output round
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
226
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
227 ; clear the resettable average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
228 call clear_resettable_average_depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
229
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
230 ; ; initial caching of new absolute and relative pressure, ISR-safe 2 byte copies
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
231 ; SMOVII pressure_abs, pressure_abs_cached
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
232 ; SMOVII pressure_rel_cur,pressure_rel_cur_cached
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
233
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
234 ; ; initial transfer of absolute pressure to deco engine
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
235 ; MOVII pressure_abs_cached,int_I_pres_respiration
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
236
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
237 btfsc FLAG_apnoe_mode ; in apnoe mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
238 bra diveloop_1 ; YES - done with initialization
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
239 btfsc FLAG_gauge_mode ; NO - in gauge mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
240 bra diveloop_1 ; YES - done with initialization
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
241 bsf FLAG_TFT_display_ndl_mask ; NO - in deco mode then, display NDL mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
242 bsf FLAG_TFT_active_gas_divemode; - request initial display of gas and setpoint
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
243
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
244 diveloop_1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
245 btfsc reset_timebase ; has the ISR confirmed reset of the timebase meanwhile?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
246 bra $-2 ; NO - not yet, loop waiting for confirmation before entering the dive loop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
247
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
248 diveloop_loop:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
249 ; ### the dive loop starts here ###
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
250 btfsc trigger_full_second ; new 1/1 second?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
251 bra diveloop_loop_2 ; YES - continue with tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
252 btfsc trigger_half_second ; NO - new 1/2 second?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
253 bra diveloop_loop_1 ; YES - continue with tasks every 1/2 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
254
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
255 ; tasks every round except every 1/1 or 1/2 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
256 IFDEF _compass
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
257 movlw index_compass_dm ; index of compass view
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
258 cpfseq active_customview ; in compass view?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
259 bra diveloop_loop_11 ; NO - continue with tasks every round
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
260 call TFT_dive_compass_heading ; YES - update compass heading value
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
261 bsf FLAG_TFT_temperature ; - redraw temperature (will show resettable dive time now)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
262 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
263 bra diveloop_loop_11 ; - continue tasks every round
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
264
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
265 diveloop_loop_1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
266 ; tasks every 1/2 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
267 bcf trigger_half_second ; clear flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
268 btfsc FLAG_gauge_mode ; in gauge mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
269 bra diveloop_loop_11 ; YES - done with 1/2 second tasks
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
270 btfsc FLAG_apnoe_mode ; NO - in apnoe mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
271 bra diveloop_loop_11 ; YES - done with 1/2 second tasks
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
272
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
273 ; tasks every 1/2 second in deco modes
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
274 call callup_deco_engine ; ##### manage and invoke the deco calculation engine #####
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
275 bra diveloop_loop_11 ; done with 1/2 second tasks
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
276
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
277 diveloop_loop_2:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
278 ; tasks every 1/1 second (code includes tasks every 1/2 second that fall onto the full second)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
279 bcf trigger_full_second ; clear flag for new 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
280 bcf trigger_half_second ; clear flag for new 1/2 second as well
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
281
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
282 btfss trigger_temp_changed ; has the temperature changed?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
283 bra diveloop_loop_3 ; NO - continue with tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
284
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
285 bsf FLAG_TFT_temperature ; YES - display temperature
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
286 bcf trigger_temp_changed ; - clear flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
287
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
288 ; "future hardware will need min temperature checked every second..." (?)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
289
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
290 MOVII temperature_min,sub_a ; - copy last temperature_min to sub_a
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
291 SMOVII temperature_cur,sub_b ; - ISR-safe 2 byte copy of current temperature to sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
292 call sub16 ; - sub_c = sub_a - sub_b = temperature_min - temperature
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
293 btfsc neg_flag ; - temperature > temperature_min ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
294 bra diveloop_loop_3 ; YES - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
295 MOVII sub_b,temperature_min ; NO - store new minimum temperature
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
296
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
297 diveloop_loop_3:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
298 ; tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
299 btfss trigger_pres_cur_changed ; has the pressure changed?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
300 bra diveloop_loop_4 ; NO - continue with tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
301
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
302 ; set flags
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
303 bcf trigger_pres_cur_changed ; clear flag for pressure change
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
304 bsf FLAG_TFT_depth_current ; set flag to display updated depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
305
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
306 ; cache new absolute and relative pressure, ISR-safe 2 byte copies
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
307 SMOVII pressure_abs, pressure_abs_cached
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
308 SMOVII pressure_rel_cur,pressure_rel_cur_cached
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
309
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
310 ; transfer absolute pressure to deco engine
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
311 MOVII pressure_abs_cached,int_I_pres_respiration
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
312
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
313 ; compute absolute pressure / 10, will be used later on a couple of times
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
314 MOVII pressure_abs_cached,xA
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
315 MOVLI .10,xB
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
316 call div16x16 ; xC = xA / xB = absolute pressure / 10
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
317 MOVII xC,pressure_abs_10 ; store result for later use
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
318
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
319 ; compute current depth in meters
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
320 MOVII pressure_rel_cur_cached,mpr ; copy current relative pressure in [mbar] to MPR
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
321 call convert_pres_to_depth ; convert pressure in [mbar] to depth in [cm]
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
322 ADDLI .50,mpr ; add 50 cm for rounding up/down around 0.5 meters
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
323 MOVII mpr, xA ; copy depth in [cm] into xA
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
324 MOVLI .100,xB ; load factor 100 cm/m into xB
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
325 call div16x16 ; xC = xA / xB = depth in full meters
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
326 movff xC+0,depth_meter ; store result as depth in [m], only low byte needed
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
327
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
328 IFDEF _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
329 ; adjust auto-setpoint
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
330 btfsc FLAG_ccr_mode ; in CCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
331 call check_dive_autosp ; YES - check for Auto-SP
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
332 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
333
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
334 ; check for new max pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
335 btfss trigger_pres_max_changed ; has the max pressure changed?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
336 bra diveloop_loop_4 ; NO - continue with tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
337 bcf trigger_pres_max_changed ; YES - clear flag for new max pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
338 bsf FLAG_TFT_depth_maximum ; - set flag for displaying new max depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
339 SMOVII pressure_rel_max,pressure_rel_max_cached ; - cache new max depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
340
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
341 diveloop_loop_4:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
342 ; continue tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
343
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
344 IFDEF _external_sensor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
345 btfsc FLAG_ccr_mode ; in CCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
346 rcall calc_deko_divemode_sensor ; YES - do sensor data acquisition if applicable
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
347 btfsc FLAG_pscr_mode ; in pSCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
348 rcall calc_deko_divemode_sensor ; YES - do sensor data acquisition if applicable
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
349 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
350
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
351 IFDEF _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
352 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
353 bra diveloop_loop_4a ; NO - no backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
354 btfsc dive_turned ; dive turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
355 bra diveloop_loop_4a ; YES - no backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
356 btfsc backtrack_entire_full ; backtracking storage entirely used up?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
357 bra diveloop_loop_4a ; YES - no backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
358
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
359 incf backtrack_deltatime,F ; increment time elapsed since last depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
360 movlw .59 ; load WREG with coding of last second of a minute
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
361 cpfsgt backtrack_deltatime ; time elapsed since last depth recording > 59 seconds?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
362 bra diveloop_loop_4a ; NO - no backtracking depth recording now
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
363 rcall write_backtrack_1min_depth ; - store a backtracking depth data set
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
364 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
365
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
366 diveloop_loop_4a:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
367 ; continue tasks every 1/1 second
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
368
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
369 btfsc FLAG_apnoe_mode ; in apnoe mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
370 rcall divemode_apnoe_tasks ; YES - do 1 sec. apnoe tasks
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
371
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
372 ; display all animated (blinking) values at the beginning of each full second to have a stable timebase
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
373 rcall TFT_output_1 ; do display updates
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
374
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
375 btfss FLAG_apnoe_mode ; in apnoe mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
376 bra diveloop_loop_5 ; NO - continue with deco mode tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
377
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
378 ; apnoe mode tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
379 call dive_customview_second ; do every second tasks for the custom view area
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
380 bra diveloop_loop_10 ; continue with common tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
381
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
382 diveloop_loop_5:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
383 ; deco mode tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
384 bsf FLAG_TFT_divetime ; display (new) dive time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
385
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
386 rcall safety_stop_show ; serve safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
387
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
388 rcall TFT_output_2 ; do display updates
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
389
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
390 call divemode_check_warnings ; check for warnings
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
391
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
392 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
393 btfss tr_functions_activated ; TR functions activated?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
394 bra diveloop_loop_6 ; NO - continue with deco mode tasks every 1/2 second
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
395 call get_pressure_readings ; YES - get pressure readings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
396 call configure_sac_calculation ; - set up SAC calculation
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
397 ENDIF
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
398
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
399 diveloop_loop_6:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
400 ; deco mode tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
401 INCI divesecs_avg_trip ; increment the resettable dive time
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
402 INCI divesecs_avg_total ; increment the total dive time
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
403
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
404 btfsc FLAG_gauge_mode ; in gauge mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
405 bra diveloop_loop_7 ; YES - skip deco calculations
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
406
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
407 call callup_deco_engine ; ##### manage and invoke the deco calculation engine #####
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
408
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
409 btfsc new_deco_data_avail ; new NDL or deco data available?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
410 call show_new_deco_data ; YES - update the display and update the decostop_active flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
411
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
412 btfsc decostop_active ; in deco mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
413 bsf FLAG_TFT_display_deco ; YES - update deco stop depth & time every second because of depth-dependent color-coding
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
414
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
415 bsf FLAG_TFT_depth_current ; set flag to display depth (in next round, needed in deco modes irrespectively of a pressure change for color-coding and blinking effects)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
416
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
417 diveloop_loop_7:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
418 ; deco mode tasks alternating every 2 seconds on timebase
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
419 btfss timebase_1sec ; on even second of timebase?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
420 rcall calc_velocity ; YES - calculate velocity and display if > threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
421 btfsc timebase_1sec ; on odd second of timebase?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
422 call check_gas_best ; YES - check if a better gas cue can be given
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
423
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
424 diveloop_loop_8:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
425 ; deco mode tasks alternating every 2 seconds on resettable dive time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
426 btfss divesecs_avg_trip+0,0 ; on even second of resettable dive time?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
427 call calc_average_depth ; YES - calculate average depth
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
428 btfsc divesecs_avg_trip+0,0 ; on odd second of resettable dive time?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
429 rcall safety_stop_control ; YES - exercise safety stop control
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
430
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
431 diveloop_loop_9:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
432 ; deco mode tasks every 1/1 second
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
433 rcall check_deco_states ; check and lock if in deco and in the deco stops region
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
434 rcall TFT_output_3 ; do display updates
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
435
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
436 diveloop_loop_10:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
437 ; common tasks every 1/1 second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
438 rcall timeout_divemode ; check for timeout condition
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
439 call check_dive_modes ; test if depth still deeper than threshold
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
440
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
441 btfsc trigger_full_minute ; has next minute begun?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
442 rcall update_divemode60 ; YES - update clock, etc.
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
443
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
444 btfss FLAG_oc_mode ; are we in OC mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
445 bsf FLAG_TFT_active_gas_divemode; NO - have the gas and setpoint redrawn on every second to update setpoint display, animate the blinking, etc.
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
446
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
447 btfsc dive_main_menu ; dive mode menu shown?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
448 bsf update_menu ; YES - request update
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
449
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
450 rcall TFT_output_4 ; do display updates
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
451
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
452 ; tasks every round, every mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
453 diveloop_loop_11:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
454 call test_switches_divemode ; check switches in dive mode
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
455 bra diveloop_loop_12
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
456
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
457 global diveloop_menu_exit
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
458 diveloop_menu_exit: ; jump-in from menu exit
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
459 bsf FLAG_TFT_temperature ; restore temperature display or resettable dive time (was overwritten by menu)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
460
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
461 diveloop_loop_12:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
462 bsf FLAG_TFT_active_gas_divemode; redraw gas and setpoint (eventually needed to restore the "Bailout" text)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
463
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
464 btfsc request_next_custview ; shall show next custom view?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
465 call dive_customview_toggle ; YES - show next custom view (and delete this flag)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
466
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
467 btfsc request_gas_change ; shall change gas?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
468 call gas_switch_common ; YES
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
469
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
470 btfsc request_gas_update ; shall update the gases?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
471 call gas_update_common ; YES
0
heinrichsweikamp
parents:
diff changeset
472
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
473 btfsc request_toggle_GF ; shall toggle GF/aGF?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
474 rcall divemodemode_togglegf ; YES
0
heinrichsweikamp
parents:
diff changeset
475
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
476 IFDEF _cave_mode
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
477 btfsc request_cave_off_turned ; shall switch cave mode off and set the dive as turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
478 rcall cavemode_switch_off_turned ; YES
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
479
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
480 btfsc request_cave_toggle ; shall toggle cave mode off/on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
481 rcall cavemode_toggle_onoff ; YES
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
482
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
483 btfsc request_turn_turn ; shall turn the dive?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
484 rcall cavemode_turndive_turn ; YES
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
485
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
486 btfsc request_turn_toggle ; shall toggle the turn dive state?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
487 rcall cavemode_turndive_toggle ; YES
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
488
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
489 btfsc request_waypoint_set ; shall set a waypoint?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
490 rcall cavemode_waypoint_set ; YES
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
491
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
492 btfsc request_waypoint_out ; shall step one waypoint out of the cave?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
493 rcall cavemode_waypoint_out ; YES
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
494
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
495 btfsc request_waypoint_in ; shall step one waypoint into the cave?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
496 rcall cavemode_waypoint_in ; YES
604
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
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
499 btfsc request_set_marker ; shall set a marker?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
500 call set_logbook_marker ; YES
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
501
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
502 btfsc trigger_sample_divedata ; shall store new sample of dive data?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
503 call store_dive_data ; YES - store profile data
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
504
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
505 btfss divemode ; dive finished?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
506 goto ghostwriter_end_dive ; YES - dive finished
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
507
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
508 IFDEF _screendump
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
509 btfsc screen_dump_avail ; screen dump function enabled?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
510 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
511 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
512
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
513 bra diveloop_loop ; loop in dive mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
514
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
515 ;--------------------------------------------------------------------------------------------------------
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
516
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
517 TFT_output_1: ; every second - before deco calculations, all mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
518 btfsc FLAG_TFT_clear_apnoe_surface ; shall clear apnoe mode surface data from screen?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
519 call TFT_clear_apnoe_surface ; YES - clear apnoe mode surface data from screen
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
520
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
521 btfsc FLAG_TFT_depth_current ; shall show depth?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
522 call TFT_show_depth ; YES - display depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
523 btfsc FLAG_TFT_depth_maximum ; shall show max depth?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
524 call TFT_show_max_depth ; YES - display max depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
525 btfsc FLAG_TFT_active_gas_divemode ; shall show active gas and dive mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
526 call TFT_show_active_gas_divemode ; YES - display gas, setpoint and mode
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
527 btfsc FLAG_TFT_temperature ; shall show temperature?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
528 call TFT_show_temp_divemode ; YES - display temperature (or resettable dive time)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
529
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
530 btfsc FLAG_TFT_apnoe_surface_time ; shall show apnoe mode surface time?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
531 call TFT_show_apnoe_surface ; YES - show apnoe mode surface time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
532 btfsc FLAG_TFT_depth_maximum_apnoe ; shall show max. depth of last dive?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
533 call TFT_show_apnoe_max_depth ; YES - show max. depth of last dive
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
534 btfsc FLAG_TFT_apnoe_divetime ; shall show apnoe dive time?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
535 call TFT_show_apnoe_times ; YES - show apnoe dive time?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
536
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
537 clrf TFT_output_flags_1 ; mark all TFT updates done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
538 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
539
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
540 TFT_output_2: ; every second - before deco calculations, deco modes only
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
541 btfsc FLAG_TFT_divemode_mask ; shall re-draw mask?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
542 call TFT_show_divemode_mask ; YES - re-draw mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
543 btfsc FLAG_TFT_divetime ; shall show dive time?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
544 call TFT_show_divetime ; YES - show dive time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
545 btfsc FLAG_TFT_safety_stop_show ; shall show safety stop?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
546 call TFT_safety_stop_show ; YES - show safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
547 btfsc FLAG_TFT_safety_stop_clear ; shall clear safety stop?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
548 call TFT_safety_stop_clear ; YES - clear safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
549 clrf TFT_output_flags_2 ; mark all TFT updates done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
550 goto dive_customview_second ; do every-second tasks for the custom view area (in sync with the dive time) and return
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
551
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
552 TFT_output_3: ; every second - after deco calculations, deco modes only
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
553 btfsc FLAG_TFT_clear_deco_data ; shall clear deco data (NDL or stop & TTS)?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
554 call TFT_clear_deco_data ; YES - clear deco data (NDL or stop & TTS)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
555 btfsc FLAG_TFT_display_ndl_mask ; shall show NDL mask?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
556 call TFT_show_ndl_mask ; YES - show NDL mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
557 btfsc FLAG_TFT_display_ndl ; shall show NDL data?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
558 call TFT_show_ndl ; YES - show NDL data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
559 btfsc FLAG_TFT_display_deco_mask ; shall show deco mask?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
560 call TFT_show_deco_mask ; YES - show deco mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
561 btfsc FLAG_TFT_display_deco ; shall show deco stop?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
562 call TFT_show_deco ; YES - show deco stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
563 btfsc FLAG_TFT_display_tts ; shall show deco TTS?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
564 call TFT_show_tts ; YES - show deco TTS
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
565 clrf TFT_output_flags_3 ; mark all TFT updates done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
566 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
567
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
568 TFT_output_4: ; every second - after deco calculations, all modes
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
569 btfsc FLAG_TFT_customview_callup ; shall show a custom view?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
570 call dive_customview_callup ; YES - show a custom view
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
571 btfsc FLAG_TFT_velocity_show ; shall show vertical velocity?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
572 call TFT_velocity_show ; YES - show vertical velocity
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
573 btfsc FLAG_TFT_velocity_clear ; shall clear vertical velocity?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
574 call TFT_velocity_clear ; YES - clear vertical velocity
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
575 btfsc FLAG_TFT_sign_show ; shall show the advice / attention / warning sign?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
576 call TFT_divemode_sign_show ; YES - show sign
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
577 btfsc FLAG_TFT_sign_clear ; shall clear the advice / attention / warning sign?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
578 call TFT_divemode_sign_clear ; YES - clear sign
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
579 btfsc FLAG_TFT_message_clear_both ; shall clear all messages?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
580 call TFT_clear_message_window ; YES - clear complete message area
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
581 btfsc FLAG_TFT_message_clear_2nd ; shall clear 2nd row of message area?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
582 call TFT_clear_message_window_row2 ; YES - clear 2nd row of message area
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
583 clrf TFT_output_flags_4 ; mark all TFT updates done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
584 return ; done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
585
0
heinrichsweikamp
parents:
diff changeset
586 ;--------------------------------------------------------------------------------------------------------
heinrichsweikamp
parents:
diff changeset
587
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
588 divemode_apnoe_tasks: ; 1 sec. apnoe tasks
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
589 bsf FLAG_TFT_apnoe_divetime ; show apnoe dive times (current/last dive and total)
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
590 btfsc apnoe_at_surface ; at the surface?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
591 bra divemode_apnoe_tasks_surf ; YES - at the surface
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
592 ;bra divemode_apnoe_tasks_dive ; NO - in dive phase
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
593
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
594 divemode_apnoe_tasks_dive: ; apnoe mode, submerged
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
595 btfss apnoe_new_dive ; new dive begun?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
596 return ; NO - done
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
597 bcf apnoe_new_dive ; YES - clear flag
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
598 bsf FLAG_TFT_clear_apnoe_surface ; - clear apnoe mode surface data from screen
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
599 return ; - done
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
600
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
601 divemode_apnoe_tasks_surf: ; apnoe mode, at the surface
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
602 bsf FLAG_TFT_apnoe_surface_time ; show apnoe mode surface time
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
603 ; TODO: these outputs would need to be done only once after surfacing...
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
604 bsf FLAG_TFT_depth_maximum_apnoe ; show max. depth of last dive
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
605 bsf FLAG_TFT_depth_maximum ; show max. depth of all dives
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
606 ;bra apnoe_calc_maxdepth ; calculate overall max. depth and return
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
607
0
heinrichsweikamp
parents:
diff changeset
608
heinrichsweikamp
parents:
diff changeset
609 global apnoe_calc_maxdepth
heinrichsweikamp
parents:
diff changeset
610 apnoe_calc_maxdepth:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
611 MOVII apnoe_max_pressure, sub_a ; get max depth from all dives to far
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
612 MOVII pressure_rel_max_cached,sub_b ; get max depth of last dive
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
613 call cmpU16 ; sub_a - sub_b = apnoe_max_pressure - pressure_rel_max_cached
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
614 btfss neg_flag ; last dive deeper than all the others before?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
615 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
616 MOVII pressure_rel_max_cached,apnoe_max_pressure ; YES - store new overall max depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
617 return ; - done
0
heinrichsweikamp
parents:
diff changeset
618
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
619 ; --------------------------------------------------------------------------------------
0
heinrichsweikamp
parents:
diff changeset
620
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
621 ; Manage and invoke the Deco Calculation Engine
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
622 ; =============================================
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
623 ; Any reconfiguration done here only affects the deco calculation (prediction), not the
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
624 ; settings for the calculations done on the real tissues. The later ones are only altered
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
625 ; in case of a gas change, in case of a real bailout, or in case a switchback to setpoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
626 ; or sensor is done.
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
627 ; On event of a gas change, a diluent change, a real bailout, or a switchback, the settings
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
628 ; for the deco calculation are also automatically changed to match with the settings for the
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
629 ; real tissues. This is all done in the function 'gas_switch_common' which is triggered by
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
630 ; the flag 'request_gas_change'.
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
632 ; Deco Engine Calculation Schedules:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
633 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
634 ; Schedule Dive Mode Bailout fTTS Gas Needs Plan Deco Mode Planning Modes
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
635 ; ---------------------------------------------------------------------------------------------
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
636 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
637 ; 1a) OC no no (yes) norm OC (gas needs)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
638 ; alt -- --
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
639 ;
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
640 ; 1b) OC no YES (yes) norm OC --
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
641 ; alt OC fTTS, (gas needs)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
642 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
643 ; 2a) Loop no no no norm Loop --
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
644 ; alt -- --
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
645 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
646 ; 2b) Loop no yes no norm Loop --
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
647 ; alt Loop fTTS
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
648 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
649 ; 2c) Loop no (yes) YES norm Loop --
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
650 ; alt OC gas needs, (fTTS*)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
651 ;
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
652 ; 3) Loop YES n/a (yes) norm OC bailout, (gas needs)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
653 ; alt -- --
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
654 ; _____________________________________________________________________________________________
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
655 ; norm: normal plan, alt: alternative plan, -- none, (): optional, n/a: not applicable
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
656 ; * suppressed when in cave mode and dive is turned
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
657
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
658
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
659 callup_deco_engine:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
660
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
661 ; 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
662 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
663 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
664
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
665 ; check state of deco calculations
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
666 btfsc request_restart_engine ; restart of the deco engine requested?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
667 bra calc_deco_engine_restart ; YES - start a new normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
668 btfsc lo,DECO_COMPLETED_NORM ; NO - finished calculations for normal plan?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
669 bra calc_deco_engine_alt ; YES - eventually do an alternative plan next
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
670 btfsc lo,DECO_COMPLETED_ALT ; NO - finished calculations for alternative plan?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
671 bra calc_deco_engine_norm ; YES - do a normal plan next
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
672 bra calc_deco_engine_exec ; NO - continue executing current calculation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
673
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
674 calc_deco_engine_restart:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
675 bcf request_restart_engine ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
676 bcf lo,DECO_COMPLETED_NORM ; clear completion flag from normal plan if applicable
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
677 ;bra calc_deco_engine_norm ; continue with calculating a normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
678
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
679 ; ---- normal plans ----
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
680
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
681 calc_deco_engine_norm:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
682 bcf lo,DECO_COMPLETED_ALT ; clear completion flag from alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
683 IFDEF _ccr_pscr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
684 btfsc bailout_mode ; in real bailout?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
685 bra calc_deco_engine_norm_3 ; YES - configure real bailout schedule
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
686 btfss FLAG_oc_mode ; in OC dive mode?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
687 bra calc_deco_engine_norm_2 ; NO - configure loop schedules
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
688 ;bra calc_deco_engine_norm_1 ; YES - configure OC schedules
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
689 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
690
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
691 calc_deco_engine_norm_1:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
692 ; normal OC schedules
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
693 TSTOSC char_I_extra_time ; delay mode activated?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
694 bra calc_deco_engine_norm_1b ; YES - schedule 1b in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
695 ;bra calc_deco_engine_norm_1a ; NO - schedule 1a in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
696
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
697 calc_deco_engine_norm_1a:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
698 ; normal schedule 1a: OC with optional gas needs
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
699 ; bcf lo,DECO_BAILOUT_FLAG ; switch off bailout mode (will never be activated in this plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
700 ; bcf lo,DECO_DELAY_FLAG ; switch off delay mode (will never be activated in this plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
701 ; bcf hi,DECO_VOLUME_FLAG ; switch off gas needs calculation by default (if on, will always be on)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
702 TSTOSC opt_calc_gasvolume ; shall calculate gas needs?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
703 bsf hi,DECO_VOLUME_FLAG ; YES - switch on gas needs calculation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
704 bra calc_deco_engine_norm_start ; start deco engine in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
705
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
706 calc_deco_engine_norm_1b:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
707 ; normal schedule 1b: OC without delay and gas needs
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
708 ; bcf lo,DECO_BAILOUT_FLAG ; switch off bailout mode (will never be activated in this plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
709 bcf lo,DECO_DELAY_FLAG ; switch off delay mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
710 bcf hi,DECO_VOLUME_FLAG ; switch off gas needs calculation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
711 bra calc_deco_engine_norm_start ; start deco engine in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
712
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
713 IFDEF _ccr_pscr
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
714 calc_deco_engine_norm_2:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
715 ; normal loop schedules
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
716 TSTOSC opt_calc_gasvolume ; gas needs calculation activated?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
717 bra calc_deco_engine_norm_2c ; YES - schedule 2c in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
718 ;bra calc_deco_engine_norm_2ab ; NO - schedules 2a and 2b in normal plan are identical
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
719
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
720 calc_deco_engine_norm_2ab:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
721 ; normal schedule 2a & 2b: loop without anything
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
722 bcf lo,DECO_BAILOUT_FLAG ; switch off bailout mode (may return from real bailout)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
723 ; bcf hi,DECO_VOLUME_FLAG ; switch off gas needs calculation (will never be activated in this plans)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
724 bcf lo,DECO_DELAY_FLAG ; switch off delay mode (may have been set in alt. plan 2b)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
725 bra calc_deco_engine_norm_start ; start deco engine in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
726
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
727 calc_deco_engine_norm_2c:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
728 ; normal schedule 2c: loop with switch-back from simulated bailout
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
729 ; switch to CCR/pSCR
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
730 movf active_dil,W ; get current diluent
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
731 call deco_setup_cc_diluents_pre ; set up deco calculation in CCR/pSCR mode with diluents
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
732 calc_deco_engine_norm_2c_XX:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
733 bcf lo,DECO_BAILOUT_FLAG ; switch off bailout mode (may return from real bailout)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
734 bcf hi,DECO_VOLUME_FLAG ; switch off gas needs calculation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
735 bcf lo,DECO_DELAY_FLAG ; switch off delay mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
736 bra calc_deco_engine_norm_start ; start deco engine in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
737
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
738 calc_deco_engine_norm_3:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
739 ; real bailout schedule
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
740 bcf lo,DECO_DELAY_FLAG ; switch off delay mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
741 bcf hi,DECO_VOLUME_FLAG ; switch off gas needs calculation by default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
742 TSTOSC opt_calc_gasvolume ; shall calculate gas needs?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
743 bsf hi,DECO_VOLUME_FLAG ; YES - switch on gas needs calculation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
744 bsf lo,DECO_BAILOUT_FLAG ; switch on bailout mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
745 ;bra calc_deco_engine_norm_start ; start deco engine in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
746 ENDIF ; _ccr_pscr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
747
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
748 calc_deco_engine_norm_start:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
749 bsf lo,DECO_START_NORM ; calculate a normal plan
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
750 bra calc_deco_engine_start ; start deco engine
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
751
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
752 ; ---- alternative plans ----
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
753
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
754 calc_deco_engine_alt:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
755 bcf lo,DECO_COMPLETED_NORM ; clear completion flag from normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
756 IFDEF _ccr_pscr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
757 btfsc bailout_mode ; in real bailout?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
758 bra calc_deco_engine_norm_3 ; YES - schedule 3 has no alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
759 btfss FLAG_oc_mode ; in OC dive mode?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
760 bra calc_deco_engine_alt_2 ; NO - loop schedules
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
761 ;bra calc_deco_engine_alt_1 ; YES - OC schedules
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
762 ENDIF ; _ccr_pscr
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
763
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
764 calc_deco_engine_alt_1:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
765 ; alternative OC schedules
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
766 TSTOSS char_I_extra_time ; delay mode activated?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
767 bra calc_deco_engine_norm_1a ; NO - schedule 1a has no alternative plan
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
768 IFDEF _cave_mode
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
769 btfsc dive_turned ; YES - in cave mode and dive turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
770 bra calc_deco_engine_norm_1a ; YES - suppress delay mode -> do schedule 1a in normal plan
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
771 ENDIF
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
772 ;bra calc_deco_engine_alt_1b ; NO - do schedule 1b in alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
773
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
774 calc_deco_engine_alt_1b:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
775 ; alternative schedule 1b: OC with delay and optional gas needs
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
776 ; bcf lo,DECO_BAILOUT_FLAG ; switch off bailout mode (will never be activated in this plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
777 ; bcf hi,DECO_VOLUME_FLAG ; switch off gas needs calculation by default (comes in switched off state)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
778 TSTOSC opt_calc_gasvolume ; shall calculate gas needs?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
779 bsf hi,DECO_VOLUME_FLAG ; YES - switch on gas needs calculation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
780 bsf lo,DECO_DELAY_FLAG ; switch on delay mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
781 bra calc_deco_engine_alt_start ; start deco engine in alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
782
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
783 IFDEF _ccr_pscr
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
784 calc_deco_engine_alt_2:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
785 ; alternative loop schedules
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
786 TSTOSC opt_calc_gasvolume ; gas needs calculation activated?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
787 bra calc_deco_engine_alt_2c ; YES - 2c in alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
788 TSTOSS char_I_extra_time ; NO - delay mode activated?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
789 bra calc_deco_engine_norm_2ab ; NO - schedule 2a has no alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
790 ;bra calc_deco_engine_alt_2b ; YES - schedule 2b in alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
791
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
792 calc_deco_engine_alt_2b:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
793 ; alternative schedule 2b: loop with delay
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
794 ; bcf lo,DECO_BAILOUT_FLAG ; switch off bailout mode (will be deactivated in normal plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
795 ; bcf hi,DECO_VOLUME_FLAG ; switch off gas needs calculation (will never be activated in this plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
796 bsf lo,DECO_DELAY_FLAG ; switch on delay mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
797 bra calc_deco_engine_alt_start ; start deco engine in normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
798
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
799 calc_deco_engine_alt_2c:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
800 ; alternative schedule 2c: simulated bailout (if possible)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
801 decf best_gas_number,W ; get best gas number -1 into WREG. If not available, WREG will be 255 now. If not computed yet, WREG will be 254 now.
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
802 btfsc WREG,7 ; WREG < 128 (a bailout gas is available)?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
803 bra calc_deco_engine_alt_2c_XX ; NO - no bailout plan possible because no bailout gas available to switch to
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
804 movf best_gas_number,W ; YES - get number of best gas into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
805 call deco_setup_oc_gases_pre ; - set up deco calculation in OC mode with OC gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
806 ; bcf lo,DECO_DELAY_FLAG ; - switch off delay mode by default (comes in switched off state)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
807 TSTOSC char_I_extra_time ; - delay mode activated?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
808 bsf lo,DECO_DELAY_FLAG ; YES - switch on delay mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
809 IFDEF _cave_mode
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
810 btfsc dive_turned ; in cave mode and dive turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
811 bcf lo,DECO_DELAY_FLAG ; YES - suppress delay mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
812 ENDIF
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
813 bsf lo,DECO_BAILOUT_FLAG ; - switch on bailout mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
814 bsf hi,DECO_VOLUME_FLAG ; - switch on gas needs calculation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
815 bra calc_deco_engine_alt_start ; - start deco engine in alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
816 calc_deco_engine_alt_2c_XX:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
817 call inval_alternative_plan_data ; invalidate all alternative (bailout) plan data because they are not applicable any more
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
818 bra calc_deco_engine_norm_start ; continue calculating as normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
819 ENDIF ; _ccr_pscr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
820
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
821 calc_deco_engine_alt_start:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
822 bsf lo,DECO_START_ALT ; calculate an alternative plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
823 ;bra calc_deco_engine_start ; start deco engine
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
824
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
825 ; ---- start deco engine ----
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
826
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
827 calc_deco_engine_start:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
828 IFDEF _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
829 bcf hi,DECO_CAVE_MODE ; deactivate cave mode by default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
830 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
831 bra calc_deco_engine_start_1 ; NO - keep deactivated, no backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
832 bsf hi,DECO_CAVE_MODE ; YES - activate cave mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
833 btfss dive_turned ; - dive turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
834 call write_backtrack_deltatime ; NO - update current delta time
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
835 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
836 calc_deco_engine_start_1:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
837 movff hi,char_O_main_status ; write-back char_O_main_status to deco engine interface
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
838 movff lo,char_O_deco_status ; write-back char_O_deco_status to deco engine interface
0
heinrichsweikamp
parents:
diff changeset
839
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
840 calc_deco_engine_exec:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
841 ; +++++++++++++++++++++++++++++++++++++
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
842 call deco_calc_hauptroutine ; invoke the deco engine (C-code)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
843 banksel common ; back to bank common
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
844 ; +++++++++++++++++++++++++++++++++++++
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
845
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
846 ifdef _debug_output
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
847 call TFT_debug_output ; debug output of scheduling performance data
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
848 endif
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
849
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
850 ; check if new calculation results for normal plan mode are available
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
851 movff char_O_deco_status,WREG ; get deco status of deco engine
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
852 btfsc WREG,DECO_COMPLETED_NORM ; new calculation results for normal plan available?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
853 bsf new_deco_data_avail ; YES - set flag for new NDL or deco data available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
854
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
855 ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
856 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
857
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
858 ; -------------------------------------------------------------------------------------------------
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
859
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
860 show_new_deco_data:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
861 bcf new_deco_data_avail ; reset flag for new NDL or deco data available
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
862 movff char_O_deco_info,WREG ; get the deco info vector
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
863 btfsc WREG,deco_stops_norm ; deco stops found?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
864 bra show_new_deco_data_deco ; YES - in deco
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
865 ;bra show_new_deco_data_ndl ; NO - within NDL
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
866
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
867 show_new_deco_data_ndl: ; within NDL
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
868 btfsc decostop_active ; been in deco mode before?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
869 bsf FLAG_TFT_clear_deco_data ; YES - clear old deco data
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
870 btfsc decostop_active ; been in deco mode before?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
871 bsf FLAG_TFT_display_ndl_mask ; YES - display NDL data mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
872 bcf decostop_active ; clear flag for been in deco mode before
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
873 bsf FLAG_TFT_display_ndl ; display NDL time
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
874 return
0
heinrichsweikamp
parents:
diff changeset
875
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
876 show_new_deco_data_deco: ; in deco
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
877 btfss decostop_active ; been in deco mode before?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
878 bsf FLAG_TFT_clear_deco_data ; NO - clear old deco data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
879 btfss decostop_active ; been in deco mode before?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
880 bsf FLAG_TFT_display_deco_mask ; NO - display deco data mask
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
881 bsf decostop_active ; set flag for being in deco mode
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
882 bsf FLAG_TFT_display_tts ; display TTS time (display or stop data is managed somewhere else)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
883 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
884
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
885 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
886
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
887 IFDEF _ccr_pscr
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
888 IFDEF _external_sensor
0
heinrichsweikamp
parents:
diff changeset
889
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
890 global calc_deko_divemode_sensor
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
891 calc_deko_divemode_sensor:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
892 ; sensor acquisition code
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
893 btfss s8_digital_avail ; do we have a digital S8 interface?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
894 bra calc_deko_divemode_sensor_analog ; NO - check if we have an analog interface
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
895 btfss trigger_S8_data_update ; YES - check if a new data frame was received
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
896 bra calc_deko_divemode_sensor_common ; NO - use old values
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
897 bcf trigger_S8_data_update ; YES - clear update flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
898 call compute_mvolts_for_all_sensors ; - compute mV values from digital data
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
899 bra calc_deko_divemode_sensor_common
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
900 calc_deko_divemode_sensor_analog:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
901 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
902 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
903 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
904 bra calc_deko_divemode_sensor_common
583
6636cbe64c6d optical input work
heinrichsweikamp
parents: 582
diff changeset
905 calc_deko_divemode_sensor_opt:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
906 btfss optical_input ; do we have an optical input?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
907 return ; NO - return (we have no sensors at all: not analog, not S8 and not optical)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
908 btfss sensor1_active ; YES - sensor1_ppO2, sensor2_ppO2 and sensor3_ppO2 are already filled in ISR
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
909 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
910 btfss sensor2_active
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
911 bcf use_O2_sensor2
583
6636cbe64c6d optical input work
heinrichsweikamp
parents: 582
diff changeset
912 btfss sensor3_active
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
913 bcf use_O2_sensor3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
914 bra calc_deko_divemode_sensor_A ; continue with calculating sensor average
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
915
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
916 calc_deko_divemode_sensor_common:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
917 ; 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
918 ; 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
919 ; 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
920
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
921 ; check sensor 1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
922 btfss sensor1_calibrated_ok ; check if sensor is usable at all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
923 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
924 ; check min threshold
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
925 SMOVII sensor1_mv,sub_a ; load sensor mV value
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
926 rcall check_min_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
927 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
928 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
929 ; check max_threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
930 rcall check_max_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
931 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
932 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
933 ; check HUD data, if available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
934 btfss hud_connection_ok ; check if there is a HUD connected
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
935 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
936 btfss sensor1_active ; YES - HUD status ok?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
937 bra check_sensor_1_fail ; NO - HUD reports a fail
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
938 check_sensor_1_ok:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
939 ; sensor1_ppO2 = sensor1_mv:2 * opt_x_s1:2 / 1000
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
940 SMOVII sensor1_mv,xA
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
941 MOVII opt_x_s1, xB
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
942 rcall compute_ppo2_helper
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
943 movff xC+0,sensor1_ppO2 ; result in 0.01 bar
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
944 bra check_sensor_2 ; continue with next sensor
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
945 check_sensor_1_fail:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
946 clrf WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
947 movff WREG,sensor1_ppO2 ; set ppO2 reading to zero
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
948 btfss use_O2_sensor1 ; check if sensor was in use before
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
949 bra check_sensor_1_fail_1 ; NO - no new news then
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
950 call check_sensor_custview_helper; YES - show sensors custom view on further conditions met
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
951 check_sensor_1_fail_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
952 bcf use_O2_sensor1 ; revoke sensor from usage
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
953
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
954 check_sensor_2: ; check min_mv of sensor 2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
955 btfss sensor2_calibrated_ok ; check if sensor is usable at all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
956 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
957 ; check min threshold
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
958 SMOVII sensor2_mv,sub_a ; load sensor mV value
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
959 rcall check_min_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
960 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
961 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
962 ; check max_threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
963 rcall check_max_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
964 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
965 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
966 ; check HUD data, if available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
967 btfss hud_connection_ok ; check if there is a HUD connected
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
968 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
969 btfss sensor2_active ; YES - HUD status ok?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
970 bra check_sensor_2_fail ; NO - HUD reports a fail
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
971 check_sensor_2_ok:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
972 ; sensor2_ppO2 = sensor2_mv:2 * opt_x_s2:2 / 1000
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
973 SMOVII sensor2_mv,xA
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
974 MOVII opt_x_s2, xB
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
975 rcall compute_ppo2_helper
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
976 movff xC+0,sensor2_ppO2 ; result in 0.01 bar
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
977 bra check_sensor_3 ; continue with next sensor
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
978 check_sensor_2_fail:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
979 clrf WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
980 movff WREG,sensor2_ppO2 ; set ppO2 reading to zero
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
981 btfss use_O2_sensor2 ; check if sensor was in use before
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
982 bra check_sensor_2_fail_1 ; NO - no new news then
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
983 call check_sensor_custview_helper; YES - show sensors custom view on further conditions met
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
984 check_sensor_2_fail_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
985 bcf use_O2_sensor2 ; revoke sensor from usage
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
986
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
987 check_sensor_3: ; check min_mv of sensor 2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
988 btfss sensor3_calibrated_ok ; check if sensor is usable at all
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
989 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
990 ; check min threshold
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
991 SMOVII sensor3_mv,sub_a ; load sensor mV value
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
992 rcall check_min_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
993 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
994 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
995 ; check max threshold
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
996 rcall check_max_threshold
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
997 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
998 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
999 ; check HUD data, if available
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1000 btfss hud_connection_ok ; check if there is a HUD connected
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1001 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
1002 btfss sensor3_active ; YES - HUD status ok?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1003 bra check_sensor_3_fail ; NO - HUD reports a fail
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1004 check_sensor_3_ok:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1005 ; sensor3_ppO2 = sensor3_mv:2 * opt_x_s1:2 / 1000
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1006 SMOVII sensor3_mv,xA
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1007 MOVII opt_x_s3, xB
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1008 rcall compute_ppo2_helper
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1009 movff xC+0,sensor3_ppO2 ; result in 0.01 bar
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1010 bra calc_deko_divemode_sensor_A ; continue with calculating sensor average
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1011 check_sensor_3_fail:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1012 clrf WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1013 movff WREG,sensor3_ppO2 ; set ppO2 reading to zero
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1014 btfss use_O2_sensor3 ; check if sensor was in use before
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1015 bra check_sensor_3_fail_1 ; NO - no new news then
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1016 call check_sensor_custview_helper; YES - show sensors custom view on further conditions met
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1017 check_sensor_3_fail_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1018 bcf use_O2_sensor3 ; revoke sensor from usage
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1019
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1020 calc_deko_divemode_sensor_A: ; calculate sensor average
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1021 btfss divemode ; in dive mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1022 return ; NO - done here if not in dive mode
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1023
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1024 ; 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
1025 ; sum up sensor values (in xA:2) and active sensors in (xB:2)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1026 CLRI xA
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1027 CLRI xB
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1028 divemode_setup_sensor_1_value:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1029 btfss use_O2_sensor1 ; sensor 1 active?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1030 bra divemode_setup_sensor_2_value ; NO
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1031 movff sensor1_ppO2,WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1032 addwf xA+0,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1033 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1034 addwfc xA+1,F ; add into xA:2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1035 incf xB+0,F ; add a sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1036 divemode_setup_sensor_2_value:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1037 btfss use_O2_sensor2 ; sensor 2 active?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1038 bra divemode_setup_sensor_3_value ; NO
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1039 movff sensor2_ppO2,WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1040 addwf xA+0,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1041 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1042 addwfc xA+1,F ; add into xA:2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1043 incf xB+0,F ; add a sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1044 divemode_setup_sensor_3_value:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1045 btfss use_O2_sensor3 ; sensor 3 active?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1046 bra divemode_setup_sensor_mean ; NO
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1047 movff sensor3_ppO2,WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1048 addwf xA+0,F
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1049 movlw .0
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1050 addwfc xA+1,F ; add into xA:2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1051 incf xB+0,F ; add a sensor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1052
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1053 ; 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
1054 divemode_setup_sensor_mean:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1055 clrf xC+0 ; set zero as default result
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1056 tstfsz xB+0 ; pending div/0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1057 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
1058 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
1059
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1060 ; 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
1061 ; will be overwritten later in case we are in sensor mode and have at least one usable sensor
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1062 clrf WREG ; pre-load a zero
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1063 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
1064 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
1065 ; it will be overwritten if we have a usable sensor reading
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1066 btfsc bailout_mode ; check if we are in bailout
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1067 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
1068 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
1069 sublw .1 ; - in sensor mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1070 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
1071 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
1072 bra divemode_setup_sensor_mean1 ; YES - we have at least one usable sensor
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1073 bsf sp_fallback ; NO - we have NO usable sensors -> initiate fallback
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1074 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
1075 bra calc_deko_divemode_sensor_V ; NO - continue with voting logic flags
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1076 movff opt_setpoint_cbar+0,char_I_const_ppO2 ; YES - select fixed setpoint no. 1 for fallback
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1077 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
1078 ; 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
1079 divemode_setup_sensor_mean1:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1080 bcf sp_fallback ; clear fallback condition
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1081 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
1082 ; vote sensors
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1083 calc_deko_divemode_sensor_V:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1084 bsf voting_logic_sensor1
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1085 movff sensor1_ppO2,lo
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1086 rcall check_sensor_voting_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1087 tstfsz WREG ; sensor within range (WREG = 0)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1088 bcf voting_logic_sensor1 ; NO - vote out this sensor
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1089
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1090 bsf voting_logic_sensor2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1091 movff sensor2_ppO2,lo
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1092 rcall check_sensor_voting_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1093 tstfsz WREG ; sensor within range (WREG = 0)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1094 bcf voting_logic_sensor2 ; NO - vote out this sensor
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1095
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1096 bsf voting_logic_sensor3
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1097 movff sensor3_ppO2,lo
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1098 rcall check_sensor_voting_helper
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1099 tstfsz WREG ; sensor within range (WREG = 0)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1100 bcf voting_logic_sensor3 ; NO - vote out this sensor
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1101
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1102 ; check if a warning shall be issued on sensor disagreement
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1103 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
1104 bra check_warn_sensor_0 ; YES - continue with further checks
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1105 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
1106 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
1107 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
1108 check_warn_sensor_0: ; we are in CCR or pSCR mode
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1109 btfsc bailout_mode ; check if we are in bailout
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1110 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
1111 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
1112 sublw .1 ; in sensor mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1113 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
1114 ; check sensor 1
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1115 check_warn_sensor_1:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1116 btfss sensor1_calibrated_ok ; check if sensor has a valid calibration
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1117 bra check_warn_sensor_2 ; NO - sensor can not cause a warning then
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1118 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
1119 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
1120 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
1121 bra check_warn_sensor_2 ; YES - continue with next sensor
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1122 bcf o2_sensors_agree ; NO - issue a warning
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1123 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1124 ; check sensor 2
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1125 check_warn_sensor_2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1126 btfss sensor2_calibrated_ok ; check if sensor has a valid calibration
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1127 bra check_warn_sensor_3 ; NO - sensor can not cause a warning then
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1128 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
1129 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
1130 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
1131 bra check_warn_sensor_3 ; YES - continue with next sensor
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1132 bcf o2_sensors_agree ; NO - issue a warning
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1133 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1134 ; check sensor 3
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1135 check_warn_sensor_3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1136 btfss sensor3_calibrated_ok ; check if sensor has a valid calibration
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1137 bra check_warn_sensor_agree ; NO - sensor can not cause a warning then
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1138 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
1139 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
1140 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
1141 bra check_warn_sensor_agree ; YES - continue with next sensor
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1142 bcf o2_sensors_agree ; NO - issue a warning
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1143 return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1144 ; no need for a warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1145 check_warn_sensor_done:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1146 check_warn_sensor_agree:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1147 bsf o2_sensors_agree
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1148 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1149
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1150 check_min_threshold:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1151 MOVLI min_mv,sub_b ; load minimum mV value
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1152 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
1153
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1154 check_max_threshold:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1155 MOVLI max_mv,sub_b ; load maximum mV value
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1156 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
1157
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1158 compute_ppo2_helper:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1159 call mult16x16 ; xC:4 = xA:2 * xB:2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1160 MOVLI .1000,xB
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1161 call div32x16 ; xC:4 = xC:4 / xB:2 with xA as remainder
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1162 tstfsz xC+1 ; is the ppO2 higher than 2.55 bar?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1163 setf xC+0 ; YES - set result to 255 aka 2.55 bar
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1164 return
0
heinrichsweikamp
parents:
diff changeset
1165
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1166 check_sensor_custview_helper:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1167 btfss divemode ; check if we are in dive mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1168 return ; NO - not in dive mode, return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1169 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
1170 decfsz WREG,W ; - opt_ccr_mode = 1 (sensors)?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1171 return ; NO - not using the sensors in the moment
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1172 show_sensors_custview:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1173 btfsc custom_view_locked ; YES - custom view locked?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1174 return ; YES - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1175 movlw index_ppo2_sensors ; NO - get custom view number of ppO2 sensors
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1176 goto dive_customview_show ; - draw custom view and return
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1177
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1178 check_sensor_voting_helper:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1179 movf lo,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1180 cpfsgt sensor_setpoint
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1181 bra check_sensor_voting_helper2 ; lo < sensor_setpoint
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1182 ; lo > sensor_setpoint
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1183 movf lo,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1184 subwf sensor_setpoint,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1185 movwf lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1186 check_sensor_voting_helper1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1187 movlw sensor_voting_logic_threshold ; threshold in 0.01 bar
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1188 cpfsgt lo
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1189 retlw .0 ; within range
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1190 retlw .1 ; out of range
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1191 check_sensor_voting_helper2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1192 ; lo < sensor_setpoint
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1193 movf sensor_setpoint,W
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1194 subwf lo,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1195 bra check_sensor_voting_helper1
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1196
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1197 ENDIF ; _external_sensor
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1198 ENDIF ; _ccr_pscr
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1199
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1200 ;=============================================================================
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1201
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1202 divemodemode_togglegf:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1203 bcf request_toggle_GF ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1204 goto restart_deco_engine ; restart the deco engine and return
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1205
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1206 ;=============================================================================
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1207
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1208 IFDEF _cave_mode
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1209
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1210 cavemode_toggle_onoff:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1211 bcf request_cave_toggle ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1212 btg cave_mode ; toggle the on/off state
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1213 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1214
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1215 cavemode_switch_off_turned:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1216 bcf request_cave_off_turned ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1217 bcf cave_mode ; switch cave mode off
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1218 bra cavemode_turndive_turn_exec ; set dive as turned (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1219
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1220
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1221 global cavemode_turndive_check
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1222 cavemode_turndive_check:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1223 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1224 retlw 1 ; NO - signal not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1225 btfss dive_turned ; YES - is the dive currently turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1226 retlw 0 ; NO - command is allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1227 movf backtrack_waypoint_turn,W ; YES - copy turn point number to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1228 cpfslt backtrack_waypoint_num ; - current waypoint number < turn point number ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1229 retlw 1 ; NO - signal not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1230 retlw 0 ; YES - command is allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1231
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1232 cavemode_turndive_toggle:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1233 bcf request_turn_toggle ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1234 rcall cavemode_turndive_check ; check if command is allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1235 tstfsz WREG ; command allowed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1236 return ; NO - abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1237 btfss dive_turned ; YES - is the dive currently turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1238 bra cavemode_turndive_turn_exec ; NO - turn the dive
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1239 bra request_turndive_cont_exec ; YES - continue the dive
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1240
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1241 cavemode_turndive_turn:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1242 bcf request_turn_turn ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1243 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1244 return ; NO - abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1245 btfsc dive_turned ; YES - is the dive already turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1246 return ; YES - nothing to do any more
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1247 ;bra cavemode_turndive_turn_exec ; NO - turn the dive
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1248
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1249 cavemode_turndive_turn_exec:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1250 bsf dive_turned ; set dive as turned
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1251 call set_logbook_marker ; set a logbook marker
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1252 goto write_backtrack_turnpoint ; write a turn-point waypoint (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1253
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1254 request_turndive_cont_exec:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1255 bcf dive_turned ; set dive as not turned any more
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1256 bcf backtrack_shutdown ; set backtracking as not shut down any more
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1257 call set_logbook_marker ; set a logbook marker
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1258 goto resume_backtrack_recording ; append further logging after current waypoint (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1259
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1260
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1261 global cavemode_waypoint_set_check
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1262 cavemode_waypoint_set_check:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1263 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1264 retlw 1 ; NO - command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1265 btfsc dive_turned ; YES - is the dive turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1266 retlw 1 ; YES - no setting of waypoints on way out, command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1267 btfsc backtrack_entire_full ; NO - storage entirely used up?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1268 retlw 1 ; YES - out of storage capacity, command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1269 movlw backtrack_waypoint_max ; NO - get highest allowed waypoint number
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1270 cpfslt backtrack_waypoint_num ; - current waypoint number < max allowed number?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1271 retlw 1 ; NO - command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1272 retlw 0 ; YES - command is allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1273
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1274 cavemode_waypoint_set:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1275 bcf request_waypoint_set ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1276 rcall cavemode_waypoint_set_check ; check if command is allowed to execute
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1277 tstfsz WREG ; command allowed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1278 return ; NO - no waypoint setting possible, abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1279 call set_logbook_marker ; YES - set a logbook marker
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1280 goto write_backtrack_waypoint ; - execute command (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1281
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1282
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1283 global cavemode_waypoint_out_check
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1284 cavemode_waypoint_out_check:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1285 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1286 retlw 1 ; NO - command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1287 btfss dive_turned ; YES - is the dive turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1288 retlw 1 ; NO - no stepping back on way in, command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1289 btfsc waypoint_reached_first ; YES - already at first waypoint?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1290 retlw 1 ; YES - command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1291 retlw 0 ; NO - command is allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1292
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1293 cavemode_waypoint_out:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1294 bcf request_waypoint_out ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1295 rcall cavemode_waypoint_out_check ; check if command is allowed to execute
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1296 tstfsz WREG ; command allowed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1297 return ; NO - no further out possible, abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1298 goto backtrack_waypoint_go_out ; YES - execute the command (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1299
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1300
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1301 global cavemode_waypoint_in_check
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1302 cavemode_waypoint_in_check:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1303 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1304 retlw 1 ; NO - command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1305 btfss dive_turned ; YES - is the dive turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1306 retlw 1 ; NO - no stepping forward on way in, command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1307 btfsc waypoint_reached_last ; YES - already at last waypoint?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1308 retlw 1 ; YES - command not allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1309 retlw 0 ; NO - command is allowed
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1310
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1311 cavemode_waypoint_in:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1312 bcf request_waypoint_in ; clear request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1313 rcall cavemode_waypoint_in_check ; check if command is allowed to execute
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1314 tstfsz WREG ; command allowed?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1315 return ; NO - no further in possible, abort
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1316 goto backtrack_waypoint_go_in ; YES - execute command (and return)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1317
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1318 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1319
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1320 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1321
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1322 calc_velocity: ; called every two seconds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1323 btfsc velocity_active_num ; was velocity shown in last cycle?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1324 bra calc_velocity_1 ; YES - always update if shown before
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1325 btfss count_divetime ; NO - is the dive time counted, i.e. deeper than dive threshold?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1326 return ; NO - display velocity only if deeper than 1m,
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1327 ; i.e. not at the surface after the dive
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1328 calc_velocity_1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1329 ; calculate pressure difference
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1330 MOVII pressure_abs_cached, sub_a; current pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1331 MOVII last_pressure_velocity,sub_b; last pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1332 call subU16 ; do an unsigned subtraction
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1333
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1334 ; decide if ascending or descending
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1335 bcf neg_flag_velocity ; set to ascending by default
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1336 btfsc neg_flag ; pressure differential negative?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1337 bsf neg_flag_velocity ; YES - descending
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1338
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1339 ; store current pressure as last pressure for next round
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1340 MOVII pressure_abs_cached,last_pressure_velocity
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1341
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1342 ; calculate velocity in m/min
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1343 MOVII sub_c,xA ; copy pressure differential to xA
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1344 MOVLI .39,xB ; put scale coefficient into xB (use 77 when called every second)
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1345 call mult16x16 ; compute differential pressure in mbar * scale coefficient
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1346 MOVII xC,divA ; copy result to divA
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1347 ADDLI .64,divA ; add some round-up
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1348 movlw .7 ; divide by 2^7
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1349 call div16 ; divA = divA / 2^WREG, yields velocity in m/min
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1350
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1351 movlw .99 ; load a 99
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1352 cpfslt divA+0 ; velocity < 99 m/min ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1353 movwf divA+0 ; NO - limit to 99 m/min
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1354
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1355 bcf STATUS,C ; clear carry flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1356 movlw velocity_display_threshold ; get threshold for displaying vertical velocity
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1357 subwf divA+0,W ; subtract threshold from velocity
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1358 btfss STATUS,C ; above threshold?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1359 bsf FLAG_TFT_velocity_clear ; NO - don't show / request to clear
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1360 btfsc STATUS,C ; above threshold?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1361 bsf FLAG_TFT_velocity_show ; YES - request to show
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1362 return ; done
0
heinrichsweikamp
parents:
diff changeset
1363
heinrichsweikamp
parents:
diff changeset
1364
heinrichsweikamp
parents:
diff changeset
1365 ;=============================================================================
heinrichsweikamp
parents:
diff changeset
1366
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1367 check_deco_states:
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1368 btfsc deco_region ; been within the deco stops region before?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1369 return ; YES - been in deco then before too, done
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1370 movff char_O_deco_info,WREG ; NO - get deco info vector
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1371 btfss WREG,deco_stops_norm ; do we have a deco obligation right now?
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1372 return ; NO - done
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1373 bsf deco_locked ; YES - memorize dive was in deco
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1374 movff char_O_deco_depth+0,WREG ; - get depth of first stop in meters into WREG
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1375 addlw deco_region_distance+.1 ; - add deco region start distance + 1 meter for the negative test to work
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1376 subwf depth_meter,W ; - compute current depth - (first stop depth + deco region distance)
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1377 btfss STATUS,C ; - result negative?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1378 bsf deco_region ; YES - memorize to have entered the deco stops region
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1379 return ; - done
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1380
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1381 ;=============================================================================
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
1382
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1383 safety_stop_control:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1384 TSTOSS opt_safetystop ; safety stop enabled? (=1: show safety stop)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1385 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1386
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1387 btfsc FLAG_gauge_mode ; in gauge mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1388 return ; YES - omit (well, else fix collision of safety stop output with avg depth label)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1389
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1390 ; setup
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1391 bcf safety_stop_enabled ; disable safety stop by default
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1392
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1393 ; check for deco
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1394 btfsc decostop_active ; in deco mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1395 bra safety_stop_finish ; YES - shut down safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1396
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1397 ; below "opt_safety_stop_reset"?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1398 MOVII pressure_rel_cur_cached,mpr ; get current pressure into MPR
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1399 call convert_pres_to_depth ; convert pressure in [mbar] to depth in [cm]
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1400 MOVII mpr,sub_a ; move depth in [cm] to sub_a
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1401 movff opt_safety_stop_reset,WREG ; load safety stop reset threshold [dm]
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1402 mullw .10 ; convert threshold from [dm] to [cm]
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1403 MOVII PROD,sub_b ; move threshold in [cm] to sub_b
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1404 call cmpU16 ; sub_a - sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1405 btfss neg_flag ; below threshold depth?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1406 bra safety_stop_reset ; YES - arm safety stop and delete it from display if still shown
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1407 ;bra safety_stop_control_1 ; NO - check if above end threshold
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1408
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1409 safety_stop_control_1:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1410 ; above "opt_safety_stop_end"?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1411 movff opt_safety_stop_end,WREG ; load safety stop end threshold [dm]
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1412 mullw .10 ; convert threshold from [dm] to [cm]
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1413 MOVII PROD,sub_b ; move threshold in [cm] to sub_b
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1414 call cmpU16 ; sub_a - sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1415 btfsc neg_flag ; above or at threshold depth?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1416 bra safety_stop_finish ; YES - finish with safety stop
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1417 ;bra safety_stop_control_2 ; NO - check if above start threshold
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1418
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1419 safety_stop_control_2:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1420 ; above "opt_safety_stop_start"?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1421 movff opt_safety_stop_start,WREG ; load safety stop start threshold [dm]
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1422 mullw .10 ; convert threshold from [dm] to [cm]
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1423 MOVII PROD,sub_b ; move threshold in [cm] to sub_b
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1424 call cmpU16 ; sub_a - sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1425 btfss neg_flag ; above or at threshold depth?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1426 return ; NO - pause safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1427 tstfsz safety_stop_countdown ; YES - safety stop armed?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1428 bsf safety_stop_enabled ; YES - enable safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1429 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1430
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1431
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1432 safety_stop_show:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1433 btfss safety_stop_enabled ; safety stop enabled?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1434 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1435 dcfsnz safety_stop_countdown,F ; YES - decrement remaining stop time, reached zero?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1436 bra safety_stop_finish ; YES - finished with safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1437 bsf FLAG_TFT_safety_stop_show ; NO - request to show safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1438 return ; - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1439
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1440 safety_stop_finish:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1441 clrf safety_stop_countdown ; disarm safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1442 bcf safety_stop_enabled ; disable safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1443 bsf FLAG_TFT_safety_stop_clear ; request to clear safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1444 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1445
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1446 safety_stop_reset:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1447 movff opt_safety_stop_length,safety_stop_countdown ; arm safety stop (load timer)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1448 incf safety_stop_countdown,F ; +1 because safety_stop_show does decrement first
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1449 bsf FLAG_TFT_safety_stop_clear ; request to clear safety stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1450 return ; done
428
eccae727702f some cleanup
heinrichsweikamp
parents: 403
diff changeset
1451
104
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1452
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1453 ;=============================================================================
223579e905c3 Show a Safety Stop if enabled (Menu "Deco Parameters")
heinrichsweikamp
parents: 102
diff changeset
1454
0
heinrichsweikamp
parents:
diff changeset
1455 timeout_menuview:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1456 btfss trigger_timeout ; timeout occurred?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1457 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1458 goto menuview_toggle_reset ; YES - terminate the pre-menu and return
0
heinrichsweikamp
parents:
diff changeset
1459
heinrichsweikamp
parents:
diff changeset
1460 timeout_divemode_menu:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1461 btfss trigger_timeout ; timeout occurred?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1462 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1463 ;bra timeout_divemode_menu2 ; YES - clean up main menu and restore dive data
0
heinrichsweikamp
parents:
diff changeset
1464
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1465 global timeout_divemode_menu2
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1466 timeout_divemode_menu2: ; jump-in point from divemenu_tree.asm
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1467 bcf dive_main_menu ; clear flag for dive mode menu shown
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1468 call TFT_clear_divemode_menu ; clear menu area
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1469
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1470 btfss custom_view_locked ; was the custom view locked by the menu system?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1471 bra timeout_divemode_menu3 ; NO - continue with redrawing the lower display
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1472 bcf custom_view_locked ; YES - clear flag for custom view locked by menu
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1473 movf backup_customview,W ; - get previous custom view into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1474 cpfseq active_customview ; - compare with current custom view, equal?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1475 call dive_customview_recall ; NO - redraw previous custom view
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1476
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1477 timeout_divemode_menu3:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1478 bsf FLAG_TFT_active_gas_divemode; redraw gas/setpoint/diluent
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1479 bsf FLAG_TFT_temperature ; display temperature (or resettable dive time when in compass view)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1480 bcf better_gas_blinking ; stop better gas cue
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1481 bcf better_dil_blinking ; stop better dil cue
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1482
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1483 request_redraw_NDL_deco_data:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1484 btfsc FLAG_gauge_mode ; in gauge mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1485 return ; YES - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1486 btfss decostop_active ; NO - in deco mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1487 bra timeout_divemode_menu_ndl ; NO - show NDL again
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1488 ;bra timeout_divemode_menu_deco ; YES - show deco again
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1489
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1490 timeout_divemode_menu_deco:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1491 bsf FLAG_TFT_display_deco_mask ; show deco mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1492 bsf FLAG_TFT_display_deco ; show deco stop
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1493 bsf FLAG_TFT_display_tts ; show TTS time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1494 return ; done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1495
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1496 timeout_divemode_menu_ndl:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1497 bsf FLAG_TFT_display_ndl_mask ; show NDL mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1498 bsf FLAG_TFT_display_ndl ; show NDL time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1499 return ; done
0
heinrichsweikamp
parents:
diff changeset
1500
heinrichsweikamp
parents:
diff changeset
1501 timeout_divemode:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1502 btfsc dive_main_menu ; main dive menu shown?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1503 rcall timeout_divemode_menu ; YES - check the timeout for it
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1504
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1505 btfsc dive_options_menu ; pre-menu shown?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1506 rcall timeout_menuview ; YES - check the timeout for it
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1507
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1508 btfss divetime_longer_1min ; does dive already last for longer than one minute?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1509 return ; NO - suspend timeout
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1510
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1511 btfsc FLAG_apnoe_mode ; in apnoe mode?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1512 bra timeout_divemode_apnoe ; YES - use apnoe timeout
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1513
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1514 IFNDEF _DEBUG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1515 btfsc sensor_override_active ; in simulator mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1516 bra timeout_divemode_sim ; YES - use simulator timeout
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1517 ;bra timeout_divemode_dive ; NO - use normal dive timeout
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1518 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1519
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1520 timeout_divemode_dive:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1521 movff opt_diveTimeout,WREG ; get dive timeout in minutes into WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1522 ;bra timeout_divemode_com_min
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1523
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1524 timeout_divemode_com_min:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1525 mullw .60 ; multiply with 60 to convert minutes in WREG to seconds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1526 MOVII PRODL,sub_a ; copy resulting seconds to sub_a
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1527 timeout_divemode_com_sec:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1528 MOVII dive_timeout_timer,sub_b ; copy current timeout timer value to sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1529 INCI dive_timeout_timer ; increment timeout timer
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1530 call cmpU16 ; check sub_a - sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1531 btfsc neg_flag ; result negative, i.e. timeout?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1532 bcf divemode ; YES - terminate dive mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1533 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1534
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1535 timeout_divemode_apnoe:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1536 movlw apnoe_timeout ; get apnoe timeout in minutes into WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1537 bra timeout_divemode_com_min ; continue with common part for minutes
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1538
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1539 timeout_divemode_sim:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1540 MOVLI simulator_timeout,sub_a ; get simulator timeout in seconds directly into sub_a
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1541 bra timeout_divemode_com_sec ; continue with common part for seconds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1542
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1543
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1544 update_divemode60: ; tasks every full minute
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1545 bcf trigger_full_minute ; clear flag
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1546
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1547 call get_battery_voltage ; get battery voltage
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1548 btfsc battery_low_condition ; battery low condition detected?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1549 rcall set_powersafe ; YES - record an alarm and reduce display brightness
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1550
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1551 ; max allowed runtime in simulator is 254 minutes in
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1552 ; order for the tissue calculation catch-up to work!
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1553
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1554 btfss sensor_override_active ; in simulator mode?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1555 return ; NO - done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1556 movlw simulator_timeout_normal ; YES - set simulation timeout
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1557 IFDEF _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1558 TSTOSC opt_cave_mode ; - cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1559 movlw simulator_timeout_cave ; YES - update simulation timeout
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1560 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1561 cpfsgt counted_divetime_mins+0 ; - timeout?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1562 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1563 IFDEF _DEBUG
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1564 return ; YES - but we do not care in debug mode...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1565 ELSE
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1566 bra divemode_option_sim_quit ; YES - set depth to 0 m and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1567 ENDIF
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1568
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1569 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1570
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1571 IFDEF _cave_mode
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1572
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1573 ; ** jump-in functions **
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1574
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1575 write_backtrack_deltatime:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1576 rcall setup_backtrack_index ; setup writing position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1577 bra write_backtrack_datum_deltatime ; store the current delta time (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1578
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1579 write_backtrack_1min_depth:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1580 rcall setup_backtrack_index ; setup writing position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1581 rcall write_backtrack_datum_depth ; store depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1582 rcall write_backtrack_datum_zerotime ; reset the time elapsed since last depth recording and store it
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1583 bra write_backtrack_datum_check ; store new writing position, check remaining storage capacity ()and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1584
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1585 write_backtrack_waypoint:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1586 rcall setup_backtrack_index ; setup writing position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1587 rcall write_backtrack_datum_deltatime ; store the time elapsed since last depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1588 movf POSTINC1,W ; dummy read to increment the writing position index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1589 rcall write_backtrack_datum_depth ; store depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1590 rcall write_backtrack_datum_gas ; store gas availability vector
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1591 rcall write_backtrack_datum_waypoint ; store waypoint number
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1592 rcall write_backtrack_datum_zerotime ; reset the time elapsed since last depth recording and store it
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1593 bra write_backtrack_datum_check ; store new writing position, check remaining storage capacity (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1594
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1595 write_backtrack_turnpoint:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1596 rcall write_backtrack_waypoint ; write a waypoint (see above)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1597 movf POSTDEC1,W ; dummy read to decrement the position index to the waypoint number datum
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1598 movff FSR1L,char_I_backtrack_index ; store updated writing position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1599 movff backtrack_waypoint_num,backtrack_waypoint_turn; memorize this waypoint as turn point
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1600 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1601
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1602 resume_backtrack_recording:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1603 clrf backtrack_waypoint_turn ; clear turn point reference
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1604 bsf waypoint_reached_last ; declare to be at last waypoint now
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1605 rcall setup_backtrack_index ; setup index position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1606 movf POSTINC1,W ; dummy read to increment the position index to the delta time datum
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1607 rcall write_backtrack_datum_zerotime ; reset the time elapsed since last depth recording and store it
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1608 bra write_backtrack_datum_check ; store new writing position, check remaining storage capacity (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1609
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1610 backtrack_waypoint_go_out:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1611 bcf waypoint_reached_last ; not at last waypoint (or turn point) any more
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1612 rcall setup_backtrack_index ; setup index position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1613 movlw b'11100000'-.1 ; a waypoint datum has bits 5-7 set, -1 because of cpfsgt
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1614 backtrack_waypoint_go_out_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1615 movff POSTDEC1,lo ; dummy read current datum and go to previous datum (there is no PREDEC)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1616 cpfsgt INDF1 ; read datum, is it a waypoint datum?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1617 bra backtrack_waypoint_go_out_loop ; NO - try next datum
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1618 movff FSR1L,char_I_backtrack_index ; store new index position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1619 movf INDF1,W ; copy waypoint datum to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1620 andlw b'00011111' ; remove waypoint tag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1621 movwf backtrack_waypoint_num ; store new waypoint number
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1622 movlw .1 ; number of first waypoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1623 cpfsgt backtrack_waypoint_num ; current waypoint number > number of first waypoint ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1624 bsf waypoint_reached_first ; NO - reached first waypoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1625 goto restart_deco_engine_wo_norm ; invalidate all alternative plan data and restart deco engine
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1626
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1627 backtrack_waypoint_go_in:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1628 bcf waypoint_reached_first ; not at first waypoint any more
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1629 rcall setup_backtrack_index ; setup index position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1630 movlw b'11100000'-.1 ; a waypoint datum has bits 5-7 set, -1 because of cpfsgt
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1631 backtrack_waypoint_go_in_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1632 cpfsgt PREINC1 ; go to next datum, read it, is it a waypoint datum?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1633 bra backtrack_waypoint_go_in_loop ; NO - try next datum
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1634 movff FSR1L,char_I_backtrack_index ; store new index position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1635 movf INDF1,W ; copy waypoint datum to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1636 andlw b'00011111' ; remove waypoint tag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1637 movwf backtrack_waypoint_num ; store new waypoint number
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1638 movf backtrack_waypoint_turn,W ; load WREG with waypoint number of turn point
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1639 cpfslt backtrack_waypoint_num ; new waypoint number < number of turn point ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1640 bsf waypoint_reached_last ; NO - reached last waypoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1641 goto restart_deco_engine_wo_norm ; invalidate all alternative plan data and restart deco engine
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1642
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1643
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1644 ; ** helper functions **
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1645
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1646 setup_backtrack_index:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1647 lfsr FSR1,char_I_backtrack_storage ; load FSR1 with base address of the backtracking storage
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1648 movff char_I_backtrack_index,FSR1L ; adjust FSR1 to the current index position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1649 return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1650
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1651 write_backtrack_datum_zerotime:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1652 clrf backtrack_deltatime ; reset the time elapsed since last depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1653 write_backtrack_datum_deltatime:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1654 movf backtrack_deltatime,W ; get the time elapsed since last depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1655 bsf WREG,7 ; add the time marker (bit 7 set) to the time stored in WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1656 movwf INDF1 ; write the time and keep the writing position index pointing on it
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1657 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1658
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1659 write_backtrack_datum_depth:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1660 movf depth_meter,W ; get current depth in meters into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1661 btfsc WREG,7 ; current depth < 128 m ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1662 movlw .127 ; NO - clip depth to 127 meters
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1663 movwf POSTINC1 ; write the depth entry and increment the writing position index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1664 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1665
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1666 write_backtrack_datum_gas:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1667 ; Cave mode is currently only available with gas needs calculation enabled,
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1668 ; so deco mode is either OC anyhow or CCR/pSCR in bailout mode. Hence it is
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1669 ; always the OC (bailout) gases whose staging status needs to be stored.
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1670 lfsr FSR2,opt_gas_type ; load base address of the OC/bailout gas types
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1671 movlw NUM_GAS ; load number of gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1672 movwf lo ; initialize loop counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1673 movlw b'00000001' ; load gas bit pattern for the first gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1674 movwf hi ; store gas bit pattern in hi
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1675 movlw b'11000000' ; initialize WREG with the gas staging status tag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1676 write_backtrack_datum_gas_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1677 movff POSTINC2,up ; get gas type and increment index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1678 btfsc up,gas_staged ; gas staged?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1679 iorwf hi,W ; YES - set respective gas bit
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1680 rlncf hi,F ; rotate gas bit pattern to match the next gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1681 decfsz lo,F ; decrement loop counter, did it became zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1682 bra write_backtrack_datum_gas_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1683 movwf POSTINC1 ; YES - write the gas staging status entry and increment the writing position index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1684 return ; - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1685
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1686 write_backtrack_datum_waypoint:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1687 incf backtrack_waypoint_num,F ; increment the waypoint number
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1688 movf backtrack_waypoint_num,W ; copy waypoint number to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1689 iorlw b'11100000' ; add the waypoint marker (bit 7-5 set) to the number stored in WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1690 movwf POSTINC1 ; write the waypoint datum and increment the writing position index
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1691 movlw .2 ; load a 2 into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1692 cpfslt backtrack_waypoint_num ; new waypoint number >= 2 ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1693 bcf waypoint_reached_first ; YES - not at first waypoint any more
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1694 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1695
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1696 write_backtrack_datum_check:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1697 movff FSR1L,char_I_backtrack_index ; store new index position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1698 movlw backtrack_almost_full_threshold ; load threshold for backtracking storage almost full
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1699 bcf backtrack_almost_full ; clear almost full state
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1700 cpfslt FSR1L ; index < threshold ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1701 bsf backtrack_almost_full ; NO - flag backtracking storage is almost full
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1702 movlw backtrack_entire_full_threshold ; load threshold for backtracking storage entirely full
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1703 bcf backtrack_entire_full ; clear entirely full state
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1704 cpfslt FSR1L ; index < threshold ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1705 bsf backtrack_entire_full ; NO - flag backtracking storage is entirely full
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1706 return ; done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1707
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1708 ENDIF ; _cave_mode
0
heinrichsweikamp
parents:
diff changeset
1709
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1710 ;=============================================================================
0
heinrichsweikamp
parents:
diff changeset
1711
heinrichsweikamp
parents:
diff changeset
1712 global set_dive_modes
heinrichsweikamp
parents:
diff changeset
1713 set_dive_modes:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1714 SMOVII pressure_rel_cur,sub_a ; ISR-safe 2 byte copy of current relative pressure to sub_a
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1715 bra set_dive_modes_1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1716 check_dive_modes:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1717 MOVII pressure_rel_cur_cached,sub_a; copy cached relative pressure to sub_a
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1718 set_dive_modes_1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1719 btfss high_altitude_mode ; in high altitude mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1720 bra set_dive_modes_norm ; NO - use normal start-dive threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1721 btfsc divetime_longer_1min ; YES - dive lasted longer than one minute?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1722 bra set_dive_modes_norm ; YES - this is a real dive -> use normal start-dive threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1723 ;bra set_dive_modes_high ; NO - use hight-altitude start-dive threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1724
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1725 ; high altitude start/end dive thresholds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1726 set_dive_modes_high:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1727 btfss count_divetime ; dive time counting, i.e. already in the dive?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1728 bra set_dive_modes_high_start ; NO - select start threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1729 ;bra set_dive_modes_high_end ; YES - select end threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1730
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1731 set_dive_modes_high_end:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1732 MOVLI dive_threshold_high_alt_end,sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1733 bra set_dive_modes_comm
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1734
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1735 set_dive_modes_high_start:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1736 MOVLI dive_threshold_high_alt_start,sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1737 bra set_dive_modes_comm
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1738
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1739 ; normal altitude start/end dive thresholds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1740 set_dive_modes_norm:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1741 btfss count_divetime ; dive time counting, i.e. already in the dive?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1742 bra set_dive_modes_norm_start ; NO - select start threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1743 ;bra set_dive_modes_norm_end ; YES - select end threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1744
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1745 set_dive_modes_norm_end:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1746 MOVLI dive_threshold_norm_alt_end,sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1747 bra set_dive_modes_comm
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1748
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1749 set_dive_modes_norm_start
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1750 MOVLI dive_threshold_norm_alt_start,sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1751 ;bra set_dive_modes_comm
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1752
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1753 set_dive_modes_comm:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1754 call cmpU16 ; sub_a - sub_b = pressure_rel_cur - start-dive threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1755 btfsc neg_flag ; pressure_rel_cur > dive_threshold, i.e. deeper than threshold?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1756 bra set_dive_modes_shallow ; NO - shallower than threshold
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1757 btfsc divetime_longer_1min ; YES - dive lasted longer than one minute?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1758 CLRI dive_timeout_timer ; YES - reset timeout counter
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1759 bsf divemode ; - set dive mode flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1760 bsf count_divetime ; - count dive time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1761 return ; - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1762 set_dive_modes_shallow:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1763 bcf count_divetime ; NO - stop counting dive time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1764 btfss divetime_longer_1min ; - dive lasted longer than one minute?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1765 bcf divemode ; NO - quit dive mode as this was no real dive
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1766 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1767
0
heinrichsweikamp
parents:
diff changeset
1768
heinrichsweikamp
parents:
diff changeset
1769 set_powersafe:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1770 movlw d'7' ; set type of alarm = battery low
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1771 movwf alarm_type ; copy to alarm register
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1772 bsf event_occured ; set event flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1773 movlw .0 ; coding of brightness level ECO
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1774 movff WREG,opt_brightness ; set brightness to ECO
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1775 return ; done
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1776
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1777
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1778 clear_resettable_average_depth:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1779 ; prime the resettable average depth with 0
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1780 CLRI pressure_rel_avg_trip
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1781 bra reset_resettable_average_depth1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1782
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1783 reset_resettable_average_depth:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1784 ; clear reset-average request
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1785 bcf request_reset_avg
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1786
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1787 ; prime the resettable average depth with the current relative pressure (depth)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1788 MOVII pressure_rel_cur_cached,pressure_rel_avg_trip
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1789
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1790 reset_resettable_average_depth1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1791 ; clear the resettable depth accumulator
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1792 clrf pressure_rel_accu_trip+0
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1793 clrf pressure_rel_accu_trip+1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1794 clrf pressure_rel_accu_trip+2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1795 clrf pressure_rel_accu_trip+3
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1796
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1797 ; clear the resettable time accumulator
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1798 CLRI divesecs_avg_trip
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1799 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1800
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1801
0
heinrichsweikamp
parents:
diff changeset
1802 calc_average_depth:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1803 ; 1. compute pressure_rel_cur_cached x 2, because this routine is called every 2nd second only
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1804
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1805 ; copy current rel pressure to xB
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1806 MOVII pressure_rel_cur_cached,xB
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1807
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1808 ; multiply rel pressure x 2 (via shift left)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1809 bcf STATUS,C
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1810 rlcf xB+0,F
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1811 rlcf xB+1,F
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1812
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1813 ; 2a add (pressure_rel_cur_cached x 2) to the resettable depth accumulator
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1814 ; will work up to 9999 mbar * 60 * 60 * 24 = 863913600 mbar (24h @ 90 m depth)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1815 movf xB+0,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1816 addwf pressure_rel_accu_trip+0,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1817 movf xB+1,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1818 addwfc pressure_rel_accu_trip+1,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1819 movlw .0
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1820 addwfc pressure_rel_accu_trip+2,F
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1821 addwfc pressure_rel_accu_trip+3,F
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1822
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1823 ; 2b add (pressure_rel_cur_cached x 2) to the total depth accumulator
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1824 ; will work up to 9999 mbar * 60 * 60 * 24 = 863913600 mbar (24h @ 90 m depth)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1825 movf xB+0,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1826 addwf pressure_rel_accu_total+0,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1827 movf xB+1,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1828 addwfc pressure_rel_accu_total+1,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1829 movlw .0
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1830 addwfc pressure_rel_accu_total+2,F
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1831 addwfc pressure_rel_accu_total+3,F
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1832
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1833 ; 3a compute the resettable average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1834
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1835 ; get the accumulated depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1836 movff pressure_rel_accu_trip+0,xC+0
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1837 movff pressure_rel_accu_trip+1,xC+1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1838 movff pressure_rel_accu_trip+2,xC+2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1839 movff pressure_rel_accu_trip+3,xC+3
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1840
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1841 ; get the accumulated time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1842 MOVII divesecs_avg_trip,xB
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1843
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1844 ; divide accumulated depth by accumulated time
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1845 call div32x16 ; xC:4 / xB:2 = xC+3:xC+2 with xC+1:xC+0 as remainder
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1846
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1847 ; store result
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1848 MOVII xC,pressure_rel_avg_trip ; resettable average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1849 btfss count_divetime ; is dive time counted?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1850 return ; NO (e.g. too shallow)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1851
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1852 ; 3b compute the dive total average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1853
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1854 ; get accumulated depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1855 movff pressure_rel_accu_total+0,xC+0
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1856 movff pressure_rel_accu_total+1,xC+1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1857 movff pressure_rel_accu_total+2,xC+2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1858 movff pressure_rel_accu_total+3,xC+3
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1859
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1860 ; get accumulated time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1861 MOVII divesecs_avg_total,xB
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1862
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1863 ; divide accumulated depth by accumulated time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1864 call div32x16 ; xC:4 = xC:4 / xB:2 with xA as remainder
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1865
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1866 ; store result
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1867 MOVII xC,pressure_rel_avg_total ; total dive average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1868
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1869 btfsc request_reset_avg ; shall reset the resettable average depth?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1870 rcall reset_resettable_average_depth ; YES - reset the resettable average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1871
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1872 TSTOSC opt_2ndDepthDisp ; drawing average depth instead of max depth?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1873 bsf FLAG_TFT_depth_maximum ; YES - flag to update display
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1874
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1875 btfsc FLAG_gauge_mode ; in gauge mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1876 bsf FLAG_TFT_depth_maximum ; YES - flag to update display (needed for alternative layout)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1877
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1878 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1879
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1880
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1881 test_switches_divemode: ; checks switches in dive mode, called every second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1882 btfsc dive_main_menu ; dive mode menu shown?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1883 bra test_switches_divemode_menu ; YES - use menu processor
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1884 btfsc switch_left ; NO - left button pressed?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1885 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
1886 btfss switch_right ; NO - right button pressed?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1887 return ; NO - done
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1888 bcf switch_right ; YES - clear button event
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1889 tstfsz active_premenu ; - any pre-menu task selected?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1890 bra test_switches_divemode1 ; YES - do option or menu tasks
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1891 bsf request_next_custview ; NO - request next custom view
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1892 return ; - done
0
heinrichsweikamp
parents:
diff changeset
1893
heinrichsweikamp
parents:
diff changeset
1894 test_switches_divemode_menu:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1895 btfsc switch_left ; left button pressed?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1896 bra test_switches_divemode_menu2 ; YES - move cursor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1897 btfsc switch_right ; NO - right button pressed?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1898 bra test_switches_divemode_menu3 ; YES - enter sub-menu or do something
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1899 btfss update_menu ; NO - shall update the menu?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1900 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1901 bcf update_menu ; YES - clear request
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1902 goto menu_draw_lines_divemode ; - redraw the menu (to update color coding) and return
0
heinrichsweikamp
parents:
diff changeset
1903
heinrichsweikamp
parents:
diff changeset
1904 test_switches_divemode_menu1:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1905 clrf menu_pos_cur
0
heinrichsweikamp
parents:
diff changeset
1906 test_switches_divemode_menu2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1907 bcf switch_left
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1908 incf menu_pos_cur,F
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1909 incf menu_pos_max,W ; menu_pos_max + 1 -> WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1910 cpfslt menu_pos_cur ; > menu_pos_max ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1911 bra test_switches_divemode_menu1 ; YES - set to 1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1912 call TFT_show_menu_cursor_divemode ; update the cursor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1913 movlw divemode_timeout_mainmenu ; get timeout for main menu
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1914 call reset_timeout_time ; reset timeout
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1915 return
0
heinrichsweikamp
parents:
diff changeset
1916
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1917 test_switches_divemode_menu3: ; enter sub-menu or do something
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1918 bcf switch_right
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1919 ; decf menu_pos_cur,F ; menu_processor needs 0-5...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1920 goto do_line_menu ; Warning! trashes STKPTR and returns to diveloop_menu_exit
0
heinrichsweikamp
parents:
diff changeset
1921
heinrichsweikamp
parents:
diff changeset
1922 test_switches_divemode1:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1923 movlw divemode_timeout_premenu ; get timeout for pre-menu
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1924 call reset_timeout_time ; reset timeout
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1925 movff active_premenu,WREG ; get number of active pre-menu
0
heinrichsweikamp
parents:
diff changeset
1926 dcfsnz WREG,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1927 bra divemode_option_gaschange ; 1: switch to the the "better gas" / "better diluent"
137
28b057aa9f75 Simplify gas change
heinrichsweikamp
parents: 134
diff changeset
1928 dcfsnz WREG,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1929 bra divemode_option_divemenu ; 2: enter dive mode menu
0
heinrichsweikamp
parents:
diff changeset
1930 dcfsnz WREG,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1931 IFDEF _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1932 bra divemode_option_cavemenu ; 3: enter cave mode menu
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1933 ELSE
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1934 return ; 3: (no cave mode compiled in)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1935 ENDIF
0
heinrichsweikamp
parents:
diff changeset
1936 dcfsnz WREG,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1937 bra divemode_option_sim_quit ; 4: simulation - quit
0
heinrichsweikamp
parents:
diff changeset
1938 dcfsnz WREG,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1939 bra divemode_option_sim_down ; 5: simulation - descent
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1940 dcfsnz WREG,F
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1941 bra divemode_option_sim_up ; 6: simulation - ascend
0
heinrichsweikamp
parents:
diff changeset
1942 dcfsnz WREG,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1943 bra divemode_option_sim_time ; 7: simulation - +5 min
216
973a0969e0ac NEW: On-board simulator can increase divetime in 5min steps
heinrichsweikamp
parents: 206
diff changeset
1944 dcfsnz WREG,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1945 bra divemode_option_apnoe_quit ; 8: apnoe - quit
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1946 dcfsnz WREG,F
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1947 bra divemode_option_gauge_reset ; 9: gauge - reset stopwatch and avg depth
254
5fe7aff622f3 preparations to set a course for the compass display
heinrichsweikamp
parents: 239
diff changeset
1948 dcfsnz WREG,F
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1949 IFDEF _compass
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1950 bra divemode_option_course ; 10: store heading
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1951 ELSE
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1952 return ; 10: (no compass compiled in)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1953 ENDIF
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1954 dcfsnz WREG,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1955 bra divemode_option_layout ; 11: switch layout
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1956 return
0
heinrichsweikamp
parents:
diff changeset
1957
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1958
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1959 gas_switch_common:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1960 bcf request_gas_change ; clear request flag
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1961 IFDEF _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1962 btfss request_back_to_loop ; is a switchback from OC bailout to loop requested?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1963 bra gas_switched_common0 ; NO - continue with checking if selected gas is valid
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1964 bcf request_back_to_loop ; YES - clear flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1965 movff active_dil,menu_pos_cur ; - reload last diluent
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1966 bra gas_switched_common1 ; - continue with common part
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1967 ENDIF
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1968 gas_switched_common0:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1969 tstfsz menu_pos_cur ; menu_pos_cur = 0 ?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1970 bra gas_switched_common1 ; NO - valid gas
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
1971 return ; YES - something went wrong, invalid gas, abort
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1972 gas_switched_common1:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1973 movf menu_pos_cur,W ; get selected gas into WREG (1-5)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1974 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1975 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1976 bra gas_switched_common_OC ; YES
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1977 btfsc bailout_mode ; in bailout?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1978 bra gas_switched_common_OC ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1979 gas_switched_common_loop: ; NO to both - must be loop mode then
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1980 rcall setup_dil_registers ; set up real tissues with WREG = diluent 1-6
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1981 rcall deco_setup_cc_diluents ; set up deco planning with WREG = diluent 1-6
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1982 bra gas_switched_common3 ; continue with common part
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1983 ENDIF ; _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
1984 gas_switched_common_OC:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1985 rcall setup_gas_registers ; set up real tissues with WREG = gas 1-6
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1986 rcall deco_setup_oc_gases ; set up deco planning with WREG = gas 1-6
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1987 ;bra gas_switched_common3 ; continue with common part
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
1988 gas_switched_common3:
605
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1989 banksel int_O_breathed_ppO2
5ce603c29750 gas color coding fixed
heinrichsweikamp
parents: 604
diff changeset
1990 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
1991 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
1992 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
1993 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
1994 banksel common
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1995 bsf FLAG_TFT_active_gas_divemode ; redraw gas/setpoint/diluent
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1996 bsf FLAG_TFT_temperature ; redraw temperature
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1997 bsf event_occured ; set global event flag
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
1998 IFDEF _ccr_pscr
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
1999 btfsc bailout_mode ; in bailout mode?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2000 bsf event_bailout ; YES - set bailout event
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2001 btfss bailout_mode ; in bailout mode?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2002 ENDIF
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2003 bsf event_gas_change ; (NO) - set gas change event (normal change)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2004 goto restart_deco_engine_wo_ceiling ; abort running deco calculations and restart (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2005
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2006
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2007 gas_update_common:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2008 bcf request_gas_update ; reset the request flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2009 movf active_gas,W ; load WREG with currently used gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2010 IFDEF _ccr_pscr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2011 btfsc FLAG_oc_mode ; in OC mode?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2012 bra gas_switched_common_OC ; YES - reload OC gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2013 btfsc bailout_mode ; NO - in bailout?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2014 bra gas_switched_common_OC ; YES - reload OC gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2015 movf active_dil,W ; NO - load WREG with currently used diluent
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2016 bra gas_switched_common_loop ; - set up diluent gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2017 ELSE
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2018 bra gas_switched_common_OC ; reload OC gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2019 ENDIF
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2020
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2021 ; Code to pass all parameters to the C code
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2022
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2023 global get_first_gas_to_WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2024 get_first_gas_to_WREG: ; gets first gas (1-5) into WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2025 lfsr FSR1,opt_gas_type ; load base address of the gas types
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2026 clrf lo ; start with gas 0
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2027 get_first_gas_to_WREG2:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2028 movf lo,W ; set index
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2029 movf PLUSW1,W ; get type of gas (0=Disabled, 1=First, 2=Travel, 3=Deco)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2030 sublw .1 ; is it of type First?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2031 bz get_first_gas_to_WREG3 ; YES - found the First gas
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2032 incf lo,F ; NO - increment index
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2033 movlw NUM_GAS+1 ; - get highest index+1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2034 cpfseq lo ; - all gases checked?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2035 bra get_first_gas_to_WREG2 ; NO - not yet
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2036 movlw .1 ; YES - default to gas 1
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2037 movff WREG,opt_gas_type+0 ; - force it to be of type First
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2038 return ; - done
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2039 get_first_gas_to_WREG3:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2040 movf lo,W ; copy index of gas found to be the First to WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2041 incf WREG,W ; turn index into gas number (0-4 -> 1-5)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2042 return ; done
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2043
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2044 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2045
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2046 IFDEF _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2047
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2048 global get_first_dil_to_WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2049 get_first_dil_to_WREG: ; gets first dil (1-5) into WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2050 lfsr FSR1,opt_dil_type ; load base address of the dil types
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2051 clrf lo ; start with dil 0
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2052 get_first_dil_to_WREG2:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2053 movf lo,W ; set index
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2054 movf PLUSW1,W ; get type of Dil (0=Disabled, 1=First, 2=Normal)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2055 sublw .1 ; is it of type First?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2056 bz get_first_dil_to_WREG3 ; YES - found the First dil
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2057 incf lo,F ; NO - increment index
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2058 movlw NUM_GAS+1 ; - get highest index+1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2059 cpfseq lo ; - dils checked?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2060 bra get_first_dil_to_WREG2 ; NO - not yet
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2061 movlw .1 ; YES - default to dil 1
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2062 movff WREG,opt_dil_type+0 ; - force it to be of type First
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2063 return ; - done
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2064 get_first_dil_to_WREG3:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2065 movf lo,W ; copy index of dil found to be the First to WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2066 incf WREG,W ; turn index into dil number (0-4 -> 1-5)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2067 return ; done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2068
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2069 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2070
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2071 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2072
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2073 global deco_setup_oc_gases
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2074 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
2075 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
2076 deco_setup_oc_gases_pre: ; entry point with lo preloaded
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2077 movff WREG,char_I_current_gas_num ; set gas to start with when doing the deco calculations
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2078 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2079 ; Memory Map:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2080 ; ---------------------------------------------------------------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2081 ; 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
2082 ; opt_dil_O2_ratio res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2083 ; 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
2084 ; opt_dil_He_ratio res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2085 ; 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
2086 ; opt_dil_type res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2087 ; 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
2088 ; opt_dil_change res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2089 ;
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2090 lfsr FSR2,char_I_deco_O2_ratio ; load FSR2 with base address of char_I_deco_O2_ratio
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2091 ; FSR2 will step through all char_I_deco_... vars
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2092 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
2093 rcall deco_setup_copy ; copy all OC O2 ratios
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2094 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
2095 rcall deco_setup_copy ; copy all OC He ratios
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2096 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
2097 rcall deco_setup_copy ; copy all gas types
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2098 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
2099 rcall deco_setup_copy ; copy all gas change depths
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2100 ; switch deco engine to oc mode:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2101 bcf lo,DECO_MODE_PSCR_FLAG ; - clear the pSCR-mode flag (may not be set, but never mind)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2102 bcf lo,DECO_MODE_LOOP_FLAG ; - clear the loop/CCR-mode flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2103 movff lo,char_O_deco_status ; - bank safe write-back of char_O_deco_status
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2104 return ; done
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2105
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2106 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2107
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2108 IFDEF _ccr_pscr
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2109
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2110 global deco_setup_cc_diluents
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2111 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
2112 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
2113 deco_setup_cc_diluents_pre: ; entry point with lo preloaded
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2114 btfsc bailout_mode ; check if in bailout condition | --------------- FOR SAFETY ONLY --------------
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2115 bra deco_setup_oc_gases_pre ; YES - revert to setting up OC gases | This branch should never happen to be taken...
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2116 movff WREG,char_I_current_gas_num ; NO - set diluent to start with when doing the deco calculations
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2117 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2118 ; Memory Map:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2119 ; ---------------------------------------------------------------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2120 ; opt_gas_O2_ratio res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2121 ; 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
2122 ; opt_gas_He_ratio res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2123 ; 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
2124 ; opt_gas_type res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2125 ; 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
2126 ; opt_gas_change res NUM_GAS |
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2127 ; 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
2128 ;
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2129 lfsr FSR2,char_I_deco_O2_ratio ; load FSR2 with base address of char_I_deco_O2_ratio.
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2130 ; FSR2 will step through all char_I_deco_... vars.
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2131 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
2132 rcall deco_setup_copy ; copy all dil O2 ratios
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2133 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
2134 rcall deco_setup_copy ; copy all dil He ratios
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2135 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
2136 rcall deco_setup_copy ; copy all dil types
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2137 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
2138 rcall deco_setup_copy ; copy all dil change depths
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2139 ; switch to CCR / pSCR mode:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2140 bsf lo,DECO_MODE_LOOP_FLAG ; - loop flag is set in both, CCR and pSCR mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2141 bcf lo,DECO_MODE_PSCR_FLAG ; - clear pSCR mode flag by default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2142 btfsc FLAG_pscr_mode ; - check if we are in pSCR mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2143 bsf lo,DECO_MODE_PSCR_FLAG ; YES - set additional flag for pSCR mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2144 movff lo,char_O_deco_status ; - bank safe write-back of char_O_deco_status
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2145 return ; done
0
heinrichsweikamp
parents:
diff changeset
2146
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2147 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2148
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2149 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2150
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2151 deco_setup_copy:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2152 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
2153 deco_setup_copy_loop:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2154 movff POSTINC1,POSTINC2 ; copy from (FSR1) to (FSR2)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2155 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
2156 bra deco_setup_copy_loop ; NO - not yet, loop
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2157 return ; YES - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2158
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2159
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2160 global setup_gas_registers
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2161 setup_gas_registers: ; with currently breathed gas in WREG (1-5 or 6)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2162 movwf active_gas ; set as current gas
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2163 movlw .6
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2164 cpfseq active_gas ; gas = gas6 ?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2165 bra setup_gas_registers_15 ; NO - load gas 1-5
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2166 movff gas6_O2_ratio,char_I_O2_ratio ; copy gas6 O2 ratio to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2167 IFDEF _helium
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2168 movff gas6_He_ratio,char_I_He_ratio ; copy gas6 H2 ratio to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2169 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2170 movlw .3 ; declare gas6 as a deco gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2171 movff WREG,char_I_current_gas_type; copy gas type to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2172 movff depth_meter,char_I_gas6_depth;set current depth as change depth
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2173 bra setup_gas_registers_com ; continue with common part
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2174 setup_gas_registers_15:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2175 lfsr FSR1,opt_gas_O2_ratio ; load base address of gas data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2176 decf active_gas,W ; set index to O2 ratio of current gas (1-5 -> 0-4)
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2177 movff PLUSW1,char_I_O2_ratio ; copy O2 ratio to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2178 addlw .10 ; advance index from O2 ratio to He ratio
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2179 IFDEF _helium
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2180 movff PLUSW1,char_I_He_ratio ; copy He ratio to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2181 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2182 addlw .10 ; advance index from He ratio to gas type
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2183 movff PLUSW1,char_I_current_gas_type ; copy gas type (0=Disabled, 1=First, 2=Travel, 3=Deco)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2184 setup_gas_registers_com:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2185 movff char_O_main_status,lo ; working copy of char_O_main_status in bank common
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2186 bcf lo,DECO_MODE_PSCR_FLAG ; clear the pSCR-mode flag (if applicable)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2187 bcf lo,DECO_MODE_LOOP_FLAG ; clear the loop/CCR-mode flag
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2188 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
2189 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
2190 return
137
28b057aa9f75 Simplify gas change
heinrichsweikamp
parents: 134
diff changeset
2191
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2192 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2193
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2194 IFDEF _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2195
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2196 global setup_dil_registers
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2197 setup_dil_registers: ; with currently breathed gas in WREG (1-5 or 6)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2198 btfsc bailout_mode ; check if in bailout condition | --------------- FOR SAFETY ONLY --------------
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2199 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
2200 movwf active_dil ; set as current diluent
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2201 movlw .6
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2202 cpfseq active_dil ; diluent = gas6 ?
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2203 bra setup_dil_registers_15 ; NO - load diluent 1-5
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2204 movff gas6_O2_ratio,char_I_O2_ratio ; copy gas6 O2 ratio to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2205 IFDEF _helium
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2206 movff gas6_He_ratio,char_I_He_ratio ; copy gas6 H2 ratio to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2207 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2208 movlw .2 ; declare gas6 as a normal diluent
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2209 movff WREG,char_I_current_gas_type; copy gas type to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2210 movff depth_meter,char_I_gas6_depth;set current depth as change depth
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2211 bra setup_dil_registers_com ; continue with common part
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2212 setup_dil_registers_15:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2213 lfsr FSR1,opt_dil_O2_ratio ; load base address of diluent data
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2214 decf active_dil,W ; set index to O2 ratio of current diluent (1-5 -> 0-4)
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2215 movff PLUSW1,char_I_O2_ratio ; copy O2 ratio to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2216 addlw .10 ; advance index from O2 ratio to He ratio
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2217 IFDEF _helium
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2218 movff PLUSW1,char_I_He_ratio ; copy He ratio to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2219 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2220 addlw .10 ; advance index from He ratio to diluent type
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2221 movff PLUSW1,char_I_current_gas_type ; copy diluent type (0=Disabled, 1=First, 2=Normal)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2222 setup_dil_registers_com:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2223 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
2224 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
2225 bcf lo,DECO_MODE_PSCR_FLAG ; clear pSCR mode flag by default
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2226 btfsc FLAG_pscr_mode ; check if we are in pSCR mode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2227 bsf lo,DECO_MODE_PSCR_FLAG ; YES - set additional flag for pSCR mode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2228 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
2229 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
2230 return
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2231
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2232 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2233
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2234 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2235
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2236 divemode_option_gaschange: ; switch to the "better gas" / "better diluent"
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2237 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2238 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2239 bra divemode_option_gaschange_oc; YES
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2240 btfsc bailout_mode ; in bailout?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2241 bra divemode_option_gaschange_oc; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2242 divemode_option_gaschange_loop: ; in CCR/pSCR mode and not in bailout
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2243 movff best_dil_number,menu_pos_cur; NO - select best diluent
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2244 bcf better_dil_available ; - clear flag immediately
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2245 bra divemode_option_gaschange3 ; - continue with common part
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2246 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2247 divemode_option_gaschange_oc: ; in OC or bailout
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2248 movff best_gas_number,menu_pos_cur; select best gas
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2249 bcf better_gas_available ; clear flag immediately
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2250 divemode_option_gaschange3 ; common part
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2251 bsf request_gas_change ; request a gas/diluent change
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2252 goto menuview_toggle_reset ; terminate the pre-menu (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2253
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2254 divemode_option_divemenu: ; start/setup dive mode menu
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2255 btfss divemode ; in dive mode?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2256 goto menuview_toggle_reset ; NO - block menu, terminate the pre-menu
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2257 call TFT_clear_divemode_menu ; YES - clear menu area
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2258 bcf dive_options_menu ; - set dive options menu as not shown anymore
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2259 goto do_main_divemenu ; - hand over to menu processor
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2260
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2261 IFDEF _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2262 divemode_option_cavemenu: ; start/setup cave mode menu
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2263 btfss divemode ; in dive mode?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2264 goto menuview_toggle_reset ; NO - block menu, terminate the pre-menu
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2265 call TFT_clear_divemode_menu ; YES - clear menu area
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2266 bcf dive_options_menu ; - set dive options menu as not shown anymore
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2267 goto do_main_cavemenu ; - hand over to menu processor
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2268 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2269
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2270 global divemode_option_divemenu_return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2271 divemode_option_divemenu_return: ; return point for menu processor
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2272 call TFT_show_menu_cursor_divemode ; show the cursor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2273 clrf active_premenu ; set pre-menu is not shown any more
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2274 bcf safety_stop_active ; set safety stop is not shown any more
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2275 bsf dive_main_menu ; set main menu is shown now
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2276 movlw divemode_timeout_mainmenu ; get timeout for main menu
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2277 call reset_timeout_time ; reload timeout
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2278 goto diveloop_menu_exit ; go back to dive loop (menu processor resets STKPTR!)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2279
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2280 divemode_option_sim_quit: ; quit simulation mode
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2281 clrf simulatormode_depth ; set target depth to zero
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2282 bsf quit_simulatormode ; request ISR to end simulator mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2283 call menuview_toggle_reset ; terminate the pre-menu
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2284 btfsc FLAG_apnoe_mode ; in apnoe mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2285 bcf divemode ; YES - force end of dive mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2286 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2287
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2288 divemode_option_sim_down: ; plus 1 meter
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2289 movlw ostc_depth_max-1 ; load depth limit into WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2290 cpfsgt simulatormode_depth ; simulated depth <= limit ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2291 incf simulatormode_depth,F ; YES - increment simulated depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2292 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2293
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2294 divemode_option_sim_up: ; minus 1 meter
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2295 tstfsz simulatormode_depth ; simulated depth > 0 ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2296 decf simulatormode_depth,F ; YES - decrement simulated depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2297 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2298
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2299 divemode_option_sim_time:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2300 ; check for pending +5' request on deco engine
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2301 movff char_I_sim_advance_time,WREG; get mailbox content
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2302 tstfsz WREG ; mailbox clear (=0) ?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2303 return ; NO - still having a pending +5' request, refuse new request
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2304
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2305 ; advance tissues pressures and deco obligation by 5 minutes
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2306 movlw .5 ; + 5 minutes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2307 movff WREG,char_I_sim_advance_time; copy to mailbox
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2308 call restart_deco_engine ; condition deco engine to execute the +5 minutes
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2309
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2310 ; stop dive time incrementing in ISR
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2311 bcf count_divetime
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2312
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2313 ; add 5 minutes to counted_divetime_mins
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2314 ADDLI .5,counted_divetime_mins
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2315
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2316 ; add 5 minutes (300 seconds) to total_divetime_secs
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2317 ADDLI .300,total_divetime_secs
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2318
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2319 ; continue dive time incrementing in ISR
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2320 bsf count_divetime
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2321
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2322 ; add 5 minutes (300 seconds) to resettable time accumulator
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2323 ADDLI .300,divesecs_avg_trip
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2324
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2325 ; add 5 minutes (300 seconds) to total time accumulator
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2326 ADDLI .300,divesecs_avg_total
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2327
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2328 ; calculate 300 x depth in mbar (300 = 5 min * 60 sec/min)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2329 MOVII pressure_rel_cur_cached,xB
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2330 MOVLI .300,xA
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2331 call mult16x16 ; xC = xA * xB
386
3c55627d5f8f some cleanups, jump to 1.90 stable
heinrichsweikamp
parents: 385
diff changeset
2332
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2333 ; add to the resettable depth accumulator
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2334 movf xC+0,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2335 addwf pressure_rel_accu_trip+0,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2336 movf xC+1,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2337 addwfc pressure_rel_accu_trip+1,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2338 movf xC+2,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2339 addwfc pressure_rel_accu_trip+2,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2340 movf xC+3,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2341 addwfc pressure_rel_accu_trip+3,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2342
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2343 ; add to the total depth accumulator
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2344 movf xC+0,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2345 addwf pressure_rel_accu_total+0,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2346 movf xC+1,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2347 addwfc pressure_rel_accu_total+1,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2348 movf xC+2,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2349 addwfc pressure_rel_accu_total+2,F
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2350 movf xC+3,W
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2351 addwfc pressure_rel_accu_total+3,F
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2352
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2353 IFDEF _cave_mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2354 ; update backtracking data
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2355 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2356 bra divemode_option_sim_time_exit ; NO - skip backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2357 btfsc dive_turned ; YES - dive turned?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2358 bra divemode_option_sim_time_exit ; YES - skip backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2359 ;bra divemode_option_sim_time_exec ; NO - update backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2360 divemode_option_sim_time_exec:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2361 movff backtrack_deltatime,hi ; backup time elapsed since last depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2362 movlw .5 ; configure 5 minutes
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2363 movwf lo ; use lo as loop counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2364 divemode_option_sim_time_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2365 call write_backtrack_1min_depth ; store a backtracking depth data set
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2366 btfsc backtrack_entire_full ; backtracking storage entirely used up?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2367 bra divemode_option_sim_time_exit ; YES - abort backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2368 decfsz lo,F ; NO - decrement loop counter, did it became zero?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2369 bra divemode_option_sim_time_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2370 ;bra divemode_option_sim_time_done ; YES - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2371 divemode_option_sim_time_done:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2372 movff hi,backtrack_deltatime ; restore time elapsed since last depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2373 ;bra divemode_option_sim_time_exit ; finish backtracking depth recording
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2374 ENDIF ; _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2375
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2376 divemode_option_sim_time_exit:
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2377 ; goto menuview_toggle_reset ; terminate the pre-menu and return
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2378 return ; just return, leaving option avail for repeated selection
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2379
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2380 divemode_option_apnoe_quit: ; quit apnoe mode (available while at the surface only)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2381 btfsc sensor_override_active ; in simulator mode?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2382 bra divemode_option_sim_quit ; YES - use simulator quit procedure
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2383 bcf divemode ; NO - force end of dive mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2384 return ; - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2385
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2386 divemode_option_gauge_reset:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2387 bsf request_reset_avg ; request reset of average depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2388 goto menuview_toggle_reset ; terminate pre-menu and return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2389
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2390 IFDEF _compass
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2391 divemode_option_course:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2392 ; store heading for compass view
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2393 MOVII compass_heading_shown,compass_bearing
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2394 bsf compass_bearing_set ; set flag to show heading
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2395 goto menuview_toggle_reset ; terminate the pre-menu and return
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2396 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2397
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2398 divemode_option_layout: ; switch layout
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2399 call menuview_toggle_reset ; terminate the pre-menu
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2400 call TFT_ClearScreen ; clear the whole screen
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2401 btg alt_layout_active ; toggle layout
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2402
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2403 bcf depth_warn_att_last ; set warning or attention on the depth not shown
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2404 bcf depth_inverse_last ; set depth displayed in inverse as not shown
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2405 bcf sign_shown ; set warning/attention/advice sign not shown
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2406 bcf velocity_active_num ; set numerical vertical velocity display not shown
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2407 bcf velocity_active_vsi ; set vertical vertical velocity display not shown
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2408 bcf safety_stop_active ; set safety stop not shown
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2409
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2410 bsf FLAG_TFT_divemode_mask ; request redraw of dive screen mask
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2411 bsf FLAG_TFT_divetime ; request redraw of dive time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2412 bsf FLAG_TFT_depth_current ; request redraw of current depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2413 bsf FLAG_TFT_depth_maximum ; request redraw of maximum depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2414 bsf FLAG_TFT_active_gas_divemode; request redraw of gas and setpoint
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2415 bsf FLAG_TFT_temperature ; request redraw of temperature
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2416 bsf FLAG_TFT_customview_callup ; request redraw of custom view
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2417
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2418 goto request_redraw_NDL_deco_data; request redraw of NDL/deco data and return
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2419
0
heinrichsweikamp
parents:
diff changeset
2420
heinrichsweikamp
parents:
diff changeset
2421 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2422 ; 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
2423 ; 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
2424 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2425 ; 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
2426 ; 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
2427 ; 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
2428 ; 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
2429 ;
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 ; 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
2432 ; - 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
2433 ; - 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
2434 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2435 ; in OC mode : - checks only gases for best gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2436 ; - sets better_gas_available on OC gases
0
heinrichsweikamp
parents:
diff changeset
2437 ;
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2438 global check_gas_best
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2439 check_gas_best:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2440 btfsc FLAG_gauge_mode ; in gauge mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2441 return ; YES - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2442
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2443 MOVII pressure_abs_10,xA ; copy absolute pressure / 10 into xA:2, will be used by ppO2 min/max checks later
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2444
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2445 ; compute max. allowed deco ppO2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2446 movff char_I_ppO2_max_deco,WREG ; max ppO2 [cbar] for deco phase
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2447 mullw .100 ; compute max ppO2 * 100, result is in 0.1 mbar
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2448 ADDLI ppO2_margin_on_max,PROD ; add ppO2 margin on max value to compensate for surface pressures > 1000 hPa
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2449 MOVII PROD,ppO2_max_deco ; store as deco ppO2 max
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2450
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2451 ; compute max. allowed default ppO2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2452 movff char_O_deco_info,lo ; bank-safe copy of deco info vector
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2453 btfss lo,deco_mode ; is the ppO2 deco limit enabled?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2454 bra check_gas_best_1 ; NO - compute default ppO2 max
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2455 MOVII ppO2_max_deco,ppO2_max_default ; YES - copy default ppO2 max from deco max.
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2456 bra check_gas_best_2 ; - continue with common part
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2457
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2458 check_gas_best_1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2459 movff char_I_ppO2_max_work,WREG ; max ppO2 [cbar] for working phase
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2460 mullw .100 ; compute max ppO2 * 100, result is in 0.1 mbar
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2461 ADDLI ppO2_margin_on_max,PROD ; add ppO2 margin on max value to compensate for surface pressures > 1000 hPa
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2462 MOVII PROD,ppO2_max_default ; store as default ppO2 max
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2463
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2464 check_gas_best_2:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2465
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2466 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2467 ; check dive mode
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2468 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2469 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
2470
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2471 check_gas_best_dil:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2472 ; set minimum ppO2 required
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2473 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
2474 btfsc FLAG_pscr_mode ; in pSCR mode?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2475 movff char_I_ppO2_min_loop,WREG ; YES - replace by min ppO2 for pure diluent in pSCR mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2476 mullw .100 ; min ppO2 * 100, result in 0.1 mbar
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2477 MOVII PROD,ppO2_min ; store in ppO2_min
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2478 ; check diluents
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2479 lfsr FSR1,opt_dil_O2_ratio ; set base address for diluent arrays
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2480 movff active_dil,lo ; set number of currently used diluent
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2481 ; preset result to nothing found
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2482 clrf best_gas_num ; initialize best diluent to 0 = none found yet
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2483 setf best_gas_depth ; initialize change depth to 255 = any one will be better
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2484 ; check if current diluent is usable
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2485 movff lo,check_gas_num ; check if the current diluent is usable
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2486 rcall check_gas_best_common ; if yes, the current diluent will become the best diluent found so far
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2487 rcall check_gas_best_all ; check if any other diluent is better
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2488 ; store result
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2489 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
2490 ; check if change advices shall be given in general
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2491 btfsc bailout_mode ; in bailout?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2492 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
2493 check_gas_best_dil1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2494 ; check if a change advice shall be given right now
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2495 bcf better_dil_available ; default to no better diluent found
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2496 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
2497 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
2498 cpfseq active_dil ; is this the currently used diluent?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2499 bra check_gas_best_dil2 ; NO - a better diluent has been found
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2500 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
2501 check_gas_best_dil2:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2502 btfsc sp_fallback ; in fallback condition?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2503 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
2504 ; 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
2505 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
2506 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
2507 check_gas_best_dil3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2508 btfss better_dil_available ; shall a better diluent be signaled for?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2509 bcf better_dil_blinking ; NO - clear blinking flag
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2510 ;bra check_gas_best_gas ; ; continue with checking for best bailout gas
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2511 ENDIF ; _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2512
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2513
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2514 check_gas_best_gas:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2515 ; set minimum ppO2 required
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2516 movff char_I_ppO2_min,WREG ; min ppO2 for OC and bailout
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2517 mullw .100 ; min ppO2 * 100, result in 0.1 mbar
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2518 MOVII PROD,ppO2_min ; store in ppO2_min
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2519 ; check gases
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2520 lfsr FSR1,opt_gas_O2_ratio ; set base address for gas arrays
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2521 movff active_gas,lo ; set number of currently used gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2522 ; preset result to nothing found
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2523 clrf best_gas_num ; initialize best gas to 0 = none found yet
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2524 setf best_gas_depth ; initialize change depth to 255 = any one will be better
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2525 ; check if current gas is usable
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2526 movff lo,check_gas_num ; check if the current gas is usable
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2527 rcall check_gas_best_common ; if yes, the current gas will become the best gas found so far
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2528 rcall check_gas_best_all ; check if any other gas is better
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2529 ; store result
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2530 movff best_gas_num,best_gas_number ; store new best gas found (1-5 or 0 of no usable gas available)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2531 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2532 ; check if change advices shall be given in general
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2533 btfsc FLAG_oc_mode ; in OC mode?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2534 bra check_gas_best_gas1 ; YES - give advice
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2535 btfsc bailout_mode ; NO - in bailout?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2536 bra check_gas_best_gas1 ; YES - give advice
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2537 return ; NO - no better (OC) gas advice when not in OC or bailout mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2538 ENDIF ; _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2539 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
2540 ; check if a change advice shall be given right now
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2541 bcf better_gas_available ; default to no better gas found
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2542 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
2543 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
2544 cpfseq active_gas ; is this the currently used gas?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2545 bra check_gas_best_gas2 ; NO - a better gas has been found
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2546 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
2547 check_gas_best_gas2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2548 ; 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
2549 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
2550 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
2551 check_gas_best_gas3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2552 btfss better_gas_available ; shall a better gas be signaled for?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2553 bcf better_gas_blinking ; NO - clear blinking flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2554 return
0
heinrichsweikamp
parents:
diff changeset
2555
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2556
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2557 check_gas_best_all:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2558 clrf check_gas_num ; increment comes first, so initialize with zero
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2559 check_gas_best_loop:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2560 incf check_gas_num,F ; increment number of gas to check
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2561 movf lo,W ; copy number of currently used gas to WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2562 cpfseq check_gas_num ; gas to be checked = currently used gas ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2563 rcall check_gas_best_common ; NO - check the gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2564 movlw NUM_GAS ; get total number of gases
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2565 cpfseq check_gas_num ; reached last gas?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2566 bra check_gas_best_loop ; NO - loop
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2567 return ; YES - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2568
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2569
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2570 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
2571 ; ; and current gas in lo (1-5)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2572 ;
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2573 ; Memory Map:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2574 ; ---------------------------------------------------------------------------------------
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2575 ; 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
2576 ; 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
2577 ; opt_gas_He_ratio res 5 ; (not needed here)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2578 ; opt_dil_He_ratio res 5 ; (not needed here)
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2579 ; 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
2580 ; 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
2581 ; 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
2582 ; 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
2583
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2584 ; get gas data
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2585 decf check_gas_num,W ; (1-5) -> (0-4) into WREG to be used as index
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2586 movff PLUSW1,check_gas_O2_ratio ; copy O2 ratio (%) of current gas/dil to check_gas_O2_ratio
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2587 addlw .20 ; add offset of 20 bytes to index type in opt_gas_type/opt_dil_type
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2588 movff PLUSW1,check_gas_type ; copy type of current gas/dil to check_gas_type (0=disabled, 1=first, 2=travel/normal, 3=deco/-)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2589 addlw .10 ; add offset of 10 bytes to index change depth in opt_gas_change/opt_dil_change
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2590 movff PLUSW1,check_gas_depth ; copy change depth of current gas/dil to check_gas_depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2591 MOVII ppO2_max_default,sub_b ; select default ppO2 max for first / travel / normal gas
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2592 ; check if the gas is the current gas
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2593 movf check_gas_num,W ; get the number of the gas to be checked (1-5)
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2594 cpfseq lo ; is this the currently used gas?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2595 bra check_gas_best_common0 ; NO - do the disabled & deco gas checks
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2596 bra check_gas_best_common3 ; YES - a gas in use overrides disabled and deco status
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2597 check_gas_best_common0:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2598 ; check if gas is available (i.e. not disabled)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2599 btfsc check_gas_type,gas_lost ; gas/dil lost?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2600 return ; YES - skip as not available any more
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2601 btfsc check_gas_type,gas_staged ; gas/dil staged?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2602 return ; YES - skip as currently not available
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2603 tstfsz check_gas_type ; type = disabled (0) ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2604 bra check_gas_best_common1 ; NO - continue checks
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2605 return ; YES - skip as not available at all
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2606 check_gas_best_common1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2607 ; skip deco gases (type=3) if there are no stops, but include them when in bailout mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2608 movlw .3 ; coding for deco gas
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2609 cpfseq check_gas_type ; type = deco (3) ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2610 bra check_gas_best_common3 ; NO - first or travel/normal then, ok to use
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2611 IFDEF _ccr_pscr
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2612 btfsc bailout_mode ; YES - in bailout?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2613 bra check_gas_best_common2 ; YES - ok to use (using deco gases is always allowed when in bailout)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2614 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2615 TSTOSS opt_ext_stops ; NO - extended stops enabled?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2616 bra check_gas_best_common1b ; NO - only ok if in deco region
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2617 ;bra check_gas_best_common1a ; YES - only ok if in deco mode
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2618 check_gas_best_common1a:
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2619 movff char_O_deco_info,WREG ; get deco info vector
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2620 btfss WREG,deco_mode ; are we in deco mode?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2621 return ; NO - skip deco gas while not in deco mode
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2622 bra check_gas_best_common2 ; YES - deco gases allowed
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2623 check_gas_best_common1b:
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2624 btfss deco_region ; are we in the deco region?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2625 return ; NO - skip deco gas while not in the deco region
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
2626 ;bra check_gas_best_common2 ; YES - deco gases allowed
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2627 check_gas_best_common2:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2628 MOVII ppO2_max_deco,sub_b ; replace by ppO2 max for a deco gas
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2629 check_gas_best_common3:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2630 ; check if gas is usable, i.e. its change depth is below or equal to the current depth
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2631 movf depth_meter,W ; load current depth (in m) into WREG
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2632 cpfslt check_gas_depth ; change depth of checked gas < (shallower than) current depth?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2633 bra check_gas_best_common4 ; NO - gas is usable
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2634 return ; YES - gas is not usable
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2635 check_gas_best_common4:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2636 ; 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
2637 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
2638 tstfsz WREG ; has a best gas candidate been found yet?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2639 bra check_gas_best_common5 ; YES - check if the new one is better than the one we have so far
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2640 bra check_gas_best_common6 ; NO - no need to do the above mentioned check
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2641 check_gas_best_common5:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2642 ; check if the change depth of the checked gas is < (shallower) than the change depth of the best gas found so far
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2643 movf best_gas_depth,W ; load change depth of best gas so far into WREG
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2644 cpfslt check_gas_depth ; change depth of checked gas < (shallower than) change depth of best gas so far?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2645 return ; NO - this gas is not better than the best already found
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2646 ;bra check_gas_best_common6 ; YES - this gas is better, continue
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2647 check_gas_best_common6:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2648 ; check if the gas fits into the ppO2 limits
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2649 movff check_gas_O2_ratio,xB+0 ; xB = O2 ratio, xA is still loaded with (absolute pressure / 10)
69
50697bd41c54 +CHANGE: Some French Translations
heinrichsweikamp
parents: 55
diff changeset
2650 clrf xB+1
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2651 call mult16x16 ; xC = O2 ratio * (absolute pressure / 10), result in 0.1 mbar
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2652 ; check for very high ppO2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2653 tstfsz xC+2 ; O2_ratio * absolute pressure / 10 > 65536, i.e. ppO2 > 6.55 bar ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2654 return ; YES - gas is not usable
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2655 btfsc xC+1,7 ; ppO2 > 3.30 bar ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2656 return ; YES - gas is not usable
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2657 MOVII xC,sub_a ; NO - gas may be usable
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2658 ; check for high ppO2
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2659 call cmpU16 ; sub_a - sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2660 btfss neg_flag ; within limit?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2661 return ; NO - too high, gas is not usable
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2662 ; check for low ppO2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2663 MOVII ppO2_min,sub_b ; copy minimum ppO2 to sub_b
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2664 call cmpU16 ; sub_a - sub_b
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2665 btfsc neg_flag ; within limit?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2666 return ; NO - too low, gas is not usable
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2667 ; we have a (new) best gas
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2668 movff check_gas_num, best_gas_num ; YES - set checked gas (1-5) as best gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2669 movff check_gas_depth,best_gas_depth ; - memorize its change depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2670 return ; - done
0
heinrichsweikamp
parents:
diff changeset
2671
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2672
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2673 ;=============================================================================
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2674 ; Check for Auto-SP
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2675 ;
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2676 IFDEF _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2677
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2678 check_dive_autosp: ; check for Auto-SP
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2679 movff opt_ccr_mode,WREG ; =0: Fixed SP, =1: Sensor, =2: Auto SP
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2680 sublw .2 ; opt_ccr_mode = 2 (Auto SP)?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2681 bz check_dive_autosp2 ; YES - check
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2682 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
2683 check_dive_autosp2:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2684 ; check SP2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2685 btfsc FLAG_SP2_used ; SP 2 used so far?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2686 bra check_dive_autosp3 ; YES - continue with SP 3
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2687 movff opt_setpoint_change+1,lo ; NO - get depth in m
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2688 tstfsz lo ; - SP change depth = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2689 bra check_dive_autosp2a ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2690 bra check_dive_autosp3 ; YES - continue with SP 3
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2691 check_dive_autosp2a:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2692 decf lo,W ; SP change depth -1 -> WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2693 cpfsgt depth_meter ; current depth > change depth - 1 ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2694 bra check_dive_autosp3 ; NO - continue with SP 3
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2695 ; auto switch to SP2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2696 movff opt_setpoint_cbar+1,char_I_const_ppO2 ; YES - use SP
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2697 rcall xmit_sp_set_flag ; - send SP to external devices
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2698 bsf FLAG_SP2_used ; - set SP 2 used flag
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2699 check_dive_autosp3:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2700 ; check SP3
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2701 btfsc FLAG_SP3_used ; SP 3 used so far?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2702 bra check_dive_autosp4 ; YES - continue with SP 4
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2703 movff opt_setpoint_change+2,lo ; NO - get depth in m
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2704 tstfsz lo ; - SP change depth = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2705 bra check_dive_autosp3a ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2706 bra check_dive_autosp4 ; YES - continue with SP 4
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2707 check_dive_autosp3a:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2708 decf lo,W ; SP change depth -1 -> WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2709 cpfsgt depth_meter ; current depth > change depth - 1 ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2710 bra check_dive_autosp4 ; NO - continue with SP 4
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2711 ; auto switch to SP3
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2712 movff opt_setpoint_cbar+2,char_I_const_ppO2 ; YES - use SP
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2713 rcall xmit_sp_set_flag ; - send SP to external devices
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2714 bsf FLAG_SP3_used ; - set SP 3 used flag
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2715 check_dive_autosp4:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2716 ; check SP4
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2717 btfsc FLAG_SP4_used ; SP 4 used so far?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2718 bra check_dive_autosp5 ; YES - continue with SP 5
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2719 movff opt_setpoint_change+3,lo ; NO - get depth in m
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2720 tstfsz lo ; - SP change depth = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2721 bra check_dive_autosp4a ; NO - continue
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2722 bra check_dive_autosp5 ; YES - continue with SP 5
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2723 check_dive_autosp4a:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2724 decf lo,W ; SP change depth -1 -> WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2725 cpfsgt depth_meter ; current depth > change depth - 1 ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2726 bra check_dive_autosp5 ; NO - continue with SP 5
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2727 ; auto switch to SP4
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2728 movff opt_setpoint_cbar+3,char_I_const_ppO2 ; YES - use SP
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2729 rcall xmit_sp_set_flag ; - send SP to external devices
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2730 bsf FLAG_SP4_used ; - set SP 4 used flag
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2731 check_dive_autosp5:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2732 ; check SP5
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2733 btfsc FLAG_SP5_used ; SP 5 used so far?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2734 bra check_dive_autosp6 ; YES - done
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2735 movff opt_setpoint_change+4,lo ; NO - get depth in m
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2736 tstfsz lo ; - SP change depth = 0 ?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2737 bra check_dive_autosp5a ; NO - continue
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2738 bra check_dive_autosp6 ; YES - done
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2739 check_dive_autosp5a:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2740 decf lo,W ; SP change depth -1 -> WREG
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2741 cpfsgt depth_meter ; current depth > change depth - 1 ?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2742 bra check_dive_autosp6 ; NO - done
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2743 ; auto switch to SP5
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2744 movff opt_setpoint_cbar+4,char_I_const_ppO2 ; YES - use SP
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2745 rcall xmit_sp_set_flag ; - send SP to external devices
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2746 bsf FLAG_SP5_used ; - set SP 5 used flag
352
5c6da9fa5cb0 add setpoint change to first sample in CCR mode
heinrichsweikamp
parents: 339
diff changeset
2747 check_dive_autosp6:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2748 return
352
5c6da9fa5cb0 add setpoint change to first sample in CCR mode
heinrichsweikamp
parents: 339
diff changeset
2749
5c6da9fa5cb0 add setpoint change to first sample in CCR mode
heinrichsweikamp
parents: 339
diff changeset
2750 xmit_sp_set_flag:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2751 IFDEF _external_sensor
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2752 call transmit_setpoint ; transmit current setpoint from WREG (in cbar) to external electronics
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2753 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2754 bsf event_occured ; set global event flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2755 bsf event_SP_change ; set setpoint event flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2756 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2757
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2758 ENDIF ; _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2759
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2760 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2761
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2762 set_logbook_marker:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2763 bcf request_set_marker ; clear request flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2764 movlw d'6' ; set type of alarm: manual marker
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2765 movwf alarm_type ; copy to alarm register
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2766 bsf event_occured ; set event flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2767 return
338
2811932b4e99 NEW: Mode Auto SP: Automatically switches the SP during descent (CC Mode)
heinrichsweikamp
parents: 337
diff changeset
2768
0
heinrichsweikamp
parents:
diff changeset
2769 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2770 ; Setup everything to enter dive mode
0
heinrichsweikamp
parents:
diff changeset
2771 ;
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2772 global dive_boot_oc
0
heinrichsweikamp
parents:
diff changeset
2773 dive_boot_oc:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2774 ; set-up registers
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2775 rcall get_first_gas_to_WREG ; get first gas (1-5) into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2776 rcall setup_gas_registers ; set-up of gas parameters of currently breathed gas (with WREG = gas 1-5)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2777 rcall deco_setup_oc_gases ; set-up of gas list for deco calculations (with WREG = gas 1-5)
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2778 return
0
heinrichsweikamp
parents:
diff changeset
2779
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2780
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2781 IFDEF _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2782
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2783 global dive_boot_cc
0
heinrichsweikamp
parents:
diff changeset
2784 dive_boot_cc:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2785 ; set-up registers
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2786 rcall get_first_dil_to_WREG ; get first diluent (1-5) into WREG
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2787 rcall setup_dil_registers ; set-up of diluent parameters for currently breathed diluent (with WREG = current diluent 1-5)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2788 rcall deco_setup_cc_diluents ; set-up of diluent list for deco calculations (with WREG = current diluent 1-5)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2789 return
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2790
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2791
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2792 dive_boot_cc_part2:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2793 ; revoke sensors from usage if they do not have a valid calibration
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2794 bsf use_O2_sensor1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2795 bsf use_O2_sensor2
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2796 bsf use_O2_sensor3
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2797 btfss sensor1_calibrated_ok
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2798 bcf use_O2_sensor1
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2799 btfss sensor2_calibrated_ok
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2800 bcf use_O2_sensor2
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2801 btfss sensor3_calibrated_ok
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2802 bcf use_O2_sensor3
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2803
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2804 IFDEF _external_sensor
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2805 ; check for external HUD/ppO2 Monitor
583
6636cbe64c6d optical input work
heinrichsweikamp
parents: 582
diff changeset
2806 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
2807 bra dive_boot_cc_part2_1 ; NO
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2808 btfsc sensor1_active ; YES - copy valid flags from HUD/ppO2 Monitor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2809 bsf use_O2_sensor1 ; - ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2810 btfsc sensor2_active ; - ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2811 bsf use_O2_sensor2 ; - ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2812 btfsc sensor3_active ; - ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2813 bsf use_O2_sensor3 ; - ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2814 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2815
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2816 dive_boot_cc_part2_1:
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2817 ; 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
2818 ; 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
2819 btfss FLAG_pscr_mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2820 bra dive_boot_cc_part2_2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2821 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
2822 sublw .2 ; opt_ccr_mode = 1 (Auto SP)?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2823 bnz dive_boot_cc_part2_2
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2824 movlw .0
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2825 movff WREG,opt_ccr_mode
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2826 dive_boot_cc_part2_2:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2827 bsf event_SP_change ; set setpoint event flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2828
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2829 ; Start with SP1 (CCR) or 0 (pSCR) as default.
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
2830 ; If in sensor mode, this value will be overwritten by calc_deko_divemode_sensor
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2831 clrf WREG ; pre-load WREG with setpoint value 0 for pSCR calculated
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2832 btfsc FLAG_ccr_mode ; in CCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2833 movff opt_setpoint_cbar+0,WREG ; YES - get value of setpoint 1 into WREG
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2834 movff WREG,char_I_const_ppO2 ; write setpoint to deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2835 IFDEF _external_sensor
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2836 call transmit_setpoint ; transmit current setpoint from WREG (in cbar) to external electronics
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
2837 goto calc_deko_divemode_sensor ; read & process sensor data (and return)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2838 ELSE
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2839 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2840 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2841
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2842 ENDIF ; _ccr_pscr
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2843
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2844 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2845
0
heinrichsweikamp
parents:
diff changeset
2846 diveloop_boot:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2847 ; do the basic initialization
0
heinrichsweikamp
parents:
diff changeset
2848 call restart_set_modes_and_flags
heinrichsweikamp
parents:
diff changeset
2849
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2850 ; stop accelerometer and compass
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2851 call I2C_sleep_compass
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2852
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2853 ; do an early initialization of all deco engine output variables to
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2854 ; avoid glitches in the display outputs during deco engine start-up
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2855 call deco_init_output_vars; ; (C-code)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2856 banksel common ; back to bank common
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2857
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2858 ; reset max relative pressure (max depth)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2859 bsf reset_max_pressure ; request ISR to reset the max pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2860
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2861
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2862 IFDEF _min_depth_option
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2863 ; reset the resettable min/max relative pressure (trip-wise min/max depth)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2864 bsf reset_trip_pressure ; request ISR to reset the resettable min/max pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2865 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2866
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2867 IFDEF _cave_mode
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2868 ; initialize the cave mode
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2869 bcf cave_mode ; disable cave mode by default
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2870 TSTOSC opt_cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2871 bsf cave_mode ; YES - enable cave mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2872
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2873 bcf dive_turned ; dive is not turned yet
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2874 bcf backtrack_almost_full ; backtracking storage is not almost full yet
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2875 bcf backtrack_entire_full ; backtracking storage is not entirely full yet
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2876 bsf waypoint_reached_first ; current waypoint is the first recorded waypoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2877 bsf waypoint_reached_last ; current waypoint is the last recorded waypoint
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2878
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2879 clrf backtrack_waypoint_num ; initialize the waypoint number
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2880 clrf backtrack_waypoint_turn ; no turn point yet
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2881
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2882 movlw .0 ; initialize backtracking index to first position in storage
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2883 movff WREG,char_I_backtrack_index ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2884
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2885 clrf depth_meter ; store initial depth data set with depth = surface
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2886 call write_backtrack_1min_depth ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2887 ENDIF ; _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2888
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2889 ; base configuration of the deco engine
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2890 clrf hi ; start with everything disabled
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2891 TSTOSC opt_ext_stops ; shall make extended stops?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2892 bsf hi,DECO_EXTENDED_STOPS ; YES - enable extended stops
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2893 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2894 btfsc tr_functions_activated ; TR functions activated?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2895 bsf hi,DECO_TR_FUNCTIONS ; YES - enable TR functions
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2896 ENDIF
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2897 IFDEF _gas_contingency
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2898 ; set contingency mode on/off
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2899 TSTOSC opt_gas_contingency_dive ; gas contingency for dive mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2900 bsf hi,DECO_GAS_CONTINGENCY ; YES - activate gas contingency mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2901 ENDIF ; _gas_contingency
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2902 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
2903
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2904 clrf lo ; start with everything disabled
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2905 bsf lo,DECO_START_NORM ; set flag for doing a normal plan
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2906 bsf lo,DECO_INITIALIZE ; set flag for initializing the deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2907 movff lo,char_O_deco_status ; bank-safe copy back to deco engine
0
heinrichsweikamp
parents:
diff changeset
2908
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2909 ; disable "fast forward" function
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2910 movlw .0
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2911 movff WREG,char_I_sim_advance_time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2912
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2913 ; write last stop depth to deco engine
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2914 movff opt_last_stop,char_I_last_stop_depth
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2915
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2916 ; initialize max depth for apnoe mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2917 CLRI apnoe_max_pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2918
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2919 ; reset minimum temperature, ISR-safe 2 byte copy
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2920 SMOVII temperature_cur,temperature_min
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2921
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2922 ; ISR-safe copy of start-of-dive date and time for logbook (6 bytes in total)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2923 SMOVSS rtc_year,start_year
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2924
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2925 MOVII int_O_CNS_current,CNS_start ; save current CNS at beginning of dive, but
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2926 bcf CNS_start+1,int_warning_flag ; without warning flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2927 bcf CNS_start+1,int_attention_flag ; without attention flag
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2928
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2929 ; save supersaturation at beginning of dive (only lower byte is used for value)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2930 movff int_O_lead_supersat+0,supersat_start
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2931
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2932 clrf menu_pos_cur ; reset current menu position
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2933 clrf active_premenu ; no pre-menu task active
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2934 bsf o2_sensors_agree ; initialize sensors disagree warning system
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2935
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2936 clrf safety_stop_countdown ; clear safety stop count-down
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2937
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2938 CLRI last_pressure_velocity ; initialize last pressure for velocity calculation
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2939 CLRI dive_timeout_timer ; initialize timeout counter
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2940
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2941 movlw .1 ; initialize the sampling timer such that the 1st sampling ...
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2942 movwf sampling_timer ; ... trigger will be given as soon as possible
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2943
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2944 clrf message_page ; initialize message page counter
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2945 clrf alarm_type ; clear all alarms
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2946
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2947 ; clear the total dive average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2948 CLRI pressure_rel_avg_total ; average depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2949 CLRI divesecs_avg_total ; time accumulator
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2950 clrf pressure_rel_accu_total+0 ; depth accumulator
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2951 clrf pressure_rel_accu_total+1 ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2952 clrf pressure_rel_accu_total+2 ; ...
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
2953 clrf pressure_rel_accu_total+3 ; ...
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2954
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2955 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2956
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2957 btfss tr_functions_activated ; TR functions activated?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2958 bra diveloop_boot_0 ; NO - skip TR function initialization
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2959
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2960 banksel int_IO_pressure_value
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2961 clrf WREG ; clear WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2962 bsf WREG,int_not_avail_flag ; set WREG to coding for integer numbers -> data not available
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2963 clrf int_IO_pressure_value+0 ; clear low byte of 1st pressure reading value
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2964 movwf int_IO_pressure_value+1 ; copy to high byte of 1st pressure reading value
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2965 clrf int_IO_pressure_value+2 ; clear low byte of 2nd pressure reading value
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2966 movwf int_IO_pressure_value+3 ; copy to high byte of 2nd pressure reading value
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2967 clrf int_I_pressure_drop+0 ; clear low byte of 1st pressure drop value
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2968 movwf int_I_pressure_drop+1 ; copy to high byte of 1st pressure drop value
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2969 clrf int_I_pressure_drop+2 ; clear low byte of 2nd pressure drop value
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2970 movwf int_I_pressure_drop+3 ; copy to high byte of 1st pressure drop value
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2971 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
2972 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
2973 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
2974 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
2975 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
2976 clrf char_I_pressure_stat+1 ; clear status of 2nd pressure reading
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2977
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2978 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
2979 setf gas__last_1st ; invalidate last gas of 1st reading
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2980 setf gas__last_2nd ; invalidate last gas of 2nd reading
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2981
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2982 banksel common ; back to bank common
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2983
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2984 ENDIF ; _rx_functions
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2985
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2986
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2987 diveloop_boot_0:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2988 setf best_gas_number ; initialize best gas as not computed yet (255)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2989 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2990 setf best_dil_number ; initialize best diluent as not computed yet (255)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2991 ENDIF
604
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 btfsc FLAG_oc_mode ; in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2994 rcall dive_boot_oc ; YES - add OC mode settings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2995
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
2996 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2997 btfsc FLAG_ccr_mode ; in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2998 rcall dive_boot_cc ; YES - add CC mode settings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
2999 btfsc FLAG_ccr_mode ; in CCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3000 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
3001
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3002 btfsc FLAG_pscr_mode ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3003 rcall dive_boot_cc ; YES - add CC mode settings
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3004 btfsc FLAG_pscr_mode ; in pSCR mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3005 rcall dive_boot_cc_part2 ; YES - add CC sensor and SP settings
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3006 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3007
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3008 bcf bailout_mode ; not in bailout mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3009
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3010 call ghostwriter_short_header ; write short header with dive number into profile memory
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3011 call init_recording_params ; set up all the divisors for dive data recording
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3012
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3013 ; setup gas selector flag (required to have better gas working)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3014 bsf is_diluent_menu ; default to using diluents
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3015 btfsc FLAG_ccr_mode ; in CCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3016 bra diveloop_boot_3 ; YES - default was right
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3017 btfsc FLAG_pscr_mode ; in pSCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3018 bra diveloop_boot_3 ; YES - default was right
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3019 bcf is_diluent_menu ; NO to both - revert to using OC gases
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3020
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3021 diveloop_boot_3:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3022 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
3023 bcf LEDr ; switch off red LED
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3024
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3025 btfss sensor_override_active ; in simulator mode?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3026 call disable_rs232 ; NO - disable RS232
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3027
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3028 IFDEF _screendump
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3029 btfsc screen_dump_avail ; screen dump function enabled?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3030 call enable_rs232 ; enable interface (also sets CPU speed to normal)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3031 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3032
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3033 clrf apnoe_surface_mins ; clear apnoe surface time, minutes (8 bit)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3034 clrf apnoe_surface_secs ; clear apnoe surface time, seconds (8 bit)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3035 clrf apnoe_dive_mins ; clear apnoe dive time, minutes (8 bit)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3036 clrf apnoe_dive_secs ; clear apnoe dive time, seconds (8 bit)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3037
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3038 return ; done with dive mode boot
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3039
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 ;=============================================================================
0
heinrichsweikamp
parents:
diff changeset
3042
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3043 divemode_check_warnings:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3044 movlw .1 ; one message at a time in alternative layout
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3045 btfss alt_layout_active ; in alternative layout?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3046 movlw .2 ; NO - two messages at a time in normal layout
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3047 cpfsgt message_counter ; more than one (alt layout) / 2 (normal layout) messages currently active?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3048 bra divemode_check_warnings1 ; NO - update messages every second
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3049
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3050 ; ; YES - update every 4 seconds:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3051 ; btfss timebase_1sec ; - on second 1 or 3 ?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3052 ; return ; NO - no update in this cycle
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3053 ; btfss timebase_2sec ; YES - on second 3 ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3054 ; return ; NO - no update in this cycle
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3055 ; ;bra divemode_check_warnings1 ; YES - update messages
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3056
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3057 ; NO - update every 2 seconds
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3058 btfsc timebase_1sec ; - on even second?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3059 return ; NO - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3060 ;bra divemode_check_warnings1 ; YES - update messages
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3061
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3062 divemode_check_warnings1:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3063 ; start a new message collection cycle
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3064 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
3065 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
3066 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
3067 clrf message_counter ; clear message counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3068
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3069 ; 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
3070
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3071 ; warnings for all modes
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3072 call check_warn_battery ; check if the battery level should be displayed/warned
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3073 rcall check_depth_limit ; check current depth against set depth limit
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3074 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
3075
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3076 btfsc FLAG_apnoe_mode ; in apnoe mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3077 bra divemode_check_warnings2 ; YES
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3078
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3079 btfsc FLAG_gauge_mode ; in gauge mode?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3080 bra divemode_check_warnings2 ; YES
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3081
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3082 ; warnings applicable only in deco modes
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3083
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3084 IFDEF _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3085 rcall check_cavemode ; check cave mode status
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3086 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3087
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3088 rcall check_display_ftts ; show @+x time (or cave mode cTTS)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3089
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3090 rcall check_ppO2 ; check ppO2 and displays warning, if required
0
heinrichsweikamp
parents:
diff changeset
3091
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3092 IFDEF _external_sensor
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3093 btfss o2_sensors_agree ; are the sensor values within the threshold range?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3094 rcall check_warn_sensors_disagree ; NO - do further evaluation
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3095 btfsc o2_sensors_agree ; are the sensor values within the threshold range?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3096 bcf o2_sensors_warning ; YES - clear flag for a new warning
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3097 ENDIF
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3098
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3099 rcall check_outside ; check of ZHL16 model violation
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3100
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3101 IFDEF _helium
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3102 rcall check_IBCD ; check for IBCD attention or warning
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3103 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3104
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3105 btfsc FLAG_ccr_mode ; in CCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3106 rcall check_OC_gas_avail ; YES - check if a breathable OC (bailout) gas is available
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3107 btfsc FLAG_pscr_mode ; in pSCR mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3108 rcall check_OC_gas_avail ; YES - check if a breathable OC (bailout) gas is available
604
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 btfsc decostop_active ; in deco mode?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3111 rcall check_and_store_sat_violation; YES - sets warnings, if required
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3112
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3113 rcall check_mbubbles ; check for micro bubbles
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3114 rcall check_cns_violation ; check CNS value and display it, if required
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3115 rcall check_gas_needs ; show gas needs warning if any gas need for ascent is > threshold
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3116 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
3117
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3118 btfsc use_aGF ; using alternative GF factors?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3119 rcall warn_agf ; YES - show memo
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3120
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3121 btfsc sp_fallback ; in fallback condition due to O2 sensor failure?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3122 rcall warn_fallback ; YES - show a warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3123
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3124 btfsc better_dil_available ; is a better diluent available?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3125 rcall advice_gas_change ; YES - display a gas change advice
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3126
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3127 btfsc better_gas_available ; is a better gas available?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3128 rcall advice_gas_change ; YES - display a gas change advice
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3129
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3130 divemode_check_warnings2:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3131 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3132 btfss tr_functions_activated ; TR functions activated?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3133 bra divemode_check_warnings3 ; NO - skip
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3134 call check_tr_functions ; YES - check transmitter functions
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3135 call check_tr_messages ; - check SAC attention and switch advice
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3136 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3137
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3138 divemode_check_warnings3:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3139 ; Display / clear the advice, attention or warning icon
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3140 btfsc message_advice ; any message of level advice?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3141 bsf FLAG_TFT_sign_show ; YES
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3142 btfsc message_attention ; any message of level attention?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3143 bsf FLAG_TFT_sign_show ; YES
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3144 btfsc message_warning ; any message of level warning?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3145 bsf FLAG_TFT_sign_show ; YES
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3146 btfss FLAG_TFT_sign_show ; any message of above levels?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3147 bsf FLAG_TFT_sign_clear ; NO - clear sign
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3148
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3149 ; Increment message page number
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3150 incf message_page,F ; increment page number
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3151 bcf STATUS,C ; clear carry bit
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3152 movf message_page,W ; get page number into WREG
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3153 btfss alt_layout_active ; in alternative layout?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3154 rlcf WREG,W ; NO - each page can take two messages
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3155 cpfsgt message_counter ; number of actual messages > message capacity ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3156 clrf message_page ; NO - all messages could be shown, restart from first page next time
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3157
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3158 ; Clear both rows of messages if there is nothing to show at all
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3159 tstfsz message_counter ; any message to show?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3160 bra divemode_check_warnings4 ; YES - look if second row needs to be cleared
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3161 bsf FLAG_TFT_message_clear_both ; NO - request clearing of left-over messages
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3162 return ; - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3163
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3164 divemode_check_warnings4:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3165 ; Clear 2nd row of messages if there is nothing to show (on this page)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3166 btfss message_2nd_row_used ; does the 2nd row contain a message?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3167 bsf FLAG_TFT_message_clear_2nd ; NO - set flag to clear the 2nd row
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3168 return ; done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3169
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3170 ;-----------------------------------------------------------------------------
0
heinrichsweikamp
parents:
diff changeset
3171
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3172 global check_warn_battery
0
heinrichsweikamp
parents:
diff changeset
3173 check_warn_battery:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3174 movlw battery_show_level+1 ; get threshold for showing battery level, incremented by 1
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3175 cpfslt batt_percent ; battery percentage ok?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3176 return ; YES - no display, no warning
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3177 ; Display Battery, but warn?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3178 btfsc battery_low_condition ; battery low condition detected?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3179 bsf message_warning ; YES - set warning flag for battery low
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3180 movlw index_clock_batt_surfpress ; index of custom view clock, battery and surface pressure
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3181 cpfseq active_customview ; battery shown in custom view?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3182 bra check_warn_battery2 ; NO - show warning
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3183 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
3184 check_warn_battery2:
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3185 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3186 goto TFT_msg_batt_percent_divemode ; show warning message for battery low (battery percent) and return
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3187
513
heinrichsweikamp
parents: 507
diff changeset
3188
55
448ba265fdae Change "O2" warning to "ppO2"
heinrichsweikamp
parents: 39
diff changeset
3189 check_divetimeout:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3190 btfsc count_divetime ; is dive time counted?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3191 return ; YES - do nothing
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3192 incf message_counter,F ; increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3193 goto TFT_divetimeout ; show timeout counter (and return)
55
448ba265fdae Change "O2" warning to "ppO2"
heinrichsweikamp
parents: 39
diff changeset
3194
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3195
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3196 check_ppO2:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3197 IFDEF _ccr_pscr
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3198 btfsc FLAG_oc_mode ; are we in OC mode?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3199 bra check_ppO2_1 ; YES - continue with breathed gas
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3200 btfsc bailout_mode ; NO - in bailout?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3201 bra check_ppO2_1 ; YES - continue with breathed gas
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3202 ; CCR / pSCR mode - checks on pure diluent
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3203 MOVII int_O_pure_ppO2,mpr ; get value and attention/warning flags for the pure diluent
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3204 btfsc hi,int_warning_flag ; is there a ppO2 low or high warning on the pure diluent?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3205 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
3206 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
3207 rcall check_ppO2_da ; YES - show attention and return on next line
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3208 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3209 ; 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
3210 check_ppO2_1:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3211 MOVII int_O_breathed_ppO2,mpr ; get value and attention/warning flags for the breathed gas
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3212 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
3213 bra check_ppo2_display_a ; YES - set attention flag and show ppO2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3214 btfsc hi,int_low_flag ; breathed ppO2 too low?
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3215 bra check_ppO2_low ; YES - record the warning and show ppO2
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3216 btfsc hi,int_high_flag ; breathed ppO2 too high?
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3217 bra check_ppO2_high ; YES - record the warning and show ppO2
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3218 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
3219 return ; NO - no warnings, no show - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3220 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
3221 check_ppO2_low:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3222 movlw d'4' ; set type of alarm (ppO2 low)
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3223 bra check_ppO2_common ; continue with common part
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3224 check_ppO2_high:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3225 movlw d'5' ; set type of alarm (ppO2 high)
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3226 check_ppO2_common:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3227 movwf alarm_type ; copy alarm type to alarm register
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3228 bsf event_occured ; set event flag
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3229 bsf message_warning ; show warning sign for breathed ppO2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3230 check_ppO2_common_2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3231 btfsc FLAG_oc_mode ; are we in OC mode?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3232 bra check_ppo2_display ; YES - show
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3233 IFDEF _ccr_pscr
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3234 btfsc bailout_mode ; are we in bailout mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3235 bra check_ppo2_display ; YES - show
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3236 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3237 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
3238 check_ppo2_display_a:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3239 bsf message_attention ; show attention sign for breathed ppO2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3240 check_ppo2_display:
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3241 movlw index_ppo2_ead_end_cns ; index of custom view ppO2, EAD/END and CNS (without He) or gas density (with He)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3242 cpfseq active_customview ; ppO2 shown?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3243 bra check_ppO2_b ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3244 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
3245 check_ppO2_b:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3246 movlw index_pscr_info ; index of custom view with pSCR data
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3247 cpfseq active_customview ; ppO2 shown?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3248 bra check_ppO2_d ; NO - show ppO2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3249 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
3250 check_ppO2_dw:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3251 bsf message_warning ; show warning sign for diluent ppO2
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3252 check_ppO2_da:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3253 bsf message_attention ; show attention sign for diluent ppO2 (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
3254 check_ppO2_d:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3255 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3256 goto TFT_show_ppo2_warning ; show warning message for breathed gas or diluent ppO2 and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3257
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3258
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3259 check_display_ftts:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3260 IFDEF _ccr_pscr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3261 btfsc bailout_mode ; in bailout mode?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3262 return ; YES - in bailout no fTTS is computed, done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3263 ENDIF
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3264 btfss count_divetime ; is dive time counted?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3265 return ; NO - omit, done
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3266 movff char_I_extra_time,lo ; YES - get extra time
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3267 tstfsz lo ; - extra time > 0 ?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3268 bra check_display_ftts_1 ; YES - continue checking bailout condition
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3269 return ; NO - no fTTS computed, done
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3270 check_display_ftts_1:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3271 incf message_counter,F ; increase counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3272 goto TFT_show_ftts ; show @+x time
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3273
376
e99bb91f6f92 CHANGE: Do not show ppO2 in warning area if already shown in custom view
heinrichsweikamp
parents: 352
diff changeset
3274
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3275 global check_cns_violation
0
heinrichsweikamp
parents:
diff changeset
3276 check_cns_violation:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3277 ; Check if CNS should be displayed
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3278 movff int_O_CNS_current+1,WREG ; get current CNS, high byte
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3279 btfsc WREG,int_warning_flag ; warning flag set?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3280 bra check_cns_violation_1 ; YES - issue warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3281 btfsc WREG,int_attention_flag ; NO - attention flag set?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3282 bra check_cns_violation_2 ; YES - issue attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3283 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3284 check_cns_violation_1:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3285 bsf message_warning ; show warning sign for CNS
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3286 check_cns_violation_2:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3287 bsf message_attention ; show attention sign for CNS
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3288 IFNDEF _helium
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3289 movlw index_ppo2_ead_end_cns ; index of custom view ppO2, EAD/END and CNS (without He) or gas density (with He)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3290 cpfseq active_customview ; CNS shown?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3291 bra check_cns_violation_3 ; NO
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3292 return ; YES - do not show twice (in custom view and in warning area)
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3293 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3294 check_cns_violation_3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3295 movlw index_CNS ; index of custom view with CNS values
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3296 cpfseq active_customview ; CNS shown?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3297 bra check_cns_violation_4 ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3298 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
3299 check_cns_violation_4:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3300 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3301 goto TFT_show_cns ; show attention/warning message for CNS and return
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3302
0
heinrichsweikamp
parents:
diff changeset
3303
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3304 global check_eod_cns_violation ; check end-of-dive CNS values
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3305 check_eod_cns_violation:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3306 movff int_O_CNS_current+1,WREG ; get current CNS, high byte
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3307 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
3308 return ; YES - inhibit end-of-dive warning if current CNS is already in warning
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3309 movff int_O_CNS_norm+1,WREG ; get CNS at end of dive in normal plan, high byte
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3310 btfsc WREG,int_invalid_flag ; flag for invalid value set?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3311 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
3312 btfsc WREG,int_warning_flag ; NO - flag for warning set?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3313 bra check_eod_cns_violation2 ; YES - issue warning
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3314 check_eod_cns_violation1: ; NO - continue with checking the other CNS value
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3315 movff int_O_CNS_alt+1,WREG ; get CNS at end of dive in alternative plan, high byte
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3316 btfsc WREG,int_invalid_flag ; flag for invalid value set?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3317 return ; YES - done with CNS checking
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3318 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
3319 bra check_eod_cns_violation2 ; YES - issue warning
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3320 return ; NO - done with CNS checking
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3321 check_eod_cns_violation2: ; issue warning (actually only on attention level)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3322 bsf message_attention ; show attention sign for end-of-dive CNS
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3323 movlw index_CNS ; index of custom view with CNS values
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3324 cpfseq active_customview ; CNS values shown?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3325 bra display_eod_cns_violation ; NO - issue textual warning
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3326 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
3327 display_eod_cns_violation:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3328 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3329 goto TFT_warning_eod_cns ; show warning message for end-of-dive CNS and return
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3330
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3331
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3332 global check_and_store_sat_violation
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3333 check_and_store_sat_violation:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3334 movff int_O_lead_supersat+1,WREG ; get upper byte of leading tissue's supersaturation
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3335 btfss WREG,int_warning_flag ; check if the warning flag is set
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3336 bra check_and_store_sat_violation2 ; NO - continue with checking for attention flag
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3337 movlw d'2' ; YES - set type of alarm
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3338 movwf alarm_type ; - copy to alarm register
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3339 bsf event_occured ; - set event flag
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3340 bsf message_warning ; - show warning sign for saturation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3341 bra check_and_store_sat_violation3 ; - show saturation
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3342 check_and_store_sat_violation2:
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3343 btfsc WREG,int_attention_flag ; check if the attention flag is set
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3344 bra check_and_store_sat_violation3 ; YES - show saturation
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3345 TSTOSS opt_enable_IBCD ; NO - IBCD warning activated?
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3346 bra check_and_store_sat_violation4 ; NO - continue checking of deco info
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3347 movff char_O_deco_warnings,WREG ; YES - get the deco warnings vector
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3348 btfss WREG,IBCD_warning ; - is the IBCD warning flag set?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3349 bra check_and_store_sat_violation4 ; NO - continue checking for deco info
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3350 check_and_store_sat_violation3: ; YES - show saturation
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3351 bsf message_attention ; show attention sign for saturation
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3352 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3353 goto TFT_warning_saturation ; show attention/warning message for saturation and return
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3354 check_and_store_sat_violation4: ; check for deco info
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3355 btfss divemode ; in dive mode?
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3356 return ; NO - done, return
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3357 IFDEF _ccr_pscr
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3358 btfsc bailout_mode ; YES - in bailout mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3359 return ; YES - done, return (deco zone flag is not updated when in bailout mode)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3360 ENDIF
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3361 movff char_O_deco_info,WREG ; NO - get the deco info vector
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3362 btfss WREG,deco_zone ; check if the deco zone flag is set
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3363 return ; NO - done, return
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3364 btfsc use_aGF ; YES - using alternative GF factors?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3365 return ; YES - suppress deco zone info
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3366 btfsc alt_layout_active ; NO - in alternative layout?
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3367 return ; YES - suppress deco zone info
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3368 incf message_counter,F ; NO - increase counter
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3369 goto TFT_info_deco ; - show deco info
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3370
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3371
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3372 check_depth_limit:
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3373 bcf depth_limit_exceeded ; clear warning flag by default
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3374 movff opt_max_depth,WREG ; get depth limit
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3375 cpfsgt depth_meter ; current depth > depth limit?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3376 return ; NO
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3377 bsf depth_limit_exceeded ; YES - set flag for depth limit exceeded
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3378 incf message_counter,F ; - increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3379 bsf message_warning ; - show warning sign for depth
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3380 goto TFT_warning_depth ; - show warning message for depth
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3381
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3382
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3383 check_outside:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3384 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
3385 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
3386 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3387 incf message_counter,F ; YES - increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3388 bsf message_attention ; - show attention sign for outside
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3389 btfsc WREG,outside_warning ; - are we outside the ZH-L16 model right now (-> warning)?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3390 bsf message_warning ; - show warning sign for outside
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3391 goto TFT_warning_outside ; - show warning/attention message for outside and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3392
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3393
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3394 global check_mbubbles
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3395 check_mbubbles:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3396 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
3397 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
3398 bra check_mbubbles_warn ; YES
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3399 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
3400 return ; NO - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3401 check_mbubble_att ; YES - attention level
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3402 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3403 bsf message_attention ; show attention sign for micro bubbles
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3404 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
3405 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
3406 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3407 bsf message_warning ; show warning sign for micro bubbles
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3408 goto TFT_warning_mbubbles ; show warning message for micro bubbles (and return)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3409
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3410
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3411 IFDEF _cave_mode
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3412
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3413 check_cavemode:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3414 btfsc backtrack_entire_full ; is the backtracking storage entirely used up?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3415 bra check_cavemode_full ; YES - turn dive, switch off cave mode and show warning message
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3416 btfsc backtrack_almost_full ; NO - backtracking storage almost full?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3417 bra check_cavemode_almost_full ; YES - show attention message that cave mode will stop soon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3418 btfss alt_layout_active ; NO - alternative layout active?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3419 bra check_cavemode_info ; NO - show cave mode active info
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3420 return ; YES - suppress info message
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3421
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3422 check_cavemode_full:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3423 btfss backtrack_shutdown ; backtracking shut down already?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3424 bsf request_cave_off_turned ; NO - request to switch cave mode off and to set the dive as turned
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3425 bsf backtrack_shutdown ; remember shut down as been executed (anyhow)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3426 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3427 btfsc cave_mode ; has the cave mode been switched on again meanwhile?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3428 goto TFT_cave_shutdown_attention ; YES - show attention message for cave mode shutdown ands return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3429 bsf message_warning ; NO - show warning sign for cave mode shutdown
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3430 goto TFT_cave_shutdown_warning ; - show warning message for cave mode shutdown and return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3431
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3432 check_cavemode_almost_full:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3433 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3434 return ; NO - suppress message
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3435 incf message_counter,F ; YES - increase counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3436 goto TFT_cave_shutdown_attention ; - show attention message that cave mode will shut down soon
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3437
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3438 check_cavemode_info:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3439 btfss cave_mode ; cave mode switched on?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3440 return ; NO - do not show info
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3441 incf message_counter,F ; YES - increase counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3442 goto TFT_info_cave_mode ; - show cave mode active info
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3443
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3444 ENDIF ; _cave_mode
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3445
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3446
0
heinrichsweikamp
parents:
diff changeset
3447 warn_agf:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3448 incf message_counter,F ; increase counter
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3449 goto TFT_warning_agf ; show aGF reminder (and return)
145
e3ac5b2021bc NEW: Setpoint-Fallback option for external O2 sensor failure
heinrichsweikamp
parents: 138
diff changeset
3450
e3ac5b2021bc NEW: Setpoint-Fallback option for external O2 sensor failure
heinrichsweikamp
parents: 138
diff changeset
3451 warn_fallback:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3452 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3453 bsf message_warning ; show warning sign for fallback
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3454 goto TFT_warning_fallback ; show warning message for fallback and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3455
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3456 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3457
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3458 IFDEF _rx_functions
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3459
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3460 check_tr_messages:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3461 btfss count_divetime ; is the dive time counted, i.e. deeper than dive threshold?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3462 return ; NO - suppress messages
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3463 movff int_O_SAC_measured+1,WREG ; YES - bank-safe copy of measured SAC rate
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3464 btfss WREG,int_attention_flag ; - attention flag set?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3465 bra check_tr_messages2 ; NO - skip
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3466 btfsc WREG,int_not_avail_flag ; SAC rate available?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3467 bra check_tr_messages2 ; NO - continue with swap advice
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3468 bsf message_attention ; YES - show attention sign for SAC rate
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3469 movlw index_pressures_SAC ; - index of custom view with SAC rate
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3470 cpfseq active_customview ; - SAC rate shown right now?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3471 bra check_tr_messages1 ; NO - show attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3472 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
3473 check_tr_messages1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3474 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3475 call TFT_attention_sac ; show attention message for SAC rate
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3476 check_tr_messages2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3477 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
3478 btfss WREG,ind_double_switch ; swap tank flag set?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3479 return ; NO
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3480 incf message_counter,F ; YES - increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3481 bsf message_advice ; - show advice sign for switching tanks
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3482 goto TFT_advice_switch ; - show advice message for switching tanks and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3483
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3484 check_tr_functions:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3485 clrf xmitter_flags_mesg ; set all messages as not shown yet
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3486 movlw index_pressures_SAC ; index of custom view pressure readings
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3487 cpfseq active_customview ; pressure readings shown?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3488 bra check_tr_functions_tr1 ; NO - continue with checking transmitter 1
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3489 bsf pres_customview_shown ; YES - suppress redraw by faking it has already been redrawn
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3490 check_tr_functions_tr1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3491 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
3492 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
3493 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
3494 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
3495 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
3496 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
3497 check_tr_functions_tr2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3498 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
3499 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
3500 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
3501 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
3502 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
3503 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
3504 check_tr_functions_show_xmtr:
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3505 btfss show_transmitter_attention ; shall show transmitter attention message?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3506 bra check_tr_functions_show_warn ; NO - continue with pressure warning
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3507 bsf message_attention ; YES - show attention sign for transmitter
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3508 incf message_counter,F ; - increase counter
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3509 call TFT_attention_transmitter ; - show transmitter attention message
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3510 check_tr_functions_show_warn:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3511 btfss show_pres_warning ; shall show pressure warning?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3512 bra check_tr_functions_show_att ; NO - continue with pressure attention
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3513 bsf message_warning ; YES - show warning sign for pressure
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3514 incf message_counter,F ; - increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3515 goto TFT_warning_pres_reading ; - show warning message for pressure reading and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3516 check_tr_functions_show_att:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3517 btfss show_pres_attention ; shall show pressure attention?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3518 return ; NO - done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3519 bsf message_attention ; YES - show attention sign for pressure
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3520 incf message_counter,F ; - increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3521 goto TFT_attention_pres_reading ; - show attention message for pressure reading and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3522
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3523 check_tr_functions_helper1:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3524 btfsc WREG,char_transmitter_lost ; transmitter 1 lost?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3525 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
3526 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
3527 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3528 check_tr_functions_helper1a:
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3529 ; bsf show_transmitter_attention ; show transmitter attention
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3530 btfsc transmitter1_lost ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3531 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
3532 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
3533 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3534
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3535 check_tr_functions_helper2:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3536 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
3537 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
3538 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
3539 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3540 check_tr_functions_helper2a:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3541 bsf show_transmitter_attention ; show transmitter attention
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3542 btfsc transmitter1_battery ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3543 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
3544 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
3545 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3546
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3547 check_tr_functions_helper3:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3548 btfsc WREG,int_warning_flag ; transmitter 1 pressure warning?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3549 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
3550 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
3551 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3552 check_tr_functions_helper3a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3553 bsf show_pres_warning ; show pressure warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3554 btfsc transmitter1_pres_warn ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3555 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
3556 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
3557 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3558
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3559 check_tr_functions_helper4:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3560 btfsc WREG,int_attention_flag ; transmitter 1 pressure attention?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3561 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
3562 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
3563 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3564 check_tr_functions_helper4a
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3565 bsf show_pres_attention ; show pressure attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3566 btfsc transmitter1_pres_att ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3567 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
3568 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
3569 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3570
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3571 check_tr_functions_helper5:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3572 btfsc WREG,char_transmitter_lost ; transmitter 2 lost?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3573 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
3574 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
3575 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3576 check_tr_functions_helper5a:
628
cd58f7fc86db 3.05 stable work
heinrichsweikamp
parents: 623
diff changeset
3577 ; bsf show_transmitter_attention ; show transmitter attention
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3578 btfsc transmitter2_lost ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3579 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
3580 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
3581 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3582
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3583 check_tr_functions_helper6:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3584 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
3585 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
3586 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
3587 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3588 check_tr_functions_helper6a:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3589 bsf show_transmitter_attention ; show transmitter attention
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3590 btfsc transmitter2_battery ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3591 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
3592 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
3593 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3594
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3595 check_tr_functions_helper7:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3596 btfsc WREG,int_warning_flag ; transmitter 2 pressure warning?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3597 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
3598 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
3599 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3600 check_tr_functions_helper7a:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3601 bsf show_pres_warning ; show pressure warning
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3602 btfsc transmitter2_pres_warn ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3603 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
3604 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
3605 bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3606
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3607 check_tr_functions_helper8:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3608 btfsc WREG,int_attention_flag ; transmitter 2 pressure attention?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3609 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
3610 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
3611 return ; - done
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3612 check_tr_functions_helper8a
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3613 bsf show_pres_attention ; show pressure attention
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3614 btfsc transmitter2_pres_att ; is it a new message?
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3615 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
3616 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
3617 ;bra check_tr_functions_show_cv ; - show custom view
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3618
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3619 check_tr_functions_show_cv:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3620 btfsc pres_customview_shown ; is the pressure readings custom view not shown yet?
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3621 return ; NO - already shown, done
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3622 btfsc custom_view_locked ; YES - custom view locked?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3623 return ; YES - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3624 bsf pres_customview_shown ; NO - mark as shown now
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3625 movlw index_pressures_SAC ; - get custom view number of pressure readings
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3626 goto dive_customview_show ; - draw custom view and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3627
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3628 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3629
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3630 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3631
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3632 check_gas_needs:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3633 banksel int_O_gas_need_pres
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3634 movf int_O_gas_need_pres+1,W ; get high byte from pres need of 1st tank
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3635 iorwf int_O_gas_need_pres+3,W ; inclusive or with high byte from pres need of 2nd tank
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3636 iorwf int_O_gas_need_pres+5,W ; inclusive or with high byte from pres need of 3rd tank
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3637 iorwf int_O_gas_need_pres+7,W ; inclusive or with high byte from pres need of 4th tank
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3638 iorwf int_O_gas_need_pres+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
3639 banksel common
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3640 btfsc WREG,int_invalid_flag ; check if invalid flag is set
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3641 return ; YES - no further checking required
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3642 btfsc WREG,int_warning_flag ; NO - check if any gas has a pres_need >= pres_fill
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3643 bra check_gas_needs_warn ; YES - generate a warning
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3644 btfsc WREG,int_attention_flag ; NO - check if any gas has a pres_need >= pres_fill * threshold
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3645 bra check_gas_needs_att ; YES - generate an attention
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3646 bcf gas_needs_attention ; NO - clear flag for a new attention
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3647 bcf gas_needs_warning ; - clear flag for a new warning
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3648 return ; - done
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3649
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3650 check_gas_needs_warn:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3651 bsf message_warning ; show warning sign for gas needs
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3652 incf message_counter,F ; increase counter
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3653 btfsc gas_needs_warning ; is it a new warning?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3654 bra check_gas_needs_warn_1 ; NO - do not show the gas needs custom view again
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3655 btfsc custom_view_locked ; YES - custom view locked?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3656 bra check_gas_needs_warn_1 ; YES - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3657 bsf gas_needs_warning ; NO - memorize it's an old now
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3658 movlw index_gas_needs_ascent ; - get custom view number of gas needs
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3659 call dive_customview_show ; - draw custom view
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3660 check_gas_needs_warn_1:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3661 goto TFT_warning_gas_needs ; - show warning message for gas needs and return
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3662
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3663 check_gas_needs_att:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3664 bsf message_attention ; show attention sign for gas needs
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3665 incf message_counter,F ; increase counter
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3666 btfsc gas_needs_attention ; is it a new attention?
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3667 bra check_gas_needs_att_1 ; NO - do not show the gas needs custom view again
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3668 btfsc custom_view_locked ; YES - custom view locked?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3669 bra check_gas_needs_att_1 ; YES - done
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3670 bsf gas_needs_attention ; NO - memorize it's an old now
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3671 movlw index_gas_needs_ascent ; - get custom view number of gas needs
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3672 call dive_customview_show ; - draw custom view
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3673 check_gas_needs_att_1:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3674 goto TFT_attention_gas_needs ; - show attention message for gas needs and return
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3675
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3676 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3677
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3678 IFDEF _external_sensor
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3679
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3680 check_warn_sensors_disagree:
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3681 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3682 bsf message_warning ; show warning sign for sensor disagree
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3683 btfsc o2_sensors_warning ; is it a new warning?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3684 goto TFT_warning_sensor_disagree ; NO - don't show sensor custom view again, just show sensor disagree warning and return
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3685 bsf o2_sensors_warning ; YES - memorize it's an old warning now
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3686 call show_sensors_custview ; - show sensors custom view
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3687 goto TFT_warning_sensor_disagree ; - show warning message for sensor disagree and return
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3688
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3689 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3690
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3691 ;=============================================================================
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3692
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3693 IFDEF _helium
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3694
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3695 check_IBCD:
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3696 TSTOSS opt_enable_IBCD ; IBCD warning activated?
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3697 return ; NO - done
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3698 movff char_O_deco_warnings,WREG ; YES - get deco warnings vector
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3699 btfss WREG,IBCD_warning ; IBCD warning flag set?
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3700 return ; NO - return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3701 incf message_counter,F ; YES - increase counter
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3702 goto TFT_warning_IBCD ; write warning to display
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3703
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3704 ENDIF
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3705
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3706 ;=============================================================================
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3707
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3708 check_OC_gas_avail:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3709 tstfsz best_gas_number ; is a breathable OC (bailout) gas available?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3710 return ; YES (>0) - a breathable gas is available
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3711 IFDEF _ccr_pscr
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3712 btfsc bailout_mode ; in bailout?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3713 return ; YES - suppress warning
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3714 ENDIF
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3715 incf message_counter,F ; increase counter
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3716 bsf message_warning ; show warning sign for no bailout gas
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3717 goto TFT_warning_no_BO_gas ; show warning message for no bailout gas and return
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3718
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3719
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3720 advice_gas_change:
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3721 bsf message_advice ; show advice sign
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3722 incf message_counter,F ; increase counter
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3723 goto TFT_advice_gas_change ; show advice (and return)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3724
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3725
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3726 global restart_deco_engine
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3727 global restart_deco_engine_wo_ceiling
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3728 restart_deco_engine:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3729 banksel int_O_ceiling ; switch to bank where the shared "_O_" variables are stored
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3730 bsf int_O_ceiling+1,char_invalid_flag ; invalidate ceiling (int_O_ceiling has its invalid flag on a char's position!)
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3731
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3732 restart_deco_engine_wo_ceiling:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3733 banksel char_O_deco_gas ; switch to bank where the shared "_O_" variables are stored
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3734 bsf char_O_deco_gas+0,char_invalid_flag ; invalidate deco data (stop table data)
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3735 bsf int_O_NDL_norm+1,int_invalid_flag ; invalidate NDL time (normal plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3736 bsf int_O_TTS_norm+1,int_invalid_flag ; invalidate TTS time (normal plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3737 bsf int_O_TST_norm+1,int_invalid_flag ; invalidate TST time (normal plan)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3738 bsf int_O_CNS_norm+1,int_invalid_flag ; invalidate CNS at end of dive in normal plan
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3739
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3740 restart_deco_engine_wo_norm:
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3741 banksel common ; bank to bank common
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3742 bsf request_restart_engine ; request restart of the deco engine
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3743
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3744 inval_alternative_plan_data:
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3745 banksel int_O_TTS_alt ; switch to bank where the shared "_O_" variables are stored
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3746 bsf int_O_NDL_alt+1,int_invalid_flag ; invalidate NDL time (alternative plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3747 bsf int_O_TTS_alt+1,int_invalid_flag ; invalidate TTS time (alternative plan)
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3748 bsf int_O_TST_alt+1,int_invalid_flag ; invalidate TST time (alternative plan)
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3749 bsf int_O_CNS_alt+1,int_invalid_flag ; invalidate CNS at end of dive in alternative plan
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3750 bsf int_O_gas_need_pres+1,int_invalid_flag ; invalidate ascent gas needs
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3751
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3752 IFDEF _rx_functions
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3753 bsf int_O_pressure_need+1,int_not_avail_flag ; invalidate pressure needs to reading 1 (TR functions)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3754 bsf int_O_pressure_need+3,int_not_avail_flag ; invalidate pressure needs to reading 2 (TR functions)
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3755 ENDIF
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3756
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3757 banksel common ; bank to bank common
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3758 bsf new_deco_data_avail ; set flag for new NDL and deco data available to have the display updated
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3759
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3760 return
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3761
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3762 ;=============================================================================
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3763 ; Simulator Mode
582
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3764 ;
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3765 global do_demo_divemode
b455b31ce022 work on 2.97 stable
heinrichsweikamp
parents: 564
diff changeset
3766 do_demo_divemode:
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3767 call TFT_ClearScreen ; blank screen
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3768
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3769 ; leaving menu mode, so have option values in EEPROM up-to-date
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3770 btfsc options_changed ; do the options need to be stored to EEPROM ?
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3771 call option_check_and_store_all ; YES - check and store all option values in EEPROM
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3772 bcf options_changed ; clear flag
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3773
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3774 ; +++ COMMENT OUT FOR TESTING PURPOSE ONLY !!! +++
631
185ba2f91f59 3.09 beta 1 release
heinrichsweikamp
parents: 628
diff changeset
3775 bsf simulatormode ; restore tissue pressures and CNS value after finishing simulator use
604
ca4556fb60b9 bump to 2.99beta, work on 3.00 stable
heinrichsweikamp
parents: 601
diff changeset
3776 ; +++ DO NOT COMMENT OUT IN OPERATIONAL USE !!! +++
560
b7eb98dbd800 bump to 2.96beta (REFACTORED VERSION)
heinrichsweikamp
parents: 555
diff changeset
3777
623
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3778 call deco_push_tissues_to_vault ; back-up the tissue pressures (C-code)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3779 banksel common ; back to bank common
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3780
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3781 ; set simulated target depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3782 movff char_I_bottom_depth,simulatormode_depth
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3783
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3784 ; set initial simulated depth (needed to overcome end-of-dive detection)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3785 banksel pressure_rel_sim
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3786 MOVLI simulator_startdepth,pressure_rel_sim
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3787 banksel common
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3788
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3789 ; switch ISR pressure calculations to simulator mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3790 bcf quit_simulatormode ; clear flag for fast abort request
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3791 bcf sensor_override_active ; make sure ISR mode switch confirmation is not older than from now on
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3792 bsf sensor_override_request ; request ISR to switch to simulator mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3793 btfss sensor_override_active ; has the ISR confirmed switch to simulator mode?
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3794 bra $-2 ; NO - not yet, loop waiting for the ISR to kick in
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3795
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3796 ; branch into dive mode
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3797 bsf divemode ; activate dive mode (to be done after simulator mode is activated)
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3798 goto diveloop ; branch to dive mode code
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3799
c40025d8e750 3.03 beta released
heinrichsweikamp
parents: 608
diff changeset
3800 END