subsurface/core
Linus Torvalds adb4b66a05 Try to sanely download multiple concurrent cylinder pressures
This tries to sanely handle the case of a dive computer reporting
multiple cylinder pressures concurrently.

NOTE! There are various "interesting" situations that this whole issue
brings up:

 - some dive computers may report more cylinder pressures than we have
   slots for.

   Currently we will drop such pressures on the floor if they come for
   the same sample, but if they end up being spread across multiple
   samples we will end up re-using the slots with different sensor
   indexes.

   That kind of slot re-use may or may not end up confusing other
   subsurface logic - for example, make things believe there was a
   cylidner change event.

 - some dive computers might send only one sample at a time, but switch
   *which* sample they send on a gas switch event.  If they also report
   the correct sensor number, we'll now start reporting that pressure in
   the second slot.

   This should all be fine, and is the RightThing(tm) to do, but is
   different from what we used to do when we only ever used a single
   slot.

 - When people actually use multiple sensors, our old save format will
   start to need fixing.  Right now our save format comes from the CCR
   model where the second sensor was always the Oxygen sensor.

   We save that pressure fine (except we save it as "o2pressure" - just
   an odd historical naming artifact), but we do *not* save the actual
   sensor index, because in our traditional format that was always
   implicit in the data ("it's the oxygen cylinder").

