aboutsummaryrefslogtreecommitdiffstats
path: root/gaspressures.c
diff options
context:
space:
mode:
authorGravatar willem ferguson <willemferguson@zoology.up.ac.za>2014-08-27 08:13:05 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-08-27 07:08:13 -0700
commit0fa324d775d41cdea45094d9ae5008cc96e24181 (patch)
tree805ebe15eb5d55f602c4085200d8c0ddb9efe905 /gaspressures.c
parentdba3aa12a3e16b5302af551cdf356b3442d9803f (diff)
downloadsubsurface-0fa324d775d41cdea45094d9ae5008cc96e24181.tar.gz
CCR Patch: Adapt pressure interpolation for CCR
This patch adapts pressure interpolation (function pr_interpolate_data) in order to process CCR diluent gas as well. A flag diluent_flag is added to the variables for calling this function indicating whether the gas being worked with is diluent gas or not. This is necessitated by the fact that the diluent gas storage is separate from that of the other gases. The data used for interpolation are selected from the appropriate array, depending on nthe value of diluent_flag. In function fill_missing_tank_pressures, diluent_flag is set to 0 in order for the code to work with the current CCR adaptations. The above constitutes no. 1 of a four-part set of patches that allows pressure calculations for CCR gases. There will be CCR functionality only after the whole set of patches is complete. Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'gaspressures.c')
-rw-r--r--gaspressures.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/gaspressures.c b/gaspressures.c
index 8474f6e31..fa1d21fc7 100644
--- a/gaspressures.c
+++ b/gaspressures.c
@@ -155,11 +155,12 @@ void dump_pr_interpolate(int i, pr_interpolate_t interpolate_pr)
#endif
-static struct pr_interpolate_struct get_pr_interpolate_data(pr_track_t *segment, struct plot_info *pi, int cur)
-{
+static struct pr_interpolate_struct get_pr_interpolate_data(pr_track_t *segment, struct plot_info *pi, int cur, int diluent_flag)
+{ // cur = index to pi->entry corresponding to t_end of segment; diluent_flag=1 indicates diluent cylinder
struct pr_interpolate_struct interpolate;
int i;
struct plot_data *entry;
+ int pressure;
interpolate.start = segment->start;
interpolate.end = segment->end;
@@ -168,6 +169,11 @@ static struct pr_interpolate_struct get_pr_interpolate_data(pr_track_t *segment,
for (i = 0; i < pi->nr; i++) {
entry = pi->entry + i;
+ if (diluent_flag)
+ pressure = DILUENT_PRESSURE(entry);
+ else
+ pressure = SENSOR_PRESSURE(entry);
+
if (entry->sec < segment->t_start)
continue;
if (entry->sec >= segment->t_end) {
@@ -177,13 +183,13 @@ static struct pr_interpolate_struct get_pr_interpolate_data(pr_track_t *segment,
if (entry->sec == segment->t_start) {
interpolate.acc_pressure_time = 0;
interpolate.pressure_time = 0;
- if (SENSOR_PRESSURE(entry))
- interpolate.start = SENSOR_PRESSURE(entry);
+ if (pressure)
+ interpolate.start = pressure;
continue;
}
if (i < cur) {
- if (SENSOR_PRESSURE(entry)) {
- interpolate.start = SENSOR_PRESSURE(entry);
+ if (pressure) {
+ interpolate.start = pressure;
interpolate.acc_pressure_time = 0;
interpolate.pressure_time = 0;
} else {
@@ -198,8 +204,8 @@ static struct pr_interpolate_struct get_pr_interpolate_data(pr_track_t *segment,
continue;
}
interpolate.pressure_time += entry->pressure_time;
- if (SENSOR_PRESSURE(entry)) {
- interpolate.end = SENSOR_PRESSURE(entry);
+ if (pressure) {
+ interpolate.end = pressure;
break;
}
}
@@ -211,6 +217,7 @@ static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi,
int cyl, i;
struct plot_data *entry;
int cur_pr[MAX_CYLINDERS];
+ int diluent_flag = 0;
#ifdef DEBUG_PR_TRACK
/* another great debugging tool */
@@ -252,7 +259,7 @@ static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi,
continue;
}
- interpolate = get_pr_interpolate_data(segment, pi, i);
+ interpolate = get_pr_interpolate_data(segment, pi, i, diluent_flag);
#ifdef DEBUG_PR_INTERPOLATE
dump_pr_interpolate(i, interpolate);
#endif