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

Reply via email to