[CCR PATCH] Import ad store sensor and setpoint values from xml [WITH attachment]

Dirk Hohndel dirk at hohndel.org
Sat Oct 11 04:23:00 PDT 2014


On Sat, Oct 11, 2014 at 10:05:33AM +0200, Willem Ferguson wrote:
> CCR patch: Import and store oxygen sensor data

Thanks for this one. Instead of sitting on it forever or a back and forth
about the minor changes that I want I simply applied the changes and
committed it. Here's my diff on top of yours... you'll see some small
algorithm cleanup (you put that value in o2val, so use o2val instead of
getting the structure member again), whitespace, debug printout...

/D


diff --git a/dive.c b/dive.c
index ea1ff03afbbc..d20a64cc1cc1 100644
--- a/dive.c
+++ b/dive.c
@@ -1113,10 +1113,10 @@ static void fixup_dive_dc(struct dive *dive, struct divecomputer *dc)
		for (j = 0; j < dc->no_o2sensors; j++) {  // for CCR oxygen sensor data:
			o2val = sample->o2sensor[j].mbar;
			if (o2val) {
-				if (lasto2val[j] == sample->o2sensor[j].mbar)
+				if (lasto2val[j] == o2val)
					sample->o2sensor[j].mbar = 0;
				else
-					lasto2val[j] = sample->o2sensor[j].mbar;
+					lasto2val[j] = o2val;
			}
		}
 
@@ -1134,7 +1134,7 @@ static void fixup_dive_dc(struct dive *dive, struct
divecomputer *dc)
		depthtime += (time - lasttime) * (lastdepth + depth) / 2;
		lastdepth = depth;
		lasttime = time;
-			if (sample->cns > dive->maxcns)
+		if (sample->cns > dive->maxcns)
                        dive->maxcns = sample->cns;
        }
 
diff --git a/parse-xml.c b/parse-xml.c
index b07505c2d8f4..6e74e8aaf449 100644
--- a/parse-xml.c
+++ b/parse-xml.c
@@ -815,8 +815,8 @@ static void try_to_fill_dc(struct divecomputer *dc, const char *name, char *buf)
		return;
	if (MATCH("diveid", hex_value, &dc->diveid))
		return;
-	if (MATCH("dctype", get_dc_type, &dc->dctype)) { printf("TYPE\n");
-		return; }
+	if (MATCH("dctype", get_dc_type, &dc->dctype))
+		return;
	if (MATCH("no_o2sensors", get_sensor, &dc->no_o2sensors))
		return;
	if (match_dc_data_fields(dc, name, buf))
--- a/profile.c	2014-10-11 07:05:54.047560980 -0400
+++ b/profile.c	2014-10-11 07:09:59.319146178 -0400
@@ -551,7 +551,7 @@
 		entry->in_deco = sample->in_deco;
 		entry->cns = sample->cns;
 		entry->pressures.o2 = sample->po2.mbar / 1000.0;
-		entry->o2setpoint = sample->o2setpoint.mbar / 1000.0; // for rebreathers
+		entry->o2setpoint = sample->o2setpoint.mbar / 1000.0;   // for rebreathers
 		entry->o2sensor[0] = sample->o2sensor[0].mbar / 1000.0; // for up to three rebreather O2 sensors
 		entry->o2sensor[1] = sample->o2sensor[1].mbar / 1000.0;
 		entry->o2sensor[2] = sample->o2sensor[2].mbar / 1000.0;
@@ -844,10 +846,10 @@
 		entry->end = (entry->depth + 10000) * (1000 - fhe) / 1000.0 - 10000;
 		entry->ead = (entry->depth + 10000) * (1000 - fo2 - fhe) / (double)N2_IN_AIR - 10000;
 		entry->eadd = (entry->depth + 10000) *
-				(entry->pressures.o2 / amb_pressure * O2_DENSITY +
-				 entry->pressures.n2 / amb_pressure * N2_DENSITY +
-				 entry->pressures.he / amb_pressure * HE_DENSITY) /
-				(O2_IN_AIR * O2_DENSITY + N2_IN_AIR * N2_DENSITY) * 1000 - 10000;
+				      (entry->pressures.o2 / amb_pressure * O2_DENSITY +
+				       entry->pressures.n2 / amb_pressure * N2_DENSITY +
+				       entry->pressures.he / amb_pressure * HE_DENSITY) /
+				      (O2_IN_AIR * O2_DENSITY + N2_IN_AIR * N2_DENSITY) * 1000 - 10000;
 		if (entry->mod < 0)
 			entry->mod = 0;
 		if (entry->ead < 0)
@@ -914,9 +916,9 @@
 	setup_gas_sensor_pressure(dive, dc, pi);		 /* Try to populate our gas pressure knowledge */
 	populate_pressure_information(dive, dc, pi, NONDILUENT); /* .. calculate missing pressure entries for all gasses except diluent */
 	if (dc->dctype == CCR) {				 /* For CCR dives.. */
-		printf("CCR DIVE: %s (%d O2 sensors)\n", dc->model,dc->no_o2sensors);
+		printf("CCR DIVE: %s (%d O2 sensors)\n", dc->model, dc->no_o2sensors);
 		populate_pressure_information(dive, dc, pi, DILUENT); /* .. calculate missing diluent gas pressure entries */
 //		fill_o2_values(dc, pi);				 /* .. and insert the O2 sensor data having 0 values. */
 	}
 	calculate_sac(dive, pi); /* Calculate sac */
 	calculate_deco_information(dive, dc, pi, false);


More information about the subsurface mailing list