From 28fe6a7b3856f1359f875f9d53d4c64e7dc1ea15 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Thu, 2 Sep 2021 18:39:17 +0200 Subject: core: add a function to test for sensors of a given cylinder We want to prevent the user from accidentally deleting a cylinder with sensor readings. Therefore, we need such a function. Signed-off-by: Berthold Stoeger --- core/dive.c | 14 ++++++++++++++ core/dive.h | 1 + core/divecomputer.c | 1 - 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/dive.c b/core/dive.c index a7d202ba5..c97e1ba11 100644 --- a/core/dive.c +++ b/core/dive.c @@ -3481,3 +3481,17 @@ struct gasmix get_gasmix_at_time(const struct dive *d, const struct divecomputer struct gasmix gasmix = gasmix_air; return get_gasmix(d, dc, time.seconds, &ev, gasmix); } + +/* Does that cylinder have any pressure readings? */ +extern bool cylinder_with_sensor_sample(const struct dive *dive, int cylinder_id) +{ + for (const struct divecomputer *dc = &dive->dc; dc; dc = dc->next) { + for (int i = 0; i < dc->samples; ++i) { + for (int j = 0; j < MAX_SENSORS; ++j) { + if (dc->sample[i].sensor[j] == cylinder_id) + return true; + } + } + } + return false; +} diff --git a/core/dive.h b/core/dive.h index 3e5ec1324..394c37ef1 100644 --- a/core/dive.h +++ b/core/dive.h @@ -198,6 +198,7 @@ extern int get_cylinder_index(const struct dive *dive, const struct event *ev); extern struct gasmix get_gasmix_from_event(const struct dive *, const struct event *ev); extern int nr_cylinders(const struct dive *dive); extern int nr_weightsystems(const struct dive *dive); +extern bool cylinder_with_sensor_sample(const struct dive *dive, int cylinder_id); /* UI related protopypes */ diff --git a/core/divecomputer.c b/core/divecomputer.c index 19d4a6fee..6f8964601 100644 --- a/core/divecomputer.c +++ b/core/divecomputer.c @@ -548,4 +548,3 @@ void free_dc(struct divecomputer *dc) free_dc_contents(dc); free(dc); } - -- cgit v1.2.3-70-g09d2