Scaling of cylinder pressures in profile

Berthold Stoeger bstoeger at mail.tuwien.ac.at
Mon Nov 11 01:38:20 PST 2019


On Montag, 11. November 2019 09:05:18 CET Willem Ferguson wrote:
> There appears to be a bug in Subsurface. Check the attached dive log and
> the rendering of cylinder pressures. Also see attached screenshot. I did
> not notice this until now. Is it perhaps the last merge base don my PR
> that causes this?

Funnily enough, this seems to be an old bug that now becomes active. Consider 
this code in calculate_max_limits_new():

	for (cyl = 0; cyl < MAX_CYLINDERS; cyl++) {
		int mbar = dive->cylinder[cyl].start.mbar;
		if (mbar > maxpressure)
			maxpressure = mbar;
		if (mbar < minpressure)
			minpressure = mbar;
	}

If you have less than MAX_CYLINDERS cylinders (i.e. in 100% of cases), mbar 
will evaluate to 0. Thus, minpressure will be 0 in all cases. This code never 
worked.

What happens now is that this part of the code actually starts to work. But if 
you don't have an "air integrated" computer, you will not have pressure 
readings, so minpressure will remain the minimum start-pressure of any of your 
cylinders.

That gives the funky effect you see.

Possibility 1: if minpressure == maxpressure (meaning that we found no 
pressure reading), set minpressure to 0. This will restore the old behavior 
for non-air integrated computers.

Possibility 2: correctly determine the minimum pressure by looking at the 
profile data not the events.

Berthold




More information about the subsurface mailing list