2020-10-25 12:28:55 +00:00
|
|
|
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
#ifndef SAMPLE_H
|
|
|
|
#define SAMPLE_H
|
|
|
|
|
|
|
|
#include "units.h"
|
|
|
|
|
|
|
|
#define MAX_SENSORS 2
|
2024-01-20 23:35:44 +00:00
|
|
|
#define MAX_O2_SENSORS 6
|
2021-07-20 10:28:34 +00:00
|
|
|
#define NO_SENSOR -1
|
2021-07-18 20:26:38 +00:00
|
|
|
|
2020-10-25 12:28:55 +00:00
|
|
|
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
|
2024-05-25 06:28:13 +00:00
|
|
|
duration_t ndl = { -1 }; // int32_t 4 seconds (-1 no val, 0-34 yrs) time duration before no-deco limit
|
2020-10-25 12:28:55 +00:00
|
|
|
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
|
2021-07-20 10:28:34 +00:00
|
|
|
pressure_t pressure[MAX_SENSORS]; // int32_t 2x4 mbar (0-2 Mbar) cylinder pressures (main and CCR o2)
|
2020-10-25 12:28:55 +00:00
|
|
|
o2pressure_t setpoint; // uint16_t 2 mbar (0-65 bar) O2 partial pressure (will be setpoint)
|
2024-01-20 23:35:44 +00:00
|
|
|
o2pressure_t o2sensor[MAX_O2_SENSORS];// uint16_t 6x2 mbar (0-65 bar) Up to 6 PO2 sensor values (rebreather)
|
2024-05-25 06:28:13 +00:00
|
|
|
bearing_t bearing = { -1 }; // int16_t 2 degrees (-1 no val, 0-360 deg) compass bearing
|
|
|
|
int16_t sensor[MAX_SENSORS] = {}; // int16_t 2x2 sensorID (0-16k) ID of cylinder pressure sensor
|
|
|
|
uint16_t cns = 0; // uint16_t 2 % (0-64k %) cns% accumulated
|
|
|
|
uint8_t heartbeat = 0; // uint8_t 1 beats/m (0-255) heart rate measurement
|
2020-10-25 12:28:55 +00:00
|
|
|
volume_t sac; // 4 ml/min predefined SAC
|
2024-05-25 06:28:13 +00:00
|
|
|
bool in_deco = false; // bool 1 y/n y/n this sample is part of deco
|
|
|
|
bool manually_entered = false; // bool 1 y/n y/n this sample was entered by the user,
|
2020-10-25 12:28:55 +00:00
|
|
|
// not calculated when planning a dive
|
2024-02-27 15:31:44 +00:00
|
|
|
sample(); // Default constructor
|
2021-07-20 10:28:34 +00:00
|
|
|
}; // Total size of structure: 63 bytes, excluding padding at end
|
2020-10-25 12:28:55 +00:00
|
|
|
|
|
|
|
extern void add_sample_pressure(struct sample *sample, int sensor, int mbar);
|
|
|
|
|
|
|
|
#endif
|