Mercurial > public > ostc4
annotate Common/Inc/data_central.h @ 756:6de83d8205a0
Added visualization of CO2 during dive:
In the previous version CO2 values were available in sufrace mode only. Now the display of Co2 value has been added to the lower left corner view. In addition a Co2 alarm has been added. Early Co2 warning vaues will be displayed in yellow while critical values are shown in red.
author | Ideenmodellierer |
---|---|
date | Tue, 07 Mar 2023 20:02:05 +0100 |
parents | 4f19336a3f21 |
children | 29d9b5bc7946 |
rev | line source |
---|---|
38 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Common/Inc/data_central.h | |
5 /// \brief Common Dadatypes Declarations | |
6 /// \author Heinrichs Weikamp | |
7 /// \date 2018 | |
8 /// | |
9 /// $Id$ | |
10 /////////////////////////////////////////////////////////////////////////////// | |
11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh | |
12 /// | |
13 /// This program is free software: you can redistribute it and/or modify | |
14 /// it under the terms of the GNU General Public License as published by | |
15 /// the Free Software Foundation, either version 3 of the License, or | |
16 /// (at your option) any later version. | |
17 /// | |
18 /// This program is distributed in the hope that it will be useful, | |
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 /// GNU General Public License for more details. | |
22 /// | |
23 /// You should have received a copy of the GNU General Public License | |
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>. | |
25 ////////////////////////////////////////////////////////////////////////////// | |
26 | |
27 #ifndef DATA_CENTRAL_H | |
28 #define DATA_CENTRAL_H | |
29 | |
30 #include <stdint.h> | |
31 | |
32 #include "settings.h" | |
33 #include "stm32f4xx_hal.h" | |
672 | 34 #include "configuration.h" |
38 | 35 |
36 #define BUEHLMANN_STRUCT_MAX_GASES 11 | |
37 #define BUEHLMANN_STRUCT_MAX_ASCENDRATES 3 | |
38 #define DECOINFO_STRUCT_MAX_STOPS 50 | |
39 | |
40 #define false 0 | |
41 #define true 1 | |
42 | |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
43 #define EXT_INTERFACE_SENSOR_CNT (5u) /* 5 sensors may be connected to the external interface */ |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
44 |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
45 |
38 | 46 /* Helper structs ------------------------------------------------------------*/ |
47 | |
48 //struct SGas | |
49 //contains gasinfos of single gas for deco calculation | |
50 typedef struct | |
51 { | |
52 uint8_t nitrogen_percentage; | |
53 uint8_t helium_percentage; | |
54 uint8_t setPoint_cbar; | |
55 uint8_t change_during_ascent_depth_meter_otherwise_zero; | |
56 uint8_t GasIdInSettings; | |
662 | 57 uint8_t AppliedDiveMode; |
58 float pscr_factor; | |
38 | 59 } SGas; |
60 | |
61 typedef struct | |
62 { | |
63 float use_from_depth_bar; | |
64 float rate_bar_per_minute; | |
65 } SAscentrate; | |
66 | |
67 | |
68 typedef struct{ | |
69 uint32_t date_rtc_dr; | |
70 uint32_t time_rtc_tr; | |
71 int32_t value_int32; | |
72 } SDeviceLine; | |
73 | |
74 | |
75 typedef struct | |
76 { | |
77 uint16_t ageInMilliSeconds; | |
78 uint8_t numberOfBytes; | |
79 uint8_t status; | |
80 uint8_t data[12]; | |
81 } SDataWireless; | |
82 | |
662 | 83 |
84 typedef struct | |
85 { | |
748 | 86 uint32_t CO2_ppm; |
662 | 87 uint16_t signalStrength; |
88 } SCO2Sensor; | |
89 | |
38 | 90 /* Main structs -------------------------------------------------------------*/ |
91 | |
92 | |
93 //struct SDecoinfo | |
94 //contains result of deco calculation | |
95 typedef struct | |
96 { | |
97 unsigned short output_stop_length_seconds[DECOINFO_STRUCT_MAX_STOPS]; | |
98 int output_time_to_surface_seconds; | |
99 int output_ndl_seconds; | |
100 float output_ceiling_meter; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
101 float super_saturation; |
38 | 102 uint32_t tickstamp; |
103 } SDecoinfo; | |
104 | |
105 | |
106 typedef struct | |
107 { | |
108 //crushing pressure | |
109 //in/out | |
110 float max_crushing_pressure_he[16]; | |
111 float max_crushing_pressure_n2[16]; | |
112 // | |
113 float run_time_start_of_deco_zone_save; | |
114 float depth_start_of_deco_zone_save; | |
115 float max_first_stop_depth_save; | |
116 short decomode_vpm_plus_conservatism_last_dive; | |
117 _Bool deco_zone_reached; | |
118 //State variables for repetetive dives | |
119 _Bool repetitive_variables_not_valid; | |
120 float adjusted_crushing_pressure_he[16]; | |
121 float adjusted_crushing_pressure_n2[16]; | |
122 float adjusted_critical_radius_he[16]; | |
123 float adjusted_critical_radius_n2[16]; | |
124 float initial_allowable_gradient_he[16]; | |
125 float initial_allowable_gradient_n2[16]; | |
126 float max_actual_gradient[16]; | |
127 } SVpm; | |
128 | |
129 typedef struct | |
130 { | |
131 _Bool repetitive_variables_not_valid; | |
132 _Bool is_data_from_RTE_CPU; | |
133 _Bool spare2; | |
134 _Bool spare3; | |
135 float adjusted_crushing_pressure_he[16]; | |
136 float adjusted_crushing_pressure_n2[16]; | |
137 float adjusted_critical_radius_he[16]; | |
138 float adjusted_critical_radius_n2[16]; | |
139 float initial_allowable_gradient_he[16]; | |
140 float initial_allowable_gradient_n2[16]; | |
141 float max_actual_gradient[16]; | |
142 } SVpmRepetitiveData; | |
143 | |
144 //struct SDevice | |
145 //contains information about usage | |
146 typedef struct | |
147 { | |
148 SDeviceLine batteryChargeCycles; | |
149 SDeviceLine batteryChargeCompleteCycles; | |
150 SDeviceLine temperatureMinimum; | |
151 SDeviceLine temperatureMaximum; | |
152 SDeviceLine depthMaximum; | |
153 SDeviceLine diveCycles; | |
154 SDeviceLine voltageMinimum; | |
155 SDeviceLine hoursOfOperation; | |
156 SDeviceLine diveAccident; | |
157 } SDevice; | |
158 | |
159 /* | |
160 typedef struct | |
161 { | |
162 SDevice device; | |
163 SVpmRepetitiveData vpm; | |
164 } SDeviceState; | |
165 */ | |
166 | |
167 /* struct SLifeData | |
168 * contains data all actual data (pressure, stuturation, etc. as received from second ship | |
169 * and has actualGas to be send to Small CPU (second chip) | |
170 * contains data calculated from actual data after receiption from Small CPU | |
171 */ | |
172 typedef struct | |
173 { | |
174 /* from Small CPU */ | |
752
4f19336a3f21
Dev Bugfix: Alignment problem in lifedata structure:
Ideenmodellierer
parents:
748
diff
changeset
|
175 uint8_t extIf_sensor_data[32]; /* The external sensor may contain a 64 bit ID. It has been placed at the beginning of the structure to avoid problems in alignment */ |
4f19336a3f21
Dev Bugfix: Alignment problem in lifedata structure:
Ideenmodellierer
parents:
748
diff
changeset
|
176 uint8_t extIf_sensor_map[EXT_INTERFACE_SENSOR_CNT]; |
4f19336a3f21
Dev Bugfix: Alignment problem in lifedata structure:
Ideenmodellierer
parents:
748
diff
changeset
|
177 |
38 | 178 int32_t dive_time_seconds; |
179 int32_t dive_time_seconds_without_surface_time; | |
180 uint32_t surface_time_seconds; | |
181 float pressure_ambient_bar; | |
182 float pressure_surface_bar; | |
183 float tissue_nitrogen_bar[16]; | |
184 float tissue_helium_bar[16]; | |
185 float cns; | |
186 float otu; | |
187 uint16_t desaturation_time_minutes; | |
188 uint16_t no_fly_time_minutes; | |
189 float temperature_celsius; | |
190 float compass_heading; | |
191 float compass_roll; | |
192 float compass_pitch; | |
193 int16_t compass_DX_f; | |
194 int16_t compass_DY_f; | |
195 int16_t compass_DZ_f; | |
196 uint16_t counterSecondsShallowDepth; | |
197 float ascent_rate_meter_per_min; | |
198 uint32_t timeBinaryFormat; | |
199 uint32_t dateBinaryFormat; | |
200 float battery_voltage; | |
201 float battery_charge; | |
202 uint16_t ambient_light_level; | |
203 SDataWireless wireless_data[4]; | |
204 uint8_t buttonPICdata[4]; | |
662 | 205 SCO2Sensor CO2_data; |
714
045ff7800501
Added customizable data area for specific sensor data:
Ideenmodellierer
parents:
672
diff
changeset
|
206 uint8_t extIf_sensor_Id; |
38 | 207 |
208 /* by create DiveSettings() and by setActualGas() | |
209 * is send to Small CPU2 for nitrogen calculation | |
210 * includes setpoint information | |
211 */ | |
212 SGas actualGas; | |
213 uint8_t lastDiluent_GasIdInSettings; | |
214 uint8_t gas_temp2; | |
215 | |
216 /* calculated by DataEX_copy_to_LifeData() | |
217 bottle_bar array size is made like this to have multiples of 32bit | |
218 */ | |
219 float ppO2; | |
220 float depth_meter; | |
221 float max_depth_meter; | |
222 float average_depth_meter; | |
223 float apnea_total_max_depth_meter; | |
224 float apnea_last_max_depth_meter; | |
225 int32_t apnea_last_dive_time_seconds; | |
226 uint16_t bottle_bar[2 * NUM_GASES +1]; | |
227 uint16_t bottle_bar_age_MilliSeconds[2 * NUM_GASES + 1]; | |
228 uint16_t apnea_total_counter; | |
229 | |
230 /* control of DataEX_copy_to_LifeData() | |
231 */ | |
232 uint8_t boolResetAverageDepth; | |
233 uint8_t bool_temp1; | |
234 uint8_t bool_temp2; | |
235 | |
236 /* from local sensor or direct HUD communication */ | |
237 //pp O2 Sensor | |
238 float ppO2Sensor_bar[3]; | |
239 float sensorVoltage_mV[3]; | |
240 float HUD_battery_voltage_V; | |
662 | 241 |
242 /* for PSCR Mode */ | |
243 float ppo2Simulated_bar; | |
38 | 244 } SLifeData; |
245 | |
246 | |
247 typedef struct | |
248 { | |
249 uint16_t tissue_nitrogen_desaturation_time_minutes[16]; | |
250 uint16_t tissue_helium_desaturation_time_minutes[16]; | |
251 } SLifeData2; | |
252 | |
253 | |
254 typedef struct | |
255 { | |
256 //warnings | |
257 int8_t decoMissed; | |
258 int8_t aGf; | |
259 int8_t ascentRateHigh; | |
260 int8_t ppO2Low; | |
261 int8_t ppO2High; | |
262 int8_t cnsHigh; | |
263 int8_t slowWarning; | |
264 int8_t lowBattery; | |
265 int8_t numWarnings; | |
266 int8_t sensorLinkLost; | |
267 int8_t sensorOutOfBounds[3]; | |
268 int8_t betterGas; | |
269 int8_t fallback; | |
270 int8_t betterSetpoint; | |
752
4f19336a3f21
Dev Bugfix: Alignment problem in lifedata structure:
Ideenmodellierer
parents:
748
diff
changeset
|
271 int8_t co2High; |
478
58200d756365
Development option only: Show Pressure update for a short time in the custom field (as warning)
ideenmodellierer
parents:
309
diff
changeset
|
272 #ifdef ENABLE_BOTTLE_SENSOR |
58200d756365
Development option only: Show Pressure update for a short time in the custom field (as warning)
ideenmodellierer
parents:
309
diff
changeset
|
273 int8_t newPressure; |
58200d756365
Development option only: Show Pressure update for a short time in the custom field (as warning)
ideenmodellierer
parents:
309
diff
changeset
|
274 #endif |
38 | 275 } SWarnings; |
276 | |
277 | |
278 typedef struct | |
279 { | |
280 //Events logbook only | |
281 int16_t manualMarker; | |
282 int16_t gasChange; | |
283 int16_t info_GasChange; | |
284 int16_t setpointChange; | |
285 int16_t info_SetpointChange; | |
281 | 286 int16_t manualGasSet; |
287 int16_t info_manualGasSetHe; | |
288 int16_t info_manualGasSetO2; | |
38 | 289 int16_t bailout; |
290 int16_t info_bailoutHe; | |
291 int16_t info_bailoutO2; | |
292 } SEvents; | |
293 | |
294 | |
295 | |
296 //struct SDiveSettings | |
297 //contains settings necessary for deco calculation | |
298 typedef struct | |
299 { | |
300 float last_stop_depth_bar; | |
301 float input_next_stop_increment_depth_bar; | |
302 float input_second_to_last_stop_depth_bar; | |
303 float ascentRate_meterperminute; | |
304 uint8_t diveMode; /* OC, CC, .. */ | |
305 uint8_t CCR_Mode; | |
306 uint8_t future_TTS_minutes; | |
307 | |
308 /* If beginning of dive is CCR than ccrOption is set true | |
309 * true allows returning from bailout (OC) back to CCR | |
310 * true activates CC gas and setpoint pages in dive menu | |
311 */ | |
312 uint8_t ccrOption; | |
313 uint8_t fallbackOption; | |
314 uint8_t ppo2sensors_deactivated; | |
315 | |
316 split2x4_Type deco_type; /* GF or VPM for standard and alternative seperate */ | |
317 | |
318 /* VPM conservatism, do not change during dive!!! | |
319 * do not change in between dives otherwise repetitve dive is not possible | |
320 */ | |
321 uint8_t vpm_conservatism; | |
322 | |
323 /* B�hlmann GF | |
324 * and a variable that is used by Buehlmann during the dive | |
325 * to remember the position of GF low during ascend | |
326 */ | |
327 uint8_t gf_high; | |
328 uint8_t gf_low; | |
329 | |
330 /* copy of the Settings GasList and SetpintList | |
331 * that can be modified during the dive | |
332 * especially gases can be actived and deactivated | |
333 * gas[0] and setpoint[0] are the special ones configurable during the dive | |
334 */ | |
335 SGasLine gas[1 + (2*NUM_GASES)]; | |
336 SSetpointLine setpoint[1 + NUM_GASES]; | |
337 | |
338 /* List of GasChanges in the actual order | |
339 * this is necessary for VPM and Buehlmann and will be created on start of each calculation | |
340 */ | |
341 SGas decogaslist[BUEHLMANN_STRUCT_MAX_GASES]; // unused filled with 0xFF | |
342 | |
343 /* | |
344 */ | |
345 float internal__pressure_first_stop_ambient_bar_as_upper_limit_for_gf_low_otherwise_zero; | |
346 uint16_t compassHeading; | |
662 | 347 |
348 uint8_t pscr_o2_drop; | |
349 uint8_t pscr_lung_ratio; | |
38 | 350 } SDiveSettings; |
351 | |
352 enum CHARGE_STATUS{ | |
353 CHARGER_off = 0, | |
354 CHARGER_running, | |
355 CHARGER_complete, | |
356 CHARGER_lostConnection | |
357 }; | |
358 | |
359 typedef struct | |
360 { | |
361 SDiveSettings diveSettings; | |
362 SLifeData lifeData; | |
363 SVpm vpm; | |
364 SEvents events; | |
365 SWarnings warnings; | |
366 SDecoinfo decolistVPM; | |
367 SDecoinfo decolistFutureVPM; | |
368 SDecoinfo decolistBuehlmann; // | |
369 SDecoinfo decolistFutureBuehlmann; | |
370 uint8_t mode; /* hw for sleep, surface, dive, .. */ | |
371 uint8_t chargeStatus; | |
372 uint8_t data_old__lost_connection_to_slave; | |
373 | |
374 uint32_t pressure_uTick_new; | |
375 uint32_t compass_uTick_new; | |
376 | |
377 uint32_t pressure_uTick_old; | |
378 uint32_t compass_uTick_old; | |
379 | |
380 uint32_t pressure_uTick_local_new; | |
381 uint32_t compass_uTick_local_new; | |
382 | |
383 uint8_t cnsHigh_at_the_end_of_dive; | |
384 uint8_t decoMissed_at_the_end_of_dive; | |
385 | |
386 uint8_t sensorErrorsRTE; | |
387 | |
388 uint8_t lastKnownBatteryPercentage; | |
389 } SDiveState; | |
390 | |
391 | |
392 typedef struct{ | |
393 uint8_t bit0:1; | |
394 uint8_t bit1:1; | |
395 uint8_t bit2:1; | |
396 uint8_t bit3:1; | |
397 uint8_t bit4:1; | |
398 uint8_t bit5:1; | |
399 uint8_t bit6:1; | |
400 uint8_t bit7:1; | |
401 } ubit8_t; | |
402 | |
403 typedef union{ | |
404 ubit8_t ub; | |
405 uint8_t uw; | |
406 } bit8_Type; | |
407 | |
408 extern SDiveState stateSim; | |
409 extern SDiveState stateDeco; | |
410 extern uint8_t decoLock; | |
271
1303747b5ba2
cleanup: also write gas and setpoint changes in simulator mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
270
diff
changeset
|
411 extern const SDiveState *stateUsed; |
1303747b5ba2
cleanup: also write gas and setpoint changes in simulator mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
270
diff
changeset
|
412 extern SDiveState *stateUsedWrite; |
38 | 413 |
414 enum DECO_LOCK{ | |
415 DECO_CALC_running, | |
416 DECO_CALC_ready, | |
417 DECO_CALC_FINSHED_Buehlmann, | |
418 DECO_CALC_FINSHED_vpm, | |
419 DECO_CALC_FINSHED_FutureBuehlmann, | |
420 DECO_CALC_FINSHED_Futurevpm, | |
421 DECO_CALC_init_as_is_start_of_dive, | |
422 DECO_CALC_undefined | |
423 }; | |
424 | |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
425 typedef enum |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
426 { |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
427 SENSOR_NONE, |
745 | 428 SENSOR_SEARCH, |
733 | 429 SENSOR_OPTIC, |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
430 SENSOR_ANALOG, |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
431 SENSOR_DIGO2, |
745 | 432 SENSOR_SENTINEL, |
433 SENSOR_TYPE_O2_END, | |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
434 SENSOR_CO2, |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
435 SENSOR_END |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
436 } externalInterfaceSensorType; |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
437 |
745 | 438 #define DVO2_FATAL_INTENSITY_LOW (0x00000001) |
439 #define DVO2_FATAL_AMBIENT_HIGH (0x00000002) | |
440 #define DVO2_FATAL_REFINT_LOW (0x00000004) | |
441 #define DVO2_FATAL_REFAMB_HIGH (0x00000008) | |
442 #define DVO2_FATAL_TEMPERATURE (0x00000010) | |
443 | |
444 #define DVO2_FATAL_ERROR (DVO2_FATAL_INTENSITY_LOW | DVO2_FATAL_AMBIENT_HIGH | DVO2_FATAL_REFINT_LOW | DVO2_FATAL_REFAMB_HIGH | DVO2_FATAL_TEMPERATURE) | |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
445 |
38 | 446 uint32_t time_elapsed_ms(uint32_t ticksstart,uint32_t ticksnow); |
447 | |
448 void set_stateUsedToSim(void); | |
449 void set_stateUsedToReal(void); | |
450 | |
451 _Bool is_stateUsedSetToSim(void); | |
452 | |
453 const SDiveState * stateRealGetPointer(void); | |
454 const SDiveState * stateSimGetPointer(void); | |
455 SDiveState * stateRealGetPointerWrite(void); | |
456 SDiveState * stateSimGetPointerWrite(void); | |
457 const SDevice * stateDeviceGetPointer(void); | |
458 SDevice * stateDeviceGetPointerWrite(void); | |
459 const SVpmRepetitiveData * stateVpmRepetitiveDataGetPointer(void); | |
460 SVpmRepetitiveData * stateVpmRepetitiveDataGetPointerWrite(void); | |
461 | |
462 void UpdateLifeDataTest(SDiveState * diveState); | |
463 | |
464 void setSimulationValues(int _ascent_rate_meter_per_min, int _descent_rate_meter_per_min, int _max_depth, int _bottom_time ); | |
465 | |
466 void createDiveSettings(void); | |
467 void copyDiveSettingsToSim(void); | |
468 void copyVpmRepetetiveDataToSim(void); | |
469 //void fallbackToFixedSetpoints(SLifeData *lifeData); | |
470 void setActualGasFirst(SLifeData *lifeData); | |
471 void setActualGasAir(SLifeData *lifeData); | |
472 void setActualGas(SLifeData *lifeData, uint8_t gasId, uint8_t setpoint_cbar); | |
473 void setActualGas_ExtraGas(SLifeData *lifeData, uint8_t oxygen, uint8_t helium, uint8_t setpoint_cbar); | |
474 void setActualGas_DM(SLifeData *lifeData, uint8_t gasId, uint8_t setpoint_cbar); | |
475 void setWeekday(RTC_DateTypeDef *sDate); | |
476 void setDate(RTC_DateTypeDef Sdate); | |
477 void setTime(RTC_TimeTypeDef Stime); | |
478 void setBatteryPercentage(uint8_t newChargePercentage); | |
479 void setButtonResponsiveness(uint8_t *ButtonSensitivyList); | |
480 void calibrateCompass(void); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
478
diff
changeset
|
481 void compass_Inertia(float newHeading); |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
478
diff
changeset
|
482 float compass_getCompensated(); |
38 | 483 void clearDeco(void); |
484 void translateDate(uint32_t datetmpreg, RTC_DateTypeDef *sDate); | |
485 void translateTime(uint32_t tmpreg, RTC_TimeTypeDef *sTime); | |
486 void updateSetpointStateUsed(void); | |
487 | |
488 uint8_t calc_MOD(uint8_t gasId); | |
489 uint8_t calc_MinOD(uint8_t gasId); | |
490 //float calc_ppO2(float input_ambient_pressure_bar, SGas* pGas); | |
491 int current_second(void); | |
492 _Bool vpm_crush(SDiveState* pDiveState); | |
493 _Bool deco_zone_reached(void); | |
270
2e58a4094770
feature, debug: make simulator write a logbook entry
Jan Mulder <jlmulder@xs4all.nl>
parents:
247
diff
changeset
|
494 void resetEvents(const SDiveState *pStateUsed); |
38 | 495 |
496 uint32_t crc32c_checksum(uint8_t* message, uint16_t length, uint8_t* message2, uint16_t length2); | |
497 uint32_t CRC_CalcBlockCRC(uint32_t *buffer, uint32_t words); | |
498 uint32_t CRC_CalcBlockCRC_moreThan768000(uint32_t *buffer1, uint32_t *buffer2, uint32_t words); | |
499 | |
500 _Bool is_ambient_pressure_close_to_surface(SLifeData *lifeData); | |
501 | |
662 | 502 uint8_t isLoopMode(uint8_t Mode); |
503 | |
38 | 504 #endif // DATA_CENTRAL_H |