so while this code hopefully makes our libdivecomputer download do the
right thing, there *will* be further fallout from having multiple
cylinder pressure sensors.  We're not done yet.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-07-25 06:11:10 -07:00
..
subsurface-qt QML UI: DiveList: add date box to trip header 2017-06-24 13:13:04 -07:00
android.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
btdiscovery.cpp BLE on iOS: use uuid instead of BT address 2017-07-19 06:21:23 -07:00
btdiscovery.h Add ConnectionListModel 2017-07-16 21:53:44 -07:00
checkcloudconnection.cpp Typo of translated string 2017-06-23 07:55:58 +09:00
checkcloudconnection.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
cloudstorage.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
cloudstorage.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
CMakeLists.txt Very early and likely quite broken BLE GATT code 2017-06-24 21:58:01 -07:00
cochran.c Start cleaning up sensor indexing for multiple sensors 2017-07-21 16:33:19 -07:00
cochran.h Cochran import: better support for older models 2017-05-31 21:53:00 -07:00
color.cpp Display gas density instead of SAC in planner 2017-05-26 15:52:04 -07:00
color.h Display gas density instead of SAC in planner 2017-05-26 15:52:04 -07:00
compressibility.r Move subsurface-core to core and qt-mobile to mobile-widgets 2016-04-04 22:33:58 -07:00
configuredivecomputer.cpp Switch over to SSRF_CUSTOM_IO v2 2017-06-27 13:58:15 -07:00
configuredivecomputer.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
configuredivecomputerthreads.cpp Fix some warnings 2017-05-06 11:12:28 -07:00
configuredivecomputerthreads.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
datatrak.c datatrak.c: don't use POSIX %m format for sscanf() in dtrak_prepare_data() 2017-06-11 15:56:41 -07:00
datatrak.h Datatrak import rework: Add another memory size ckeck 2017-05-07 07:48:12 -07:00
deco.c Adopt planner state caching to new struct 2017-05-26 15:44:36 -07:00
deco.h Assemble global state of planner in a struct 2017-05-26 15:44:36 -07:00
device.c Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
device.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
devicedetails.cpp Implement OSTC4 specific settings 2017-05-04 10:50:15 -07:00
devicedetails.h Implement OSTC4 specific settings 2017-05-04 10:50:15 -07:00
display.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
dive.c Try to sanely download multiple concurrent cylinder pressures 2017-07-25 06:11:10 -07:00
dive.h Try to sanely download multiple concurrent cylinder pressures 2017-07-25 06:11:10 -07:00
divecomputer.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
divecomputer.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
divelist.c Start cleaning up sensor indexing for multiple sensors 2017-07-21 16:33:19 -07:00
divelist.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
divelogexportlogic.cpp Creation of dive duration string and surface interval string 2017-05-26 15:50:52 -07:00
divelogexportlogic.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
divesite.c Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
divesite.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
divesite.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
divesitehelpers.cpp Make compile with Qt developer builds 2017-07-06 12:43:42 +09:00
divesitehelpers.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
downloadfromdcthread.cpp QML UI: remember the last dive computer 2017-07-22 16:15:00 -07:00
downloadfromdcthread.h QML UI: remove the Paired Bluetooth Devices virtual vendor 2017-07-18 00:49:31 -07:00
equipment.c Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
exif.cpp Image import: Make Exif handling more tolerant, better info,... 2017-05-06 08:07:16 -07:00
exif.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
file.c Unify sample pressure and o2pressure as pressure[2] array 2017-07-20 17:32:54 -07:00
file.h Datatrak import rework: changes of file.c and file.h 2017-05-07 07:48:12 -07:00
gas-model.c Compute and display gas density 2017-05-26 15:52:04 -07:00
gaspressures.c Start cleaning up sensor indexing for multiple sensors 2017-07-21 16:33:19 -07:00
gaspressures.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
gettext.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
gettextfromc.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
gettextfromc.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
git-access.c Clean up git storage update messages 2017-06-18 01:00:30 -07:00
git-access.h Clean up git storage update messages 2017-06-18 01:00:30 -07:00
gpslocation.cpp Check if we have an instance before dereferencing it 2017-05-06 11:12:07 -07:00
gpslocation.h Check if we have an instance before dereferencing it 2017-05-06 11:12:07 -07:00
helpers.h Creation of dive duration string and surface interval string 2017-05-26 15:50:52 -07:00
imagedownloader.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
imagedownloader.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
isocialnetworkintegration.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
isocialnetworkintegration.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
libdivecomputer.c Try to sanely download multiple concurrent cylinder pressures 2017-07-25 06:11:10 -07:00
libdivecomputer.h QML UI: add dev_info data to AppLog 2017-07-09 12:50:22 -07:00
linux.c Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
liquivision.c Start cleaning up sensor indexing for multiple sensors 2017-07-21 16:33:19 -07:00
load-git.c Fix up o2 pressure sensor handling at load time 2017-07-21 16:34:33 -07:00
macos.c Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
membuffer.c Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
membuffer.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
metrics.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
metrics.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
ostctools.c Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
parse-xml.c CCR is now detected from the log data 2017-07-24 13:08:04 +09:00
planner.c Unify sample pressure and o2pressure as pressure[2] array 2017-07-20 17:32:54 -07:00
planner.h Move planner notes to separate file 2017-05-26 15:44:36 -07:00
plannernotes.c Move planner notes to separate file 2017-05-26 15:44:36 -07:00
pluginmanager.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
pluginmanager.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
pref.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
prefs-macros.h Wire up duration units preference UI 2017-05-06 13:49:36 -07:00
profile.c Start cleaning up sensor indexing for multiple sensors 2017-07-21 16:33:19 -07:00
profile.h Start cleaning up sensor indexing for multiple sensors 2017-07-21 16:33:19 -07:00
qt-ble.cpp Trivial code cleanup 2017-07-11 17:11:49 +02:00
qt-ble.h iOS build: need to more includes 2017-07-19 06:21:23 -07:00
qt-gui.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
qt-init.cpp Don't warn about missing en-US translation for Qt 2017-07-03 13:29:25 -07:00
qthelper.cpp Translate "more than n days" for surface interval 2017-06-23 22:43:39 +09:00
qthelper.h Merge branch 'seabear-refactor' 2017-05-07 07:52:55 -07:00
qthelperfromc.h Move planner notes to separate file 2017-05-26 15:44:36 -07:00
qtserialbluetooth.cpp BLE serial read/write buffer 2017-07-19 11:12:35 +09:00
save-git.c Fix up o2 pressure sensor handling at load time 2017-07-21 16:34:33 -07:00
save-html.c Unify sample pressure and o2pressure as pressure[2] array 2017-07-20 17:32:54 -07:00
save-html.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
save-xml.c Fix up o2 pressure sensor handling at load time 2017-07-21 16:34:33 -07:00
serial_ftdi.c Fix one call site that hadn't been updated 2017-06-27 21:24:00 -07:00
sha1.c Move subsurface-core to core and qt-mobile to mobile-widgets 2016-04-04 22:33:58 -07:00
sha1.h Move subsurface-core to core and qt-mobile to mobile-widgets 2016-04-04 22:33:58 -07:00
statistics.c Gas usage statistics: don't require gas switch events 2017-07-22 10:38:00 -07:00
statistics.h Creation of dive duration string and surface interval string 2017-05-26 15:50:52 -07:00
strndup.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
strtod.c Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
subsurfacestartup.c Set default cloud timeout to ten seconds for mobile app 2017-06-17 22:56:08 -07:00
subsurfacestartup.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
subsurfacesysinfo.cpp Random whitespace cleanup 2017-05-27 11:07:20 -07:00
subsurfacesysinfo.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
taxonomy.c Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
taxonomy.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
time.c Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
uemis-downloader.c Resolve type confusion 2017-07-17 16:50:03 -07:00
uemis.c Start cleaning up sensor indexing for multiple sensors 2017-07-21 16:33:19 -07:00
uemis.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
units.h Adopt O2 and He densities to 20degC 2017-05-26 15:52:04 -07:00
version.c Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
version.h Move subsurface-core to core and qt-mobile to mobile-widgets 2016-04-04 22:33:58 -07:00
webservice.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
windows.c Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
windowtitleupdate.cpp Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
windowtitleupdate.h Add SPDX header to remaining core files 2017-04-29 13:32:55 -07:00
worldmap-options.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
worldmap-save.c Add SPDX header to core C files 2017-04-29 13:32:55 -07:00
worldmap-save.h Add SPDX header to core C files 2017-04-29 13:32:55 -07:00