Undo some features that were broken in Robert's patch 0d7c192e:
1) Calculate correct partial pressure of oxygen to be plotted on dive profile, taking into account the oxygen sensor data. Currently, erroneously, OC PO2 values are shown, due to an erroneous calling parameter to fill_pressures(). 2) Read start and end cylinder pressured correctly. In Robert's patch, some wrong assignments were done in file.c. This is now corrected and the correct cylinder pressures are shown in the equipment tab. 3) Write correct cylinder pressures to XML. Currently the data for the two cylinder are written to XML the wrong way round (diluent pressures = oxygen and vice versa). Expand XML output: 1) Write oxygen sensor data to XML 2) Write no_of_02sensors to XML Signed-off-by: willem ferguson <[email protected]>
>From 8a4121607a4259fc5a2651eb815a340fd81d5034 Mon Sep 17 00:00:00 2001 From: willem ferguson <[email protected]> Date: Mon, 17 Nov 2014 21:04:36 +0200 Subject: [PATCH] Undo some features that were broken in Robert's patch 0d7c192e: 1) Calculate correct partial pressure of oxygen to be plotted on dive profile, taking into account the oxygen sensor data. Currently, erroneously, OC PO2 values are shown, due to an erroneous calling parameter to fill_pressures(). 2) Read start and end cylinder pressured correctly. In Robert's patch, some wrong assignments wer done in file.c. This is now corrected and the correct cylinder pressures are shown in the equipment tab. Expand XML output: 1) Write oxygen sensor data to XML 2) Write no_of_02sensors to XML Signed-off-by: willem ferguson <[email protected]> --- file.c | 4 ++-- profile.c | 2 +- save-xml.c | 21 +++++++++++++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/file.c b/file.c index 97095fd..4fe4d35 100644 --- a/file.c +++ b/file.c @@ -597,7 +597,7 @@ int parse_txt_file(const char *filename, const char *csv) case 13: add_sample_data(sample, POSEIDON_O2CYLINDER, value); if (!o2cylinder_pressure) { - dive->cylinder[1].sample_start.mbar = value * 1000; + dive->cylinder[0].sample_start.mbar = value * 1000; o2cylinder_pressure = value; } else o2cylinder_pressure = value; @@ -605,7 +605,7 @@ int parse_txt_file(const char *filename, const char *csv) case 14: add_sample_data(sample, POSEIDON_PRESSURE, value); if (!cylinder_pressure) { - dive->cylinder[0].sample_start.mbar = value * 1000; + dive->cylinder[1].sample_start.mbar = value * 1000; cylinder_pressure = value; } else cylinder_pressure = value; diff --git a/profile.c b/profile.c index 63023b5..8e43c21 100644 --- a/profile.c +++ b/profile.c @@ -905,7 +905,7 @@ static void calculate_gas_information_new(struct dive *dive, struct plot_info *p amb_pressure = depth_to_mbar(entry->depth, dive) / 1000.0; - fill_pressures(&entry->pressures, amb_pressure, &dive->cylinder[cylinderindex].gasmix, entry->pressures.o2, dive->dc.dctype, entry->sac); + fill_pressures(&entry->pressures, amb_pressure, &dive->cylinder[cylinderindex].gasmix, entry->o2pressure, dive->dc.dctype, entry->sac); fn2 = (int) (1000.0 * entry->pressures.n2 / amb_pressure); fhe = (int) (1000.0 * entry->pressures.he / amb_pressure); diff --git a/save-xml.c b/save-xml.c index 52582db..cf7ccfe 100644 --- a/save-xml.c +++ b/save-xml.c @@ -214,8 +214,8 @@ static void save_sample(struct membuffer *b, struct sample *sample, struct sampl put_format(b, " <sample time='%u:%02u min'", FRACTION(sample->time.seconds, 60)); put_milli(b, " depth='", sample->depth.mm, " m'"); put_temperature(b, sample->temperature, " temp='", " C'"); - put_pressure(b, sample->cylinderpressure, " pressure='", " bar'"); - put_pressure(b, sample->o2cylinderpressure, " pdiluent='", " bar'"); + put_pressure(b, sample->cylinderpressure, " pdiluent='", " bar'"); + put_pressure(b, sample->o2cylinderpressure, " pressure='", " bar'"); /* * We only show sensor information for samples with pressure, and only if it @@ -254,6 +254,21 @@ static void save_sample(struct membuffer *b, struct sample *sample, struct sampl old->cns = sample->cns; } + if ((sample->o2sensor[0].mbar) && (sample->o2sensor[0].mbar != old->o2sensor[0].mbar)) { + put_milli(b, " sensor1='", sample->o2sensor[0].mbar, " bar'"); + old->o2sensor[0] = sample->o2sensor[0]; + } + + if ((sample->o2sensor[1].mbar) && (sample->o2sensor[1].mbar != old->o2sensor[1].mbar)) { + put_milli(b, " sensor2='", sample->o2sensor[1].mbar, " bar'"); + old->o2sensor[1] = sample->o2sensor[1]; + } + + if ((sample->o2sensor[2].mbar) && (sample->o2sensor[2].mbar != old->o2sensor[2].mbar)) { + put_milli(b, " sensor3='", sample->o2sensor[2].mbar, " bar'"); + old->o2sensor[2] = sample->o2sensor[2]; + } + if (sample->setpoint.mbar != old->setpoint.mbar) { put_milli(b, " po2='", sample->setpoint.mbar, " bar'"); old->setpoint = sample->setpoint; @@ -355,6 +370,8 @@ static void save_dc(struct membuffer *b, struct dive *dive, struct divecomputer for (enum dive_comp_type i = 0; i < NUM_DC_TYPE; i++) if (dc->dctype == i) show_utf8(b, dctype_text[i], " dctype='", "'", 1); + if (dc->no_o2sensors) + put_format(b," no_o2sensors='%d'", dc->no_o2sensors); } put_format(b, ">\n"); save_depths(b, dc); -- 1.9.1
_______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
