comparison src/shared_definitions.h @ 623:c40025d8e750

3.03 beta released
author heinrichsweikamp
date Mon, 03 Jun 2019 14:01:48 +0200
parents ca4556fb60b9
children cd58f7fc86db
comparison
equal deleted inserted replaced
622:02d1386429a6 623:c40025d8e750
1 #ifdef xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1 #ifdef xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2 ; 2 ;
3 ; shared_definitions.h REFACTORED VERSION V2.99e 3 ; shared_definitions.h combined next generation V3.03.1
4 ; 4 ;
5 ; Declare variables used both in C and ASM code 5 ; Declare variables used both in C and ASM code
6 ; 6 ;
7 ; This program is free software: you can redistribute it and/or modify 7 ; This program is free software: you can redistribute it and/or modify
8 ; it under the terms of the GNU General Public License as published by 8 ; it under the terms of the GNU General Public License as published by
78 and not reported in TTS summing. 78 and not reported in TTS summing.
79 NUM_GAS is the number of (potentially) active gas considered during 79 NUM_GAS is the number of (potentially) active gas considered during
80 ascent simulation. 80 ascent simulation.
81 NUM_SP is the number of setpoints 81 NUM_SP is the number of setpoints
82 #endif 82 #endif
83 #define NUM_COMP 0x10 83 #define NUM_COMP 0x10
84 #define NUM_STOPS 0x20 84 #define NUM_STOPS 0x20
85 #define NUM_GAS 5 85 #define NUM_STOPS_LOG 0x0F
86 #define NUM_SP 5 86 #define NUM_GAS 5
87 87
88 88
89 #ifdef __18CXX 89 #ifdef __18CXX
90 //---- BANK 3 DATA ------------------------------------------------------- 90 //---- BANK 3 DATA -------------------------------------------------------
91 // Gather all Data C-Code --> ASM-Code 91 // Gather all Data C-Code --> ASM-Code
92 // Memory usage: 202 Byte used, 54 Byte free 92 // Memory usage: 240 Byte used, 16 Byte free
93 # pragma udata overlay bank3=0x300 93 # pragma udata overlay bank3=0x300
94 #else 94 #else
95 ; in ASM, put the same bank, in overlay mode, at the same address 95 ; in ASM, put the same bank, in overlay mode, at the same address
96 bank3 udata_ovr 0x300 96 bank3 equ 0x300
97 #endif 97 bank3 udata_ovr bank3
98 98 #endif
99 VAR_UINT (int_O_desaturation_time); // time until tissues desaturated to 5% remains, in minutes 99
100 VAR_UINT (int_O_nofly_time); // altitude / no-fly waiting time time in minutes 100 VAR_UINT (int_O_desaturation_time); // time until tissues desaturated to 5% remains, in minutes
101 101 VAR_UINT (int_O_nofly_time); // altitude / no-fly waiting time time in minutes
102 VAR_UINT (int_O_ascenttime); // time-to-surface (TTS) in minutes 102
103 VAR_UINT (int_O_alternate_ascenttime); // TTS for the alternative dive plan 103 VAR_UINT (int_O_TTS_norm); // ascent time (TTS) in normal plan in minutes
104 104 VAR_UINT (int_O_TTS_alt); // ascent time (TTS) in alternative plan in minutes
105 VAR_UINT (int_O_CNS_fraction); // current CNS% 105
106 VAR_UINT (int_O_normal_CNS_fraction); // CNS% at end of dive in normal dive plan 106 VAR_UINT (int_O_CNS_current); // current CNS %
107 VAR_UINT (int_O_alternate_CNS_fraction); // CNS% at end of dive in alternative plan 107 VAR_UINT (int_O_CNS_norm); // CNS% at end of dive in normal dive plan
108 108 VAR_UINT (int_O_CNS_alt); // CNS% at end of dive in alternative plan
109 VAR_UINT (int_O_gradient_factor); // current gradient factor in %, 100% = on M-line of straight Buhlmann 109
110 110 VAR_UINT (int_O_lead_supersat); // supersaturation of the leading tissue in %, 100% = on M-line of straight Buhlmann
111 VAR_UCHAR (char_O_lead_number); // number of the leading tissue 111
112 112 VAR_UCHAR (char_O_lead_tissue); // number of the leading tissue
113 VAR_UCHAR (char_O_nullzeit); // remaining NDL time in minutes 113
114 VAR_UCHAR (char_O_alternate_nullzeit); // remaining NDL time for the alternative dive plan 114 VAR_UCHAR (char_O_NDL_norm); // remaining NDL time for the normal dive plan in minutes
115 115 VAR_UCHAR (char_O_NDL_alt); // remaining NDL time for the alternative dive plan in minutes
116 VAR_UCHAR (char_O_main_status); // setup of the deco engine regarding the real tissue computations 116
117 VAR_UCHAR (char_O_deco_status); // setup of the deco engine regarding the decompression computations 117 VAR_UCHAR (char_O_main_status); // setup of the deco engine regarding the real tissue computations
118 VAR_UCHAR (char_O_deco_warnings); // vector of warnings generated by the deco engine 118 VAR_UCHAR (char_O_deco_status); // setup of the deco engine regarding the decompression computations
119 VAR_UCHAR (char_O_deco_info); // vector of infos generated by the deco engine 119 VAR_UCHAR (char_O_deco_warnings); // vector of warnings generated by the deco engine
120 120 VAR_UCHAR (char_O_deco_info); // vector of infos generated by the deco engine
121 VAR_UCHAR (char_O_EAD); // equivalent air depth (EAD) of breathed gas 121
122 VAR_UCHAR (char_O_END); // equivalent narcosis depth (END) of breathed gas 122 VAR_UCHAR (char_O_EAD); // equivalent air depth (EAD) of breathed gas
123 123 VAR_UCHAR (char_O_END); // equivalent narcosis depth (END) of breathed gas
124 VAR_UCHAR (char_O_first_deco_depth); // depth of first stop (deco or gas change) 124
125 VAR_UCHAR (char_O_first_deco_time) ; // duration of first stop 125 TAB_UCHAR (char_O_tissue_pres_N2, NUM_COMP); // N2 tissue pressures for display purpose
126 126 TAB_UCHAR (char_O_tissue_pres_He, NUM_COMP); // He tissue pressures for display purpose
127 TAB_UCHAR (char_O_deco_depth, NUM_STOPS); // stops table: depth, ... | ATTENTION: do not re-arrange these 127 TAB_UCHAR (char_O_tissue_pressure, NUM_COMP); // total tissue pressures for display purpose
128 TAB_UCHAR (char_O_deco_time, NUM_STOPS); // ... duration, and | three arrays relative 128 TAB_UCHAR (char_O_tissue_saturation, NUM_COMP); // tissue saturations for display purpose
129 TAB_UCHAR (char_O_deco_gas, NUM_STOPS); // ... gas breathed | to each other! 129
130 130 TAB_UINT (int_O_gas_need_vol, NUM_GAS); // gas volumes needed for ascent in liters
131 TAB_UCHAR (char_O_deco_time_for_log, NUM_STOPS); // variant of the stops table for logging purpose 131 TAB_UINT (int_O_gas_need_pres, NUM_GAS); // gas volumes needed for ascent in bar as per tank size
132 132
133 TAB_UCHAR (char_O_tissue_N2_saturation, NUM_COMP); // nitrogen tissue pressures for display purpose 133 VAR_UINT (int_O_ceiling); // ascent boundary in mbar relative pressure, calculated at GF-high
134 TAB_UCHAR (char_O_tissue_He_saturation, NUM_COMP); // helium tissue pressures for display purpose 134
135 135 VAR_UINT (int_O_breathed_ppO2); // ppO2 actually breathed (= int_O_pure_ppO2 if in OC)
136 TAB_UINT (int_O_ascent_volumes, NUM_GAS); // gas volumes needed for ascent in liters 136
137 TAB_UINT (int_O_ascent_pres_need, NUM_GAS); // tank pressures needed for ascent in bar 137 VAR_UINT (int_O_O2_ppO2); // ppO2 of pure O2 at current depth
138 138 VAR_UINT (int_O_pure_ppO2); // ppO2 of the current gas or diluent if breathed pure
139 VAR_UINT (int_O_ceiling); // ascent boundary in mbar relative pressure, calculated at GF-high 139 VAR_UINT (int_O_pSCR_ppO2); // ppO2 calculated in pSCR loop
140 140
141 VAR_UINT (int_O_O2_ppO2); // ppO2 of pure O2 at current depth 141
142 VAR_UINT (int_O_pure_ppO2); // ppO2 of the current gas or dil if breathed pure 142 TAB_UINT (int_O_pressure_need, 2); // pressure reading, need by deco calculations, in 0.1 bar
143 VAR_UINT (int_O_pSCR_ppO2); // ppO2 calculated in pSCR loop 143 VAR_UINT (int_O_SAC_measured); // measured SAC rate in 0.1 liter/minute
144 VAR_UINT (int_O_breathed_ppO2); // ppO2 actually breathed (= char_O_pure_ppO2 if in OC) 144
145 145 VAR_UCHAR (char_O_depth_sim); // depth reached in deco calculation, used in deco calculator to show progress
146 TAB_UINT (int_O_pressure_need, 2); // pressure reading, need by deco calculations, in 0.1 bar
147 VAR_UINT (int_O_sac_rate); // SAC rate in 0.1 liter/minute
148
149
150 #ifdef __18CXX
151 //---- BANK 4 DATA -------------------------------------------------------
152 // Gather all Data ASM-Code --> C-Code
153 // Memory usage: 86 Byte used, 170 byte free
154 # pragma udata overlay bank4=0x400
155 #else
156 ; in ASM, put the same bank, in overlay mode, at the same address
157 bank4 udata_ovr 0x400
158 #endif
159 146
160 VAR_UINT (int_I_pres_respiration); // absolute pressure breathed 147 VAR_UINT (int_I_pres_respiration); // absolute pressure breathed
161 VAR_UINT (int_I_pres_surface); // absolute pressure at surface 148 VAR_UINT (int_I_pres_surface); // absolute pressure at surface
162 149
163 VAR_UCHAR (char_I_current_gas); // number of gas currently breathed (1..5 for configured gases, 6 for the manual gas) 150 VAR_UCHAR (char_I_current_gas_num); // number of gas currently breathed (1..5 for configured gases, 6 for the manual gas)
164 VAR_UCHAR (char_I_current_gas_type); // type of current gas: (0=Disabled), 1=First, 2=Travel/Normal, 3=Deco/- 151 VAR_UCHAR (char_I_current_gas_type); // type of current gas: (0=Disabled), 1=First, 2=Travel/Normal, 3=Deco/-
165 VAR_UCHAR (char_I_He_ratio); // helium ratio of the currently breathed gas 152 VAR_UCHAR (char_I_He_ratio); // helium ratio of the currently breathed gas
166 VAR_UCHAR (char_I_O2_ratio); // oxygen ratio of the currently breathed gas 153 VAR_UCHAR (char_I_O2_ratio); // oxygen ratio of the currently breathed gas
167 154
168 VAR_UCHAR (char_I_saturation_multiplier); // safety factor, 100 = no conservatism, 150 = 50% faster saturation 155 VAR_UCHAR (char_I_saturation_multiplier); // safety factor, 100 = no conservatism, 150 = 50% faster saturation
181 168
182 VAR_UCHAR (char_I_dive_interval); // duration of surface break before next dive in minutes, used in simulation 169 VAR_UCHAR (char_I_dive_interval); // duration of surface break before next dive in minutes, used in simulation
183 VAR_UCHAR (char_I_sim_advance_time); // 'fast forward' of dive time, used in simulation (+5 min function) 170 VAR_UCHAR (char_I_sim_advance_time); // 'fast forward' of dive time, used in simulation (+5 min function)
184 VAR_UCHAR (char_I_extra_time); // extra bottom time for fTTs and delayed ascent calculation in minutes 171 VAR_UCHAR (char_I_extra_time); // extra bottom time for fTTs and delayed ascent calculation in minutes
185 172
186 VAR_UCHAR (char_I_const_ppO2); // ppO2 reported from sensors or by setpoint 173 VAR_UCHAR (char_I_const_ppO2); // ppO2 reported from sensors or selected setpoint
187
188 TAB_UCHAR (char_I_setpoint_cbar, NUM_SP); // setpoints in cbar | ATTENTION: do not change the position of these
189 TAB_UCHAR (char_I_setpoint_change,NUM_SP); // change depth for the setpoints in meter | two arrays relative to each other!
190 174
191 TAB_UCHAR (char_I_deco_O2_ratio, NUM_GAS); // oxygen ratios of the configured gases, used for deco calc. | ATTENTION: do not change the 175 TAB_UCHAR (char_I_deco_O2_ratio, NUM_GAS); // oxygen ratios of the configured gases, used for deco calc. | ATTENTION: do not change the
192 TAB_UCHAR (char_I_deco_He_ratio, NUM_GAS); // helium ratios of the configured gases, used for deco calc. | position of these 176 TAB_UCHAR (char_I_deco_He_ratio, NUM_GAS); // helium ratios of the configured gases, used for deco calc. | position of these
193 TAB_UCHAR (char_I_deco_gas_type, NUM_GAS); // type of the configured gases, used for deco calc. | arrays relative to 177 TAB_UCHAR (char_I_deco_gas_type, NUM_GAS); // type of the configured gases, used for deco calc. | arrays relative to
194 TAB_UCHAR (char_I_deco_gas_change,NUM_GAS); // change depths of the configured gases, used for deco calc. | each other! 178 TAB_UCHAR (char_I_deco_gas_change,NUM_GAS); // change depths of the configured gases, used for deco calc. | each other!
195 179
196 TAB_UCHAR (char_I_tank_size, NUM_GAS * 2); // tank sizes, used for pressure needs and SAC calculations 180 TAB_UCHAR (char_I_gas_avail_size, NUM_GAS * 2); // tank sizes, used for pressure needs and SAC calculations
197 TAB_UCHAR (char_I_tank_pres_fill, NUM_GAS * 2); // tank fill pressures (in multiples of 10 bar), used to generate warnings 181 TAB_UCHAR (char_I_gas_avail_pres, NUM_GAS * 2); // tank pressures available (in multiples of 10 bar), used to generate warnings
198 182
199 VAR_UCHAR (char_I_cc_max_frac_o2); // limiter for maximum O2% in loop 183 VAR_UCHAR (char_I_CC_max_frac_O2); // limiter for maximum O2% in loop
200 VAR_UCHAR (char_I_PSCR_drop); // pSCR parameter drop [%] 184 VAR_UCHAR (char_I_PSCR_drop); // pSCR parameter drop [%]
201 VAR_UCHAR (char_I_PSCR_lungratio); // pSCR parameter lung ratio [1/x] 185 VAR_UCHAR (char_I_PSCR_lungratio); // pSCR parameter lung ratio [1/x]
202 186
203 VAR_UCHAR (char_I_altitude_wait); // selector for altitude / no-fly waiting time calculation 187 VAR_UCHAR (char_I_altitude_wait); // selector for altitude / no-fly waiting time calculation
204 188
205 VAR_UCHAR (char_I_bottom_usage); // gas consumption during bottom part and initial ascent in liters/minute 189 VAR_UCHAR (char_I_SAC_work); // gas consumption during bottom part and initial ascent in liters/minute
206 VAR_UCHAR (char_I_deco_usage); // gas consumption during deco stops and following ascents in liters/minute 190 VAR_UCHAR (char_I_SAC_deco); // gas consumption during deco stops and following ascents in liters/minute
207 191
208 VAR_UCHAR (char_I_gas6_depth); // change depth (MOD) of the manually configured gas in meters 192 VAR_UCHAR (char_I_gas6_depth); // change depth (MOD) of the manually configured gas in meters
209 193
210 VAR_UCHAR (char_I_ppO2_max); // warning threshold for maximum ppO2 during working phase of the dive 194 VAR_UCHAR (char_I_ppO2_max_work); // warning threshold for maximum ppO2 during working phase of the dive
211 VAR_UCHAR (char_I_ppO2_max_deco); // warning threshold for maximum ppO2 during deco phase of the dive 195 VAR_UCHAR (char_I_ppO2_max_deco); // warning threshold for maximum ppO2 during deco phase of the dive
212 VAR_UCHAR (char_I_ppO2_min); // warning threshold for maximum ppO2 when breathing OC 196 VAR_UCHAR (char_I_ppO2_min); // warning threshold for maximum ppO2 when breathing OC
213 VAR_UCHAR (char_I_ppO2_min_loop); // warning threshold for maximum ppO2 when breathing from CCR or pSCR 197 VAR_UCHAR (char_I_ppO2_min_loop); // warning threshold for maximum ppO2 when breathing from CCR or pSCR
214 198
215 VAR_UCHAR (char_I_ascent_speed); // ascent speed in meters/minute 199 VAR_UCHAR (char_I_ascent_speed); // ascent speed in meters/minute
200 VAR_UCHAR (char_I_descent_speed); // descent speed in meters/minute
216 VAR_UCHAR (char_I_gas_change_time); // extra time spent during a stop for doing a gas change, in minutes 201 VAR_UCHAR (char_I_gas_change_time); // extra time spent during a stop for doing a gas change, in minutes
217 202
218 VAR_UCHAR (char_I_SAC_mode); // SAC calculation mode 203 VAR_UCHAR (char_I_SAC_mode); // SAC calculation mode
219 VAR_UCHAR (char_I_max_pres_diff); // maximum pressure difference for independent double mode 204 VAR_UCHAR (char_I_max_pres_diff); // maximum pressure difference for independent double mode
220 205
224 TAB_UCHAR (char_I_pressure_gas, 2); // pressure reading, associated gas (1-5) / diluent (6-10), 0 if off 209 TAB_UCHAR (char_I_pressure_gas, 2); // pressure reading, associated gas (1-5) / diluent (6-10), 0 if off
225 TAB_UCHAR (char_I_pressure_age, 2); // pressure reading, age of data 210 TAB_UCHAR (char_I_pressure_age, 2); // pressure reading, age of data
226 TAB_UCHAR (char_I_pressure_stat,2); // pressure reading, transmitter status data 211 TAB_UCHAR (char_I_pressure_stat,2); // pressure reading, transmitter status data
227 212
228 VAR_UCHAR (char_I_backtrack_time); // index (in minutes) of backtrack entries in char_I_backtrack_depth 213 VAR_UCHAR (char_I_backtrack_time); // index (in minutes) of backtrack entries in char_I_backtrack_depth
214
215 VAR_UINT (int_O_profiling_overrun); // current scheduling overrun in ms
216 VAR_UINT (int_O_profiling_overrun_max); // maximum scheduling overrun in ms
217 VAR_UCHAR (char_O_profiling_overrun_phase); // calculation phase causing the maximum overrun
218 VAR_UCHAR (char_O_profiling_runs_norm); // runs per cycle for normal plan
219 VAR_UCHAR (char_O_profiling_runs_alt); // runs per cycle for alternative plan
220
221 TAB_UCHAR (char_O_deco_time_for_log, NUM_STOPS_LOG); // times of the shallowest NUM_STOPS_LOG deco stops
222
223
224 #ifdef __18CXX
225 //---- BANK 4 DATA -------------------------------------------------------
226 // Gather all Data ASM-Code --> C-Code
227 // Memory usage: 96 Byte used, 160 byte free
228 # pragma udata overlay bank4=0x400
229 #else
230 ; in ASM, put the same bank, in overlay mode, at the same address
231 bank4 equ 0x400
232 bank4 udata_ovr bank4
233 #endif
234
235 TAB_UCHAR (char_O_deco_depth, NUM_STOPS); // stops table: depth, ... | ATTENTION: do not re-arrange these
236 TAB_UCHAR (char_O_deco_time, NUM_STOPS); // ... duration, and | three arrays relative
237 TAB_UCHAR (char_O_deco_gas, NUM_STOPS); // ... gas breathed | to each other!
229 238
230 239
231 #ifdef __18CXX 240 #ifdef __18CXX
232 //---- BANK 11 DATA ------------------------------------------------------- 241 //---- BANK 11 DATA -------------------------------------------------------
233 // Backtracking Data ASM-Code --> C-Code 242 // Backtracking Data ASM-Code --> C-Code