Fully agreed with Jef's statement about part of this being caused by the
limitation in Shearwater's protocol that the enabled / disabled
information for individual gasmixes is not transmitted when downloading
dives.
But feel free to open a support request with
Shearwater and ask them to add this information to their protocol - how
are they supposed to know what features their customers are missing in
their products if nobody tells them.
Fully agreed. Nobody has designed a UI and implemented functionality for
this yet. Any volunteers wanting to help with this is welcome.
- Subsurface prevents the user from deleting any gasmixes that were
recorded as being used during the dive. This makes sense as without this
a lot of functionality, like calculating a deco ceiling and tissue
saturations would not work;
I suspect a more user friendly approach would be to be pragmatic and for
Shearwater dive computers discard the gas information for the first 2
seconds of the dive.
This has been fixed and the proper usage type will be shown in the UI in
the next release of Subsurface:
https://github.com/subsurface/subsurface/pull/3576
One factor in why this has not yet been done is that it is likely that >
95% of the dives logged in Subsurface are recreational dives with 1
gasmix and (at most) 1 tank sensor, and for these dives the existing
functionality works just fime. So adding functionality that forces the
user to map gasmixes to tanks for every dive they import will make the
UX worse for > 95% of users, unless it is done in a way that 'works out
of the box' for recreational dives.
There was a change in how gasmix information is imported - originally
only gasmixes that were used (i.e. switched to on the dive computer)
during the dive were imported into Subsurface. This was somewhat
limiting, especially for CCR dives, as the information about what
bailout gases were carried was discarded during the import unless a
bailout happened during the dive. So this was changed, and the
preference setting to hide unused gases was introduced.
Hi Micha.
* Subsurface now imports every configured gas as a cylinder
Not quite - Subsurface imports every _active_ gasmix. As you state above, since on Shearwater computers all gases are returned with no active / inactive flag, all of them are considered to be active.
A 'cylinder' in Subsurface is an amalgamation of gasmix and tank
pressure information reported by a dive computer.
* The logic to determine whether a cylinder/gas is actually used or not is not optimal, and the program refuses to let the user delete a cylinder which it thinks is in use in order to preserve calculations which are wrong anyway in the case where a cylinder didn't even physically exist in the first place.
Yes, correct, for the first two seconds of every dive downloaded from a Shearwater computer the calculations are based on a potentially invalid gas - not sure that I would agree with your conclusion that in this case that all of the saturation calculations for the entire dive become invalid because of this.
Fully agreed with Jef's statement about part of this being caused by the
limitation in Shearwater's protocol that the enabled / disabled
information for individual gasmixes is not transmitted when downloading
dives.
How does this explain why some gases/cylinders were then deleted from my files following import from a second dive computer for the same dives. That sounds unintended to me because these gases/cylinders were actually deleted and not just hidden.
It doesn't. But the explanation for this behaviour is that during the merge of the cylinders when more than one dive computer is used for the same dive only 'used' cylinders are considered: https://github.com/subsurface/subsurface/blob/90e5de83573254cd251fef243aef991d51f60d4b/core/dive.c#L1948-L1949
This could potentially be changed to be dependent on the 'show
unused cylinders' setting in the preference, and include unused
cylinders if this preference is enabled.
Fully agreed. Nobody has designed a UI and implemented functionality for
this yet. Any volunteers wanting to help with this is welcome.
Unfortunately my time is somewhat limited at present, but I can have a stab at working on a UI to match sensors to gas mixes/cylinders over winter, if nobody else has beat me to it by then.
Thanks!
- Subsurface prevents the user from deleting any gasmixes that were
recorded as being used during the dive. This makes sense as without this
a lot of functionality, like calculating a deco ceiling and tissue
saturations would not work;
I disagree here - let the user delete things which the user _knows_ to be incorrect. The user (should) know better than some heuristic of the program. Calculations based on invalid data are wrong anyway, to the point of being potentially dangerous if a user relies on them for future dive plans. There MUST be a way for a user to fix any invalid assumptions which the program has made.
I also think that it is a bug if the program lets me delete a cylinder which has pressure readings (and thus is definitely "in use"), but does not let me delete a cylinder which just has some spurious "gas change" event from who knows where which never even existed in the first place. So I'd be interested to figure out exactly where Subsurface gets the data from to determine whether a cylinder is "in use" or not..
I think I can't quite follow you here - first you postulate that it should be possible to delete a cylinder that your dive computer reported you breathed from during the dive (albeit in your case only due to a bug in the Shearwater data import), which would result in making any saturation calculation based on actual dive data impossible. And then you postulate that you should not be able to delete a cylinder that has pressure information - even if the pressure information came from your dive buddy's or a student's tank, or from one that you used it to inflate a lift bag. Not sure where you want to go with this.
Also, can I please get you to read the warning that is shown in Subsurface for all dives planned in Subsurface:

