understanding the sensor values in our samples

Michael Andreen harv at ruin.nu
Thu Apr 28 00:05:46 PDT 2022


On Wednesday 27 April 2022 23:27:43 CEST Dirk Hohndel via subsurface wrote:
> 
> I am trying to track down an issue where Subsurface thinks that a cylinder is used that clearly isn't used.
> This got me back to looking at our handling of cylinders and sensors and ... oh my.
> 
[snip]
> 
> Yeah, this is not doing what it should be doing.
> At first I was trying to figure out all these complicated ways how to deal with the second sensor value. But then I thought... for an OC dive we should completely ignore sensor[1]... there is no O2 cylinder in use... - that seems the easiest fix.
> 
> Thoughts?

Since I've been messing in this area recently, here is my understanding.

The sensor[] array has slightly different usage for OC and CCR dives. For OC dives it's not that sensor[0] is the main tank/diluent and sensor[1] is O2. Instead, we support for up to two pressure samples per sample. So sensor[0] says which tank pressure[0] is attached to and sensor[1] says which tank pressure[1] is attached to. And with 3 sensors you can end up with something like this:

sample1 sensor[0]=0 sensor[1]=1 pressure[0]=100.0 pressure[1]=200.0
sample2 sensor[0]=2 sensor[1]=1 pressure[0]=300.0 pressure[1]=200.0
sample3 sensor[0]=0 sensor[1]=2 pressure[0]=100.0 pressure[1]=300.0
sample4 sensor[0]=1 sensor[1]=2 pressure[0]=200.0 pressure[1]=300.0

It tries to reuse the index for the same cylinder, but if the cylinder isn't in the previous sample then it picks the first index that doesn't (yet) have a pressure for this sample. So ignoring sensor[1] is not right solution for OC dives. For these I think the real solution is to ensure that unused sensor[n] is set to NO_SENSOR.

However, I don't really understand the special CCR O2 handling. There is a lot of odd handling, including picking the format to use for saving the pressure samples, so the change to have unsed sensor[n] as NO_SENSOR might have a bigger impact.

I wonder how much of that special CCR O2 handling is actually needed and how much is just there because of history. Why do we save o2pressure in pressure[1] when there is already a separate o2pressure? Especially since o2pressure seems to be partial pressure and not cylinder pressure.

/Michael




More information about the subsurface mailing list