aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/schedule.h
diff options
context:
space:
mode:
authorGravatar Tim Segers <tsegers@pm.me>2022-10-10 18:37:28 +0200
committerGravatar Tim Segers <tsegers@pm.me>2022-10-10 18:39:41 +0200
commit8c5571544169a4095ceebf5f6d6b5b9caf09c59b (patch)
tree08c8b44616ce4785d821db48fbbd0c5bf4421a75 /src/schedule.h
parent2337828095920b8debdb0f8e0337a9d6aad6b55c (diff)
downloadopendeco-8c5571544169a4095ceebf5f6d6b5b9caf09c59b.tar.gz
Move sources into src
Diffstat (limited to 'src/schedule.h')
-rw-r--r--src/schedule.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/schedule.h b/src/schedule.h
new file mode 100644
index 0000000..f2e6363
--- /dev/null
+++ b/src/schedule.h
@@ -0,0 +1,42 @@
+/* SPDX-License-Identifier: MIT-0 */
+
+#ifndef SCHEDULE_H
+#define SCHEDULE_H
+
+#include "deco.h"
+
+typedef struct waypoint_t {
+ double depth;
+ double time;
+ const gas_t *gas;
+} waypoint_t;
+
+typedef struct decoinfo_t {
+ double ndl;
+ double tts;
+} decoinfo_t;
+
+typedef enum segtype_t {
+ SEG_DECO_STOP,
+ SEG_DIVE,
+ SEG_GAS_SWITCH,
+ SEG_NDL,
+ SEG_SAFETY_STOP,
+ SEG_SURFACE,
+ SEG_TRAVEL,
+} segtype_t;
+
+typedef void (*waypoint_callback_t)(const decostate_t *ds, const waypoint_t, const segtype_t);
+
+const gas_t *best_gas(const double depth, const gas_t *gasses, const int nof_gasses);
+const gas_t *next_gas(const double depth, const gas_t *gasses, const int nof_gasses);
+
+int direct_ascent(const decostate_t *ds, const double depth, const double time, const gas_t *gas);
+double calc_ndl(decostate_t *ds, const double depth, const double ascrate, const gas_t *gas);
+
+void simulate_dive(decostate_t *ds, waypoint_t *waypoints, const int nof_waypoints, waypoint_callback_t wp_cb);
+
+decoinfo_t calc_deco(decostate_t *ds, const double start_depth, const gas_t *start_gas, const gas_t *deco_gasses,
+ const int nof_gasses, waypoint_callback_t wp_cb);
+
+#endif /* end of include guard: SCHEDULE_H */