Mercurial > public > ostc4
annotate Common/Inc/data_central.h @ 929:63c340abd70e Evo_2_23 tip
Add a line to the compass heading dive menu that shows the currently set heading to enable the
diver to confirm it / add it to notes.
Also add a log entry every time a new compass heading is set or the heading is cleared.
And add a way to add compass headings to the log without changing the currently set heading -
this was added after discussion with cave divers who are interested in recording headings
when mapping out caves.
From mikeller
author | heinrichsweikamp |
---|---|
date | Mon, 02 Dec 2024 11:16:10 +0100 |
parents | 79c888f5d8d2 |
children |
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> | |
776
45b8f3c2acce
Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents:
774
diff
changeset
|
31 #include <stdbool.h> |
38 | 32 |
33 #include "settings.h" | |
34 #include "stm32f4xx_hal.h" | |
672 | 35 #include "configuration.h" |
38 | 36 |
37 #define BUEHLMANN_STRUCT_MAX_GASES 11 | |
38 #define BUEHLMANN_STRUCT_MAX_ASCENDRATES 3 | |
39 #define DECOINFO_STRUCT_MAX_STOPS 50 | |
40 | |
41 #define false 0 | |
42 #define true 1 | |
43 | |
796 | 44 #define EXT_INTERFACE_SENSOR_CNT (8u) /* 1 MUX + 7 sensors may be connected to the external interface (1 MUX + 3 ADC + 4 UART) */ |
45 #define EXT_INTERFACE_MUX_OFFSET (3u) /* the sensor struct starts with 3 ADC sensors */ | |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
46 |
38 | 47 /* Helper structs ------------------------------------------------------------*/ |
48 | |
49 //struct SGas | |
50 //contains gasinfos of single gas for deco calculation | |
51 typedef struct | |
52 { | |
53 uint8_t nitrogen_percentage; | |
54 uint8_t helium_percentage; | |
55 uint8_t setPoint_cbar; | |
56 uint8_t change_during_ascent_depth_meter_otherwise_zero; | |
57 uint8_t GasIdInSettings; | |
662 | 58 uint8_t AppliedDiveMode; |
59 float pscr_factor; | |
38 | 60 } SGas; |
61 | |
62 typedef struct | |
63 { | |
64 float use_from_depth_bar; | |
65 float rate_bar_per_minute; | |
66 } SAscentrate; | |
67 | |
68 | |
69 typedef struct{ | |
70 uint32_t date_rtc_dr; | |
71 uint32_t time_rtc_tr; | |
72 int32_t value_int32; | |
73 } SDeviceLine; | |
74 | |
75 | |
76 typedef struct | |
77 { | |
78 uint16_t ageInMilliSeconds; | |
79 uint8_t numberOfBytes; | |
80 uint8_t status; | |
81 uint8_t data[12]; | |
82 } SDataWireless; | |
83 | |
662 | 84 |
85 typedef struct | |
86 { | |
748 | 87 uint32_t CO2_ppm; |
662 | 88 uint16_t signalStrength; |
89 } SCO2Sensor; | |
90 | |
38 | 91 /* Main structs -------------------------------------------------------------*/ |
92 | |
93 | |
94 //struct SDecoinfo | |
95 //contains result of deco calculation | |
96 typedef struct | |
97 { | |
98 unsigned short output_stop_length_seconds[DECOINFO_STRUCT_MAX_STOPS]; | |
99 int output_time_to_surface_seconds; | |
100 int output_ndl_seconds; | |
101 float output_ceiling_meter; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
102 float super_saturation; |
38 | 103 uint32_t tickstamp; |
104 } SDecoinfo; | |
105 | |
106 | |
107 typedef struct | |
108 { | |
109 //crushing pressure | |
110 //in/out | |
111 float max_crushing_pressure_he[16]; | |
112 float max_crushing_pressure_n2[16]; | |
113 // | |
114 float run_time_start_of_deco_zone_save; | |
115 float depth_start_of_deco_zone_save; | |
116 float max_first_stop_depth_save; | |
117 short decomode_vpm_plus_conservatism_last_dive; | |
118 _Bool deco_zone_reached; | |
119 //State variables for repetetive dives | |
120 _Bool repetitive_variables_not_valid; | |
121 float adjusted_crushing_pressure_he[16]; | |
122 float adjusted_crushing_pressure_n2[16]; | |
123 float adjusted_critical_radius_he[16]; | |
124 float adjusted_critical_radius_n2[16]; | |
125 float initial_allowable_gradient_he[16]; | |
126 float initial_allowable_gradient_n2[16]; | |
127 float max_actual_gradient[16]; | |
128 } SVpm; | |
129 | |
130 typedef struct | |
131 { | |
132 _Bool repetitive_variables_not_valid; | |
133 _Bool is_data_from_RTE_CPU; | |
134 _Bool spare2; | |
135 _Bool spare3; | |
136 float adjusted_crushing_pressure_he[16]; | |
137 float adjusted_crushing_pressure_n2[16]; | |
138 float adjusted_critical_radius_he[16]; | |
139 float adjusted_critical_radius_n2[16]; | |
140 float initial_allowable_gradient_he[16]; | |
141 float initial_allowable_gradient_n2[16]; | |
142 float max_actual_gradient[16]; | |
143 } SVpmRepetitiveData; | |
144 | |
145 //struct SDevice | |
146 //contains information about usage | |
147 typedef struct | |
148 { | |
149 SDeviceLine batteryChargeCycles; | |
150 SDeviceLine batteryChargeCompleteCycles; | |
151 SDeviceLine temperatureMinimum; | |
152 SDeviceLine temperatureMaximum; | |
153 SDeviceLine depthMaximum; | |
154 SDeviceLine diveCycles; | |
155 SDeviceLine voltageMinimum; | |
156 SDeviceLine hoursOfOperation; | |
157 SDeviceLine diveAccident; | |
158 } SDevice; | |
159 | |
160 /* | |
161 typedef struct | |
162 { | |
163 SDevice device; | |
164 SVpmRepetitiveData vpm; | |
165 } SDeviceState; | |
166 */ | |
167 | |
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
168 typedef struct |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
169 { |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
170 float Longitude; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
171 float Latitude; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
172 } SPositionData; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
173 |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
174 |
38 | 175 /* struct SLifeData |
176 * contains data all actual data (pressure, stuturation, etc. as received from second ship | |
177 * and has actualGas to be send to Small CPU (second chip) | |
178 * contains data calculated from actual data after receiption from Small CPU | |
179 */ | |
180 typedef struct | |
181 { | |
182 /* from Small CPU */ | |
780 | 183 uint8_t extIf_sensor_data[3][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 */ |
752
4f19336a3f21
Dev Bugfix: Alignment problem in lifedata structure:
Ideenmodellierer
parents:
748
diff
changeset
|
184 uint8_t extIf_sensor_map[EXT_INTERFACE_SENSOR_CNT]; |
4f19336a3f21
Dev Bugfix: Alignment problem in lifedata structure:
Ideenmodellierer
parents:
748
diff
changeset
|
185 |
38 | 186 int32_t dive_time_seconds; |
187 int32_t dive_time_seconds_without_surface_time; | |
188 uint32_t surface_time_seconds; | |
189 float pressure_ambient_bar; | |
190 float pressure_surface_bar; | |
191 float tissue_nitrogen_bar[16]; | |
192 float tissue_helium_bar[16]; | |
193 float cns; | |
194 float otu; | |
195 uint16_t desaturation_time_minutes; | |
196 uint16_t no_fly_time_minutes; | |
197 float temperature_celsius; | |
198 float compass_heading; | |
199 float compass_roll; | |
200 float compass_pitch; | |
201 int16_t compass_DX_f; | |
202 int16_t compass_DY_f; | |
203 int16_t compass_DZ_f; | |
204 uint16_t counterSecondsShallowDepth; | |
205 float ascent_rate_meter_per_min; | |
206 uint32_t timeBinaryFormat; | |
207 uint32_t dateBinaryFormat; | |
208 float battery_voltage; | |
209 float battery_charge; | |
210 uint16_t ambient_light_level; | |
211 SDataWireless wireless_data[4]; | |
212 uint8_t buttonPICdata[4]; | |
662 | 213 SCO2Sensor CO2_data; |
714
045ff7800501
Added customizable data area for specific sensor data:
Ideenmodellierer
parents:
672
diff
changeset
|
214 uint8_t extIf_sensor_Id; |
38 | 215 |
216 /* by create DiveSettings() and by setActualGas() | |
217 * is send to Small CPU2 for nitrogen calculation | |
218 * includes setpoint information | |
219 */ | |
220 SGas actualGas; | |
771
29d9b5bc7946
Revised automatic setpoint change. The proposed approach is essentially the approach used by most controllers of eCCR ('upshift' on descent, 'downshift' on ascent), so that the OSTC4 when used as a backup computer for eCCR will make the changes at the same time as the eCCR itself.
heinrichsweikamp
parents:
752
diff
changeset
|
221 |
38 | 222 uint8_t lastDiluent_GasIdInSettings; |
771
29d9b5bc7946
Revised automatic setpoint change. The proposed approach is essentially the approach used by most controllers of eCCR ('upshift' on descent, 'downshift' on ascent), so that the OSTC4 when used as a backup computer for eCCR will make the changes at the same time as the eCCR itself.
heinrichsweikamp
parents:
752
diff
changeset
|
223 float lastSetpointChangeDepthM; |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
780
diff
changeset
|
224 bool setpointDecoActivated; |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
780
diff
changeset
|
225 bool setpointLowDelayed; |
38 | 226 |
227 /* calculated by DataEX_copy_to_LifeData() | |
228 bottle_bar array size is made like this to have multiples of 32bit | |
229 */ | |
230 float ppO2; | |
231 float depth_meter; | |
232 float max_depth_meter; | |
233 float average_depth_meter; | |
234 float apnea_total_max_depth_meter; | |
235 float apnea_last_max_depth_meter; | |
236 int32_t apnea_last_dive_time_seconds; | |
237 uint16_t bottle_bar[2 * NUM_GASES +1]; | |
238 uint16_t bottle_bar_age_MilliSeconds[2 * NUM_GASES + 1]; | |
239 uint16_t apnea_total_counter; | |
240 | |
241 /* control of DataEX_copy_to_LifeData() | |
242 */ | |
243 uint8_t boolResetAverageDepth; | |
244 uint8_t bool_temp1; | |
245 uint8_t bool_temp2; | |
246 | |
247 /* from local sensor or direct HUD communication */ | |
248 //pp O2 Sensor | |
249 float ppO2Sensor_bar[3]; | |
250 float sensorVoltage_mV[3]; | |
251 float HUD_battery_voltage_V; | |
662 | 252 |
253 /* for PSCR Mode */ | |
254 float ppo2Simulated_bar; | |
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
255 /* GNSS data */ |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
256 SPositionData gnssPosition; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
868
diff
changeset
|
257 |
38 | 258 } SLifeData; |
259 | |
260 | |
261 typedef struct | |
262 { | |
263 uint16_t tissue_nitrogen_desaturation_time_minutes[16]; | |
264 uint16_t tissue_helium_desaturation_time_minutes[16]; | |
265 } SLifeData2; | |
266 | |
267 | |
268 typedef struct | |
269 { | |
270 //warnings | |
271 int8_t decoMissed; | |
272 int8_t aGf; | |
273 int8_t ascentRateHigh; | |
274 int8_t ppO2Low; | |
275 int8_t ppO2High; | |
276 int8_t cnsHigh; | |
277 int8_t slowWarning; | |
278 int8_t lowBattery; | |
279 int8_t numWarnings; | |
280 int8_t sensorLinkLost; | |
281 int8_t sensorOutOfBounds[3]; | |
282 int8_t betterGas; | |
283 int8_t fallback; | |
284 int8_t betterSetpoint; | |
752
4f19336a3f21
Dev Bugfix: Alignment problem in lifedata structure:
Ideenmodellierer
parents:
748
diff
changeset
|
285 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
|
286 #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
|
287 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
|
288 #endif |
857 | 289 #ifdef HAVE_DEBUG_WARNINGS |
290 int8_t debug; | |
291 #endif | |
38 | 292 } SWarnings; |
293 | |
294 | |
295 typedef struct | |
296 { | |
297 //Events logbook only | |
298 int16_t manualMarker; | |
299 int16_t gasChange; | |
300 int16_t info_GasChange; | |
301 int16_t setpointChange; | |
302 int16_t info_SetpointChange; | |
281 | 303 int16_t manualGasSet; |
304 int16_t info_manualGasSetHe; | |
305 int16_t info_manualGasSetO2; | |
38 | 306 int16_t bailout; |
307 int16_t info_bailoutHe; | |
308 int16_t info_bailoutO2; | |
929
63c340abd70e
Add a line to the compass heading dive menu that shows the currently set heading to enable the
heinrichsweikamp
parents:
925
diff
changeset
|
309 int16_t compassHeadingUpdate; |
63c340abd70e
Add a line to the compass heading dive menu that shows the currently set heading to enable the
heinrichsweikamp
parents:
925
diff
changeset
|
310 uint16_t info_compassHeadingUpdate; |
63c340abd70e
Add a line to the compass heading dive menu that shows the currently set heading to enable the
heinrichsweikamp
parents:
925
diff
changeset
|
311 } SEvents; |
38 | 312 |
313 | |
314 | |
315 //struct SDiveSettings | |
316 //contains settings necessary for deco calculation | |
317 typedef struct | |
318 { | |
319 float last_stop_depth_bar; | |
320 float input_next_stop_increment_depth_bar; | |
321 float input_second_to_last_stop_depth_bar; | |
322 float ascentRate_meterperminute; | |
323 uint8_t diveMode; /* OC, CC, .. */ | |
324 uint8_t CCR_Mode; | |
325 uint8_t future_TTS_minutes; | |
326 | |
327 /* If beginning of dive is CCR than ccrOption is set true | |
328 * true allows returning from bailout (OC) back to CCR | |
329 * true activates CC gas and setpoint pages in dive menu | |
330 */ | |
331 uint8_t ccrOption; | |
332 uint8_t fallbackOption; | |
333 uint8_t ppo2sensors_deactivated; | |
334 | |
335 split2x4_Type deco_type; /* GF or VPM for standard and alternative seperate */ | |
336 | |
337 /* VPM conservatism, do not change during dive!!! | |
338 * do not change in between dives otherwise repetitve dive is not possible | |
339 */ | |
340 uint8_t vpm_conservatism; | |
341 | |
902 | 342 /* VPM table mode, do not change during dive!!! |
343 */ | |
344 uint8_t vpm_tableMode; | |
345 | |
38 | 346 /* B�hlmann GF |
347 * and a variable that is used by Buehlmann during the dive | |
348 * to remember the position of GF low during ascend | |
349 */ | |
350 uint8_t gf_high; | |
351 uint8_t gf_low; | |
352 | |
353 /* copy of the Settings GasList and SetpintList | |
354 * that can be modified during the dive | |
355 * especially gases can be actived and deactivated | |
356 * gas[0] and setpoint[0] are the special ones configurable during the dive | |
357 */ | |
358 SGasLine gas[1 + (2*NUM_GASES)]; | |
359 SSetpointLine setpoint[1 + NUM_GASES]; | |
360 | |
361 /* List of GasChanges in the actual order | |
362 * this is necessary for VPM and Buehlmann and will be created on start of each calculation | |
363 */ | |
364 SGas decogaslist[BUEHLMANN_STRUCT_MAX_GASES]; // unused filled with 0xFF | |
365 | |
366 /* | |
367 */ | |
368 float internal__pressure_first_stop_ambient_bar_as_upper_limit_for_gf_low_otherwise_zero; | |
369 uint16_t compassHeading; | |
662 | 370 |
371 uint8_t pscr_o2_drop; | |
372 uint8_t pscr_lung_ratio; | |
834
2a8af51ab04d
Added event based display changes for big font view:
Ideenmodellierer
parents:
805
diff
changeset
|
373 |
2a8af51ab04d
Added event based display changes for big font view:
Ideenmodellierer
parents:
805
diff
changeset
|
374 uint32_t activeAFViews; |
38 | 375 } SDiveSettings; |
376 | |
377 enum CHARGE_STATUS{ | |
378 CHARGER_off = 0, | |
379 CHARGER_running, | |
380 CHARGER_complete, | |
381 CHARGER_lostConnection | |
382 }; | |
383 | |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
384 typedef enum { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
385 TIMER_STATE_OFF = 0, |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
386 TIMER_STATE_PRESTART, |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
387 TIMER_STATE_RUNNING, |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
388 TIMER_STATE_WAIT_FINISHED, |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
389 TIMER_STATE_FINISHED, |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
390 } timerState_e; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
391 |
38 | 392 typedef struct |
393 { | |
394 SDiveSettings diveSettings; | |
395 SLifeData lifeData; | |
396 SVpm vpm; | |
397 SEvents events; | |
398 SWarnings warnings; | |
399 SDecoinfo decolistVPM; | |
400 SDecoinfo decolistFutureVPM; | |
401 SDecoinfo decolistBuehlmann; // | |
402 SDecoinfo decolistFutureBuehlmann; | |
403 uint8_t mode; /* hw for sleep, surface, dive, .. */ | |
404 uint8_t chargeStatus; | |
405 uint8_t data_old__lost_connection_to_slave; | |
406 | |
407 uint32_t pressure_uTick_new; | |
408 uint32_t compass_uTick_new; | |
409 | |
410 uint32_t pressure_uTick_old; | |
411 uint32_t compass_uTick_old; | |
412 | |
413 uint32_t pressure_uTick_local_new; | |
414 uint32_t compass_uTick_local_new; | |
415 | |
416 uint8_t cnsHigh_at_the_end_of_dive; | |
417 uint8_t decoMissed_at_the_end_of_dive; | |
418 | |
419 uint8_t sensorErrorsRTE; | |
420 | |
421 uint8_t lastKnownBatteryPercentage; | |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
422 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
423 timerState_e timerState; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
424 int timerStartedS; |
925 | 425 |
426 SScrubberData scrubberDataDive[2]; | |
38 | 427 } SDiveState; |
428 | |
429 | |
430 typedef struct{ | |
431 uint8_t bit0:1; | |
432 uint8_t bit1:1; | |
433 uint8_t bit2:1; | |
434 uint8_t bit3:1; | |
435 uint8_t bit4:1; | |
436 uint8_t bit5:1; | |
437 uint8_t bit6:1; | |
438 uint8_t bit7:1; | |
439 } ubit8_t; | |
440 | |
441 typedef union{ | |
442 ubit8_t ub; | |
443 uint8_t uw; | |
444 } bit8_Type; | |
445 | |
446 extern SDiveState stateSim; | |
447 extern SDiveState stateDeco; | |
448 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
|
449 extern const SDiveState *stateUsed; |
1303747b5ba2
cleanup: also write gas and setpoint changes in simulator mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
270
diff
changeset
|
450 extern SDiveState *stateUsedWrite; |
38 | 451 |
452 enum DECO_LOCK{ | |
453 DECO_CALC_running, | |
454 DECO_CALC_ready, | |
455 DECO_CALC_FINSHED_Buehlmann, | |
456 DECO_CALC_FINSHED_vpm, | |
457 DECO_CALC_FINSHED_FutureBuehlmann, | |
458 DECO_CALC_FINSHED_Futurevpm, | |
459 DECO_CALC_init_as_is_start_of_dive, | |
460 DECO_CALC_undefined | |
461 }; | |
462 | |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
463 typedef enum |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
464 { |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
465 SENSOR_NONE, |
745 | 466 SENSOR_SEARCH, |
733 | 467 SENSOR_OPTIC, |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
468 SENSOR_ANALOG, |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
469 SENSOR_DIGO2, |
796 | 470 SENSOR_DIGO2M, |
745 | 471 SENSOR_SENTINEL, |
842
c3dd461ca3f9
Migrated Sentinel protocol to new UART structure:
Ideenmodellierer
parents:
834
diff
changeset
|
472 SENSOR_SENTINELM, |
745 | 473 SENSOR_TYPE_O2_END, |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
474 SENSOR_CO2, |
799 | 475 SENSOR_CO2M, |
920 | 476 SENSOR_GNSS, |
477 SENSOR_GNSSM, | |
780 | 478 SENSOR_MUX, |
728
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
479 SENSOR_END |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
480 } externalInterfaceSensorType; |
5143e927219f
Added sensor map to Firmware <=> RTE inferface:
Ideenmodellierer
parents:
714
diff
changeset
|
481 |
745 | 482 #define DVO2_FATAL_INTENSITY_LOW (0x00000001) |
483 #define DVO2_FATAL_AMBIENT_HIGH (0x00000002) | |
484 #define DVO2_FATAL_REFINT_LOW (0x00000004) | |
485 #define DVO2_FATAL_REFAMB_HIGH (0x00000008) | |
486 #define DVO2_FATAL_TEMPERATURE (0x00000010) | |
487 | |
488 #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
|
489 |
38 | 490 uint32_t time_elapsed_ms(uint32_t ticksstart,uint32_t ticksnow); |
491 | |
492 void set_stateUsedToSim(void); | |
493 void set_stateUsedToReal(void); | |
494 | |
495 _Bool is_stateUsedSetToSim(void); | |
496 | |
497 const SDiveState * stateRealGetPointer(void); | |
498 const SDiveState * stateSimGetPointer(void); | |
499 SDiveState * stateRealGetPointerWrite(void); | |
500 SDiveState * stateSimGetPointerWrite(void); | |
501 const SDevice * stateDeviceGetPointer(void); | |
502 SDevice * stateDeviceGetPointerWrite(void); | |
503 const SVpmRepetitiveData * stateVpmRepetitiveDataGetPointer(void); | |
504 SVpmRepetitiveData * stateVpmRepetitiveDataGetPointerWrite(void); | |
505 | |
506 void UpdateLifeDataTest(SDiveState * diveState); | |
507 | |
508 void setSimulationValues(int _ascent_rate_meter_per_min, int _descent_rate_meter_per_min, int _max_depth, int _bottom_time ); | |
509 | |
510 void createDiveSettings(void); | |
511 void copyDiveSettingsToSim(void); | |
512 void copyVpmRepetetiveDataToSim(void); | |
513 //void fallbackToFixedSetpoints(SLifeData *lifeData); | |
514 void setActualGasFirst(SLifeData *lifeData); | |
515 void setActualGasAir(SLifeData *lifeData); | |
516 void setActualGas(SLifeData *lifeData, uint8_t gasId, uint8_t setpoint_cbar); | |
517 void setActualGas_ExtraGas(SLifeData *lifeData, uint8_t oxygen, uint8_t helium, uint8_t setpoint_cbar); | |
518 void setActualGas_DM(SLifeData *lifeData, uint8_t gasId, uint8_t setpoint_cbar); | |
519 void setWeekday(RTC_DateTypeDef *sDate); | |
520 void setDate(RTC_DateTypeDef Sdate); | |
521 void setTime(RTC_TimeTypeDef Stime); | |
522 void setBatteryPercentage(uint8_t newChargePercentage); | |
523 void setButtonResponsiveness(uint8_t *ButtonSensitivyList); | |
524 void calibrateCompass(void); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
478
diff
changeset
|
525 void compass_Inertia(float newHeading); |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
478
diff
changeset
|
526 float compass_getCompensated(); |
38 | 527 void clearDeco(void); |
528 void translateDate(uint32_t datetmpreg, RTC_DateTypeDef *sDate); | |
529 void translateTime(uint32_t tmpreg, RTC_TimeTypeDef *sTime); | |
530 void updateSetpointStateUsed(void); | |
531 | |
532 uint8_t calc_MOD(uint8_t gasId); | |
533 uint8_t calc_MinOD(uint8_t gasId); | |
534 //float calc_ppO2(float input_ambient_pressure_bar, SGas* pGas); | |
535 int current_second(void); | |
536 _Bool vpm_crush(SDiveState* pDiveState); | |
537 _Bool deco_zone_reached(void); | |
270
2e58a4094770
feature, debug: make simulator write a logbook entry
Jan Mulder <jlmulder@xs4all.nl>
parents:
247
diff
changeset
|
538 void resetEvents(const SDiveState *pStateUsed); |
38 | 539 |
540 uint32_t crc32c_checksum(uint8_t* message, uint16_t length, uint8_t* message2, uint16_t length2); | |
541 uint32_t CRC_CalcBlockCRC(uint32_t *buffer, uint32_t words); | |
542 uint32_t CRC_CalcBlockCRC_moreThan768000(uint32_t *buffer1, uint32_t *buffer2, uint32_t words); | |
543 | |
544 _Bool is_ambient_pressure_close_to_surface(SLifeData *lifeData); | |
545 | |
662 | 546 uint8_t isLoopMode(uint8_t Mode); |
547 | |
776
45b8f3c2acce
Add support for a configurable compass declination in a range of -99 to 99 degrees.
heinrichsweikamp
parents:
774
diff
changeset
|
548 bool isCompassCalibrated(void); |
929
63c340abd70e
Add a line to the compass heading dive menu that shows the currently set heading to enable the
heinrichsweikamp
parents:
925
diff
changeset
|
549 void logCompassHeading(uint16_t heading); |
63c340abd70e
Add a line to the compass heading dive menu that shows the currently set heading to enable the
heinrichsweikamp
parents:
925
diff
changeset
|
550 void clearCompassHeading(void); |
774
6169309d6eb9
more menu items for the compass menu: Delete bearing, and reset to land based bearing. I have also re-enabled the real time bearing display in the menu - makes it easier to set the correct bearing. (mikeller)
heinrichsweikamp
parents:
771
diff
changeset
|
551 void setCompassHeading(uint16_t heading); |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
780
diff
changeset
|
552 |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
780
diff
changeset
|
553 const SDecoinfo *getDecoInfo(void); |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
554 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
555 void disableTimer(void); |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
857
diff
changeset
|
556 |
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
857
diff
changeset
|
557 uint8_t drawingColor_from_ascentspeed(float speed); |
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
857
diff
changeset
|
558 |
38 | 559 #endif // DATA_CENTRAL_H |