subsurface/core
Linus Torvalds 85392343fa Re-do the libdivecomputer fingerprint save/load code
This tries to make our fingerprinting code work better, by avoiding
using the "deviceid" field that has always been unreliable because we've
calculated it multiple different ways, and even for the same version of
subsurface, it ends up changing in the middle (ie we calculate one value
initially, then re-calculate it when we have a proper serial number
string).

So instead, the fingerprinting code will look up and save the
fingerprint file using purely "stable" information that is available
early during the download:

 - the device model name (which is a string with vendor and product name
   separated by a space)

 - the DC_EVENT_DEVINFO 32-bit 'serial' number (which is not necessarily
   a real serial number at all, but hopefully at least a unique number
   for the particular product)

but because the model name is not necessarily a good filename (think
slashes and other possibly invalid characters), we hash that model name
and use the resulting hex number in the fingerprint file name.

This way the fingerprint file is unambiguous at load and save time, and
depends purely on libdivecomputer data.

But because we also need to verify that we have the actual _dive_
associated with that fingerprint, we also need to save the final
deviceid and diveid when saving the fingerprint file, so that when we
load it again we can look up the dive and verify that we have it before
we use the fingerprint data.

To do that, the fingerprint file itself contains not just the
fingerprint data from libdivecomputer, but the last 8 bytes of the file
are the (subsurface) deviceid and the diveid of the dive that is
associated with the fingerprint.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-09-19 16:51:46 -07:00
..
settings core: remove location service preferences 2021-09-13 11:21:34 -07:00
subsurface-qt undo/device: adjust device management infrastructure 2021-08-18 13:22:02 -07:00
android.cpp build-system/android: remove libusb at QTest 2020-04-25 13:18:41 -07:00
btdiscovery.cpp core/ble: add auto detection for Aladin A2 2021-07-20 09:28:38 -07:00
btdiscovery.h bluetooth discovery: report more information about progress 2020-09-30 16:40:41 -07:00
checkcloudconnection.cpp cleanup: don't hardcode array length 2021-04-19 12:51:01 -07:00
checkcloudconnection.h cloudstorage: try alternative server if first connection fails 2021-04-19 12:51:01 -07:00
cloudstorage.cpp cloudstorage: remove ancient SSL hack 2021-04-19 12:51:01 -07:00
cloudstorage.h get rid of some foreach and Q_FOREACH constructs 2019-04-12 12:59:17 +03:00
CMakeLists.txt core: remove location service preferences 2021-09-13 11:21:34 -07:00
cochran.c cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
cochran.h
color.cpp profile: rename GF_LINE color to DURATION_LINE 2021-05-08 13:40:24 +02:00
color.h profile: rename GF_LINE color to DURATION_LINE 2021-05-08 13:40:24 +02:00
compressibility.r
configuredivecomputer.cpp cleanup: use pointer-to-function connect() in ConfigureDiveComputer 2020-10-06 10:38:45 -07:00
configuredivecomputer.h cleanup: use pointer-to-function connect() in ConfigureDiveComputer 2020-10-06 10:38:45 -07:00
configuredivecomputerthreads.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
configuredivecomputerthreads.h
connectionlistmodel.cpp core/bt: ensure that BT/BLE addresses with name sort first 2020-05-15 04:05:06 +03:00
connectionlistmodel.h Mobile: reinstate roleNames function in ConnectionListModel 2019-04-16 23:43:14 +12:00
datatrak.c Clean up divecomputer 'device' handling 2021-08-18 13:22:02 -07:00
datatrak.h Cleanup: const-ify functions taking dives and divecomputers 2018-08-23 14:41:01 -07:00
deco.c planner: pass in_planner argument to decoMode() 2021-02-17 07:26:55 -08:00
deco.h planner: pass in_planner argument to decoMode() 2021-02-17 07:26:55 -08:00
device.cpp core: add get_or_add helper for dc table 2021-08-18 13:22:02 -07:00
device.h core: add get_or_add helper for dc table 2021-08-18 13:22:02 -07:00
devicedetails.cpp
devicedetails.h
display.h profile: move adding of ceiling-violation-event 2021-01-10 15:57:39 -08:00
dive.c core: add a function to test for sensors of a given cylinder 2021-09-03 13:35:28 -07:00
dive.h core: add a function to test for sensors of a given cylinder 2021-09-03 13:35:28 -07:00
divecomputer.c core: add a function to test for sensors of a given cylinder 2021-09-03 13:35:28 -07:00
divecomputer.h Clean up divecomputer 'device' handling 2021-08-18 13:22:02 -07:00
divefilter.cpp cleanup: ensure DiveFilter is consistent when created 2021-01-01 12:38:50 -08:00
divefilter.h filter: provide function that returns all shown dives 2020-12-29 08:34:09 -08:00
divelist.c Planner: Correctly compute CNS and OTU for bailout segments 2021-08-19 10:58:08 -07:00
divelist.h planner: pass in_planner argument to add_segment() 2021-02-17 07:26:55 -08:00
divelogexportlogic.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
divelogexportlogic.h avoid duplicate and inconsistent applying of QDir::separator() 2019-03-27 07:36:33 -07:00
divemode.h Cleanup: move planner/deco related declarations planner/deco.h 2019-08-08 16:26:31 -07:00
divesite-helper.cpp Dive site: use own copy of taxonomy in dive-site-edit widget 2018-10-13 21:41:41 -04:00
divesite.c mobile/edit: don't add dive site twice to table 2020-03-17 14:05:24 -07:00
divesite.h cleanup: move dive_table from dive.h to divelist.h 2020-05-01 09:42:31 -07:00
divesitehelpers.cpp cleanup: replace membuffer by membufferpp in C-code 2021-07-23 11:22:43 -07:00
divesitehelpers.h [Bug #2934] Geo Lookup - support for remote dive sites 2020-09-05 17:34:15 +02:00
downloadfromdcthread.cpp Re-do the libdivecomputer fingerprint save/load code 2021-09-19 16:51:46 -07:00
downloadfromdcthread.h Re-do the libdivecomputer fingerprint save/load code 2021-09-19 16:51:46 -07:00
equipment.c core: correct AL* tankinfo sizes. 2020-12-17 08:10:56 -08:00
equipment.h core: keep tank infos in a dynamic table 2020-12-13 11:49:59 -08:00
errorhelper.c Don't expose 'detach_buffer()' to membuffer users 2019-10-27 12:42:54 -07:00
errorhelper.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
event.c cleanup: break out event-related code into event.[c|h] 2020-10-25 13:59:52 -07:00
event.h cleanup: break out event-related code into event.[c|h] 2020-10-25 13:59:52 -07:00
exif.cpp cleanup: move declaration of utc_mk* functions to new subsurface-time.h header 2020-05-01 09:42:31 -07:00
exif.h
extradata.h cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
file.c cloudstorage: some cleanup of cloud url handling 2021-04-19 12:51:01 -07:00
file.h devices: create device nodes in parsers 2020-10-24 09:51:37 -07:00
filterconstraint.cpp core: move formatting of day-of-week to string-format.cpp 2021-01-01 21:10:10 +01:00
filterconstraint.h filter: add tank size filter constraint 2020-10-03 10:29:15 -07:00
filterpreset.cpp filter: remove filter_preset_table_t 2020-10-17 09:04:20 -07:00
filterpreset.h filter: remove filter_preset_table_t 2020-10-17 09:04:20 -07:00
format.cpp core: C++-ify membuffer 2021-07-23 11:22:43 -07:00
format.h
fulltext.cpp filter: implement importing of filter presets 2020-09-29 16:13:03 -07:00
fulltext.h fulltext: remember original query 2020-09-29 16:13:03 -07:00
gas-model.c Cleanup: replace macro by inline function in gas-model.c 2019-08-08 15:22:09 -07:00
gas.c Use PSCR gas when computing O2 toxicity 2021-03-12 22:24:23 +01:00
gas.h Use PSCR gas when computing O2 toxicity 2021-03-12 22:24:23 +01:00
gaspressures.c cleanup: constify populate_pressure_information() 2021-01-20 10:01:50 -08:00
gaspressures.h cleanup: constify populate_pressure_information() 2021-01-20 10:01:50 -08:00
gettext.h
gettextfromc.cpp Localization: make cache thread safe and robust against use-after-free 2018-06-24 20:31:14 +02:00
gettextfromc.h Localization: remove gettextFromC::instance() 2018-06-24 20:31:14 +02:00
git-access.c cloudstorage: update remote if cloud server changes 2021-04-19 12:51:01 -07:00
git-access.h cleanup: don't hardcode array length 2021-04-19 12:51:01 -07:00
imagedownloader.cpp core: add "transparent" parameter to renderSVGIcon 2021-01-01 21:10:10 +01:00
imagedownloader.h Profile: add "synchronous" mode for picture plotting 2019-02-07 16:06:43 +01:00
import-cobalt.c cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
import-csv.c core/import: fix string check logic 2021-07-23 11:30:17 -07:00
import-csv.h parser: add device_table to parser state 2020-10-24 09:51:37 -07:00
import-divinglog.c cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
import-seac.c cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
import-shearwater.c cleanup: remove system includes from dive.c 2020-10-25 13:59:52 -07:00
import-suunto.c cleanup: remove system includes from dive.c 2020-10-25 13:59:52 -07:00
interpolate.h cleanup: move interpolate inline function to its own header file 2020-10-25 13:59:52 -07:00
ios.cpp cloud-storage: simplify creation of git authorship 2020-04-09 17:05:44 -07:00
libdivecomputer.c Re-do the libdivecomputer fingerprint save/load code 2021-09-19 16:51:46 -07:00
libdivecomputer.h Re-do the libdivecomputer fingerprint save/load code 2021-09-19 16:51:46 -07:00
liquivision.c cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
load-git.c Clean up divecomputer 'device' handling 2021-08-18 13:22:02 -07:00
macos.c cloud-storage: simplify creation of git authorship 2020-04-09 17:05:44 -07:00
membuffer.cpp core: C++-ify membuffer 2021-07-23 11:22:43 -07:00
membuffer.h core: C++-ify membuffer 2021-07-23 11:22:43 -07:00
metadata.cpp cleanup: remove getDivesInTrip() in qthelper.cpp 2020-12-29 08:34:09 -08:00
metadata.h Add 'location_t' data structure 2018-10-21 19:55:09 +03:00
metrics.cpp desktop: cache photo and geo icons 2021-02-10 14:33:15 -08:00
metrics.h desktop: cache photo and geo icons 2021-02-10 14:33:15 -08:00
ostctools.c cleanup: move sort_dive_table declaration to divetable.h 2020-10-25 13:59:52 -07:00
parse-gpx.cpp cleanup: move declaration of utc_mk* functions to new subsurface-time.h header 2020-05-01 09:42:31 -07:00
parse-gpx.h cleanup: only include QString in desktop-widgets/importgps.h 2020-05-01 09:42:31 -07:00
parse-xml.c parser: XML_PARSE_RECOVER to xmlReadMemory() 2021-09-03 09:30:34 -07:00
parse.c Clean up divecomputer 'device' handling 2021-08-18 13:22:02 -07:00
parse.h cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
picture.c core/picture: don't compile all on mobile 2020-11-19 17:18:33 -08:00
picture.h core: move picture-related function from dive.c to picture.c 2020-05-06 13:58:09 -07:00
pictureobj.cpp media: add small C++ helper describing a picture struct 2020-05-06 13:58:09 -07:00
pictureobj.h media: add small C++ helper describing a picture struct 2020-05-06 13:58:09 -07:00
planner.c Planner: Correctly compute CNS and OTU for bailout segments 2021-08-19 10:58:08 -07:00
planner.h cleanup: move DECOTIMESTEP from dive.h to planner.h 2020-05-01 09:42:31 -07:00
plannernotes.c planner: pass in_planner argument to decoMode() 2021-02-17 07:26:55 -08:00
pref.c core: remove location service preferences 2021-09-13 11:21:34 -07:00
pref.h core: remove location service preferences 2021-09-13 11:21:34 -07:00
profile.c core: fix off-by-one causing incorrect profile display 2021-09-06 13:00:37 -07:00
profile.h cleanup: constify create_plot_info_new() 2021-01-20 10:01:50 -08:00
qt-ble.cpp Use QtBluetooth enums from their namespace 2021-03-12 08:41:31 -08:00
qt-ble.h cleanup: remove dc_user_device_t 2020-10-24 09:51:37 -07:00
qt-gui.h mobile/UI: remember the system default font size 2021-01-19 12:35:29 -08:00
qt-init.cpp cleanup: remove getDivesInTrip() in qthelper.cpp 2020-12-29 08:34:09 -08:00
qthelper.cpp cleanup: replace membuffer by membufferpp in C-code 2021-07-23 11:22:43 -07:00
qthelper.h cloudstorage: update remote if cloud server changes 2021-04-19 12:51:01 -07:00
qtserialbluetooth.cpp Use QtBluetooth enums from their namespace 2021-03-12 08:41:31 -08:00
sample.c cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
sample.h core: use int16_t for sensor-id 2021-07-23 11:16:00 -07:00
save-git.c Clean up divecomputer 'device' handling 2021-08-18 13:22:02 -07:00
save-html.c cleanup: remove system includes from dive.c 2020-10-25 13:59:52 -07:00
save-html.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
save-profiledata.c Fix CSV for profile export 2020-04-18 13:41:29 +02:00
save-profiledata.h Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
save-xml.c parser: XML_PARSE_RECOVER to xmlReadMemory() 2021-09-03 09:30:34 -07:00
selection.cpp selection: when changing current dive make sure it is selected 2020-09-20 18:23:57 -07:00
selection.h selection: create global single_selected_trip() function 2020-05-03 15:02:21 -07:00
serial_ftdi.c core: fix libdivecomputer dc_custom callbacks structures 2020-06-18 09:05:13 -07:00
serial_usb_android.cpp android/usb: remove "autoselect driver" option for unknown VID/PIDs 2020-03-16 07:58:20 -07:00
serial_usb_android.h android/usb: pass in the UsbDevice when downloading 2020-03-16 07:58:20 -07:00
sha1.c
sha1.h
ssrf.h core: remove LOG_STP from mobile 2019-12-13 07:04:00 -05:00
statistics.c cleanup: remove system includes from dive.c 2020-10-25 13:59:52 -07:00
statistics.h cleanup: remove system includes from dive.c 2020-10-25 13:59:52 -07:00
string-format.cpp core: move formatting of day-of-week to string-format.cpp 2021-01-01 21:10:10 +01:00
string-format.h core: move formatting of day-of-week to string-format.cpp 2021-01-01 21:10:10 +01:00
strndup.h
strtod.c
structured_list.h media: use table instead of linked list for media 2020-05-06 13:58:09 -07:00
subsurface-string.h
subsurface-time.h cleanup: const-ify utc_mktime() 2020-12-29 08:34:09 -08:00
subsurfacestartup.c cleanup: move pref related structs and functions to pref.c 2021-01-02 10:26:29 -08:00
subsurfacestartup.h cleanup: move application flags to core/subsurfacehelper.h 2020-10-25 13:59:52 -07:00
subsurfacesysinfo.cpp cleanup: refactor subsurfacesysinfo.cpp 2020-10-27 16:18:09 -07:00
subsurfacesysinfo.h cleanup: refactor subsurfacesysinfo.cpp 2020-10-27 16:18:09 -07:00
table.h media: create sort_picture_table function via macro 2020-05-06 13:58:09 -07:00
tag.c Don't expose 'detach_buffer()' to membuffer users 2019-10-27 12:42:54 -07:00
tag.h Cleanup: move tag functions into own translation unit 2019-06-19 13:11:10 -07:00
taxonomy.c cleanup: make taxonomy_index_for_category() local to taxonomy.c 2020-09-06 12:59:54 -07:00
taxonomy.h cleanup: make taxonomy_index_for_category() local to taxonomy.c 2020-09-06 12:59:54 -07:00
time.c cleanup: const-ify utc_mktime() 2020-12-29 08:34:09 -08:00
timer.c Add timestamps to libdivecomputer.log 2020-03-10 17:42:54 -07:00
timer.h Add timestamps to libdivecomputer.log 2020-03-10 17:42:54 -07:00
trip.c cleanup: fix over-eager Coverity warnings 2020-10-25 13:58:03 -07:00
trip.h selection: add selection flag for trips 2020-05-03 15:02:21 -07:00
uemis-downloader.c cleanup: initialize all members of weightsystem 2020-10-26 19:27:03 -07:00
uemis.c cleanup: split out divecomputer functions from dive.c 2020-10-25 13:59:52 -07:00
uemis.h Dive site: use pointer instead of uuid in uemis_helper 2018-10-29 00:09:31 +00:00
units.c cleanup: move definition of get_units() to core/unit.c 2021-01-02 10:26:29 -08:00
units.h Implement Seac SeacSync databaser parser. 2020-09-04 15:54:08 +03:00
unix.c cleanup: remove system includes from dive.c 2020-10-25 13:59:52 -07:00
uploadDiveLogsDE.cpp parser: XML_PARSE_RECOVER to xmlReadMemory() 2021-09-03 09:30:34 -07:00
uploadDiveLogsDE.h export: clean up temp file after divelogs.de upload 2021-08-06 11:05:06 -07:00
uploadDiveShare.cpp cleanup: replace membuffer by membufferpp in C-code 2021-07-23 11:22:43 -07:00
uploadDiveShare.h core: divehare change slot names 2019-12-12 10:10:01 -05:00
version.c
version.h
videoframeextractor.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
videoframeextractor.h Dive media: Extract thumbnails from videos with ffmpeg 2018-07-28 15:31:25 -07:00
webservice.h
windows.c cleanup: refactor subsurfacesysinfo.cpp 2020-10-27 16:18:09 -07:00
windowtitleupdate.cpp Cleanup: Make WindowsTitleUpdate a global object 2018-07-30 13:55:23 -07:00
windowtitleupdate.h Cleanup: Make WindowsTitleUpdate a global object 2018-07-30 13:55:23 -07:00
worldmap-options.h
worldmap-save.c cleanup: move dive_table from dive.h to divelist.h 2020-05-01 09:42:31 -07:00
worldmap-save.h Cleanup: remove const bool parameters and return types 2020-02-09 12:13:18 -08:00
xmlparams.cpp core: add a small helper-struct that keeps track of xml-parameters 2020-10-23 18:17:02 -07:00
xmlparams.h core: add a small helper-struct that keeps track of xml-parameters 2020-10-23 18:17:02 -07:00
xmp_parser.cpp cleanup: move declaration of utc_mk* functions to new subsurface-time.h header 2020-05-01 09:42:31 -07:00
xmp_parser.h Metadata: rudimentary support for XMP metadataa in MP4-based videos 2018-09-25 14:59:14 -07:00