aboutsummaryrefslogtreecommitdiffstats
path: root/core/sample.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-10-25 13:28:55 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-10-25 13:59:52 -0700
commit0e196310f9cda2ccca27e9cf96186639b5658249 (patch)
treef53ee1f276774aa85b6bbe7015a302aa33339eb6 /core/sample.h
parent4aa571d5a09e7c114633dc046bb8a61044a05d63 (diff)
downloadsubsurface-0e196310f9cda2ccca27e9cf96186639b5658249.tar.gz
cleanup: split out divecomputer functions from dive.c
Since dive.c is so huge, split out divecomputer-related functions into divecomputer.[c|h], sample.[c|h] and extradata.[c|h]. This does not give huge compile time improvements, since struct dive contains a struct divecomputer and therefore dive.h has to include divecomputer.h. However, it make things distinctly more clear. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/sample.h')
-rw-r--r--core/sample.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/core/sample.h b/core/sample.h
new file mode 100644
index 000000000..75c7bb1b4
--- /dev/null
+++ b/core/sample.h
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef SAMPLE_H
+#define SAMPLE_H
+
+#include "units.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAX_SENSORS 2
+struct sample // BASE TYPE BYTES UNITS RANGE DESCRIPTION
+{ // --------- ----- ----- ----- -----------
+ duration_t time; // int32_t 4 seconds (0-34 yrs) elapsed dive time up to this sample
+ duration_t stoptime; // int32_t 4 seconds (0-34 yrs) time duration of next deco stop
+ duration_t ndl; // int32_t 4 seconds (-1 no val, 0-34 yrs) time duration before no-deco limit
+ duration_t tts; // int32_t 4 seconds (0-34 yrs) time duration to reach the surface
+ duration_t rbt; // int32_t 4 seconds (0-34 yrs) remaining bottom time
+ depth_t depth; // int32_t 4 mm (0-2000 km) dive depth of this sample
+ depth_t stopdepth; // int32_t 4 mm (0-2000 km) depth of next deco stop
+ temperature_t temperature; // uint32_t 4 mK (0-4 MK) ambient temperature
+ pressure_t pressure[MAX_SENSORS]; // int32_t 4 mbar (0-2 Mbar) cylinder pressures (main and CCR o2)
+ o2pressure_t setpoint; // uint16_t 2 mbar (0-65 bar) O2 partial pressure (will be setpoint)
+ o2pressure_t o2sensor[3]; // uint16_t 6 mbar (0-65 bar) Up to 3 PO2 sensor values (rebreather)
+ bearing_t bearing; // int16_t 2 degrees (-1 no val, 0-360 deg) compass bearing
+ uint8_t sensor[MAX_SENSORS]; // uint8_t 1 sensorID (0-255) ID of cylinder pressure sensor
+ uint16_t cns; // uint16_t 1 % (0-64k %) cns% accumulated
+ uint8_t heartbeat; // uint8_t 1 beats/m (0-255) heart rate measurement
+ volume_t sac; // 4 ml/min predefined SAC
+ bool in_deco; // bool 1 y/n y/n this sample is part of deco
+ bool manually_entered; // bool 1 y/n y/n this sample was entered by the user,
+ // not calculated when planning a dive
+}; // Total size of structure: 57 bytes, excluding padding at end
+
+extern void add_sample_pressure(struct sample *sample, int sensor, int mbar);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif