Mercurial > public > hwos_code
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 |