I am struggling to understand how you seem to be willing to dive with a dive computer that is set to use a gas mix that is incorrect to the extent that the resulting decompression information is rendered invalid, but then expect to be able to somehow 'fix' the incorrect information used on the dive, and after this safely use Subsurface to plan follow up dives.
I suspect a more user friendly approach would be to be pragmatic and for
Shearwater dive computers discard the gas information for the first 2
seconds of the dive.
I guess this feeds more into the issue that Subsurface doesn't know whether a gas is actually configured to be used or not from a Shearwater dive computer?
Or is this actually information which came from the computer? In that case, it would (presumably) only issue a gas-change event for a gas which was "on"? On all of my dives I configured both computers to only have the gases I physically carried with me as "on" - otherwise any bailout calculations would be incorrect, and yet I ended up with "used" gas mixes which simply never existed on those dives.
It's similar but different, and yes, this is what comes from the dive computer - the log 'file' header does not specify which gas was used at the start of a dive, but then at 2 seconds into the dive it reports a gas change to the initial gas that was used at the start of the dive. Subsurface naively assumes that the first gas in the gas list (ordered by O2 content on Shearwater computers) is the gas that is used from the start of the dive until 2 seconds in. This is a bug and should be fixed.
This has been fixed and the proper usage type will be shown in the UI in
the next release of Subsurface:
https://github.com/subsurface/subsurface/pull/3576
Cool! So presumably the user will also be able to edit the gas usage type?
Yes.
One factor in why this has not yet been done is that it is likely that >
95% of the dives logged in Subsurface are recreational dives with 1
gasmix and (at most) 1 tank sensor, and for these dives the existing
functionality works just fime. So adding functionality that forces the
user to map gasmixes to tanks for every dive they import will make the
UX worse for > 95% of users, unless it is done in a way that 'works out
of the box' for recreational dives.
I see this as a non-issue. If there's only 1 cylinder and 1 sensor then the 1:1 assignment is trivial and should always happen. There's no need to (re)map anything if there are no alternative possibilities..
Fair enough, thanks for putting thought into this, keen to see the pull request for the change.
There was a change in how gasmix information is imported - originally
only gasmixes that were used (i.e. switched to on the dive computer)
during the dive were imported into Subsurface. This was somewhat
limiting, especially for CCR dives, as the information about what
bailout gases were carried was discarded during the import unless a
bailout happened during the dive. So this was changed, and the
preference setting to hide unused gases was introduced.
Hmm; matter of opinion here. Personally I find it easier to add an unused bailout gas than to not even be able to delete a "phantom" cylinder without manually editing the data files. But at least this explains why I can't recall having this issue before!
Not sure I can follow your logic here - you are essentially saying that just because you are using a dive computer for which the log import in Subsurface has got a bug all users of all dive computers should be made to enter the data for their bailout tanks twice (on their dive computer and in Subsurface) - wouldn't it be a better approach to get the bug fixed and spare everybody the extra work?
Room for improvement;
Welcome to open Source! You only get what somebody is willing to put effort into. :-)
Kia mārū
Michael Keller