aboutsummaryrefslogtreecommitdiffstats
path: root/core/liquivision.c
AgeCommit message (Collapse)Author
2018-10-29Dive site: return pointer to dive_site in create_dive_site_*()Gravatar Berthold Stoeger
This changes more of the dive-site interface to return pointers instead of UUIDs. Currently, most call sites directly extract UUIDs afterwards. Ultimately, the UUIDs will be generally replaced by pointers, which will then simplify these callers. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-10-06Core: remove dive->downloaded flagGravatar Berthold Stoeger
This flag had two distinct uses: - signal that dives were downloaded, not imported - use to mark imported dives Both are not used anymore, therefore remove the flag. The uemis downloaded misused the flag to mark deleted dives. Instead misuse the "hidden_by_filter" flag. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-09-28Parser: parse text-based files into arbitrary tableGravatar Berthold Stoeger
In d815e0c9476ef62e6b84fb28ce48ab7cddefe77e a dive_table pointer was added to the parsing functions to allow parsing into tables other than the global dive table. This will be necessary for undo of import and implementation a cleaner interface. A few cases, notably CSV and proprietary formats were forgotten. Implement parsing into arbitrary tables also for these cases. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-05-24core: replace (void) with UNUSED(x) and include ssrf.hGravatar jan Iversen
Unused parameters in C are "silenced" by adding UNUSED(x) Signed-off-by: Jan Iversen <jani@apache.org>
2018-01-10cleanup: initilize local variableGravatar Jan Mulder
Silence compiler warning by correctly initializing local variable. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-26Cleanup: avoid memory leakGravatar Dirk Hohndel
Coverity CID 208327 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-07Safeguards for Liquivision importGravatar Miika Turkia
I have received one sample log where after parsing a bunch of dives properly, the sample count hits zero, and after that it is astronomical. In case of zero, the only data we have is dive date and time of a duplicate dive that we already parsed with proper dive profile. So preventing a crash with this hack without properly understanding the weird file format. Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2017-07-28Import all pressure sensors from Liquivision logsGravatar Linus Torvalds
The other pressure sensors were disabled on import because we didn't use to handle multiple sensors well at all. Now it "JustWorks(tm)". Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-07-21Start cleaning up sensor indexing for multiple sensorsGravatar Linus Torvalds
This is a very timid start at making us actually use multiple sensors without the magical special case for just CCR oxygen tracking. It mainly does: - turn the "sample->sensor" index into an array of two indexes, to match the pressures themselves. - get rid of dive->{oxygen_cylinder_index,diluent_cylinder_index}, since a CCR dive should now simply set the sample->sensor[] indices correctly instead. - in a couple of places, start actually looping over the sensors rather than special-case the O2 case (although often the small "loops" are just unrolled, since it's just two cases. but in many cases we still end up only covering the zero sensor case, because the CCR O2 sensor code coverage was fairly limited. It's entirely possible (even likely) that this migth break some existing case: it tries to be a fairly direct ("stupid") translation of the old code, but unlike the preparatory patch this does actually does change some semantics. For example, right now the git loader code assumes that if the git save data contains a o2pressure entry, it just hardcodes the O2 sensor index to 1. In fact, one issue is going to simply be that our file formats do not have that multiple sensor format, but instead had very clearly encoded things as being the CCR O2 pressure sensor. But this is hopefully close to usable, and I will need feedback (and maybe test cases) from people who have existing CCR dives with pressure data. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-07-20Unify sample pressure and o2pressure as pressure[2] arrayGravatar Linus Torvalds
We currently carry two pressures around for all the samples and plot info, but the second pressure is reserved for CCR dives as the O2 cylinder pressure. That's kind of annoying when we *could* use it for regular sidemount dives as the secondary pressure. So start prepping for that instead: don't make it "pressure" and "o2pressure", make it just be an array of two pressure values. NOTE! This is purely mindless prepwork. It literally just does a search-and-replace, keeping the exact same semantics, so "pressure[1]" is still just O2 pressure. But at some future date, we can now start using it for a second sensor value for sidemount instead. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-15Fix buffer overrun and primary sensor id issues in Liquivision importGravatar Robert Bodily
This changeset fixes 5 issues specific to importing from Liquivision dive logs: Issue #1: Buffer overrun causes segmentation fault. At the end of a dive record, untranslatable data is skipped and the file is scanned for the start of the next dive. This scan was implemented without regard to buffer size and so the scan ran over the buffer boundary when trying to scan for the next record after importing the last record in the file. Issue #2: Incorrect identification of the primary sensor. The primary tank pressure transmitter was being identified by using the sensor ID reported in the first pressure event record encountered. When diving with multiple transmitters (buddy, student, or group transmitters), this is often not the case and results in the buddy or other group transmitter's pressure data being imported instead of the primary's. Through empirical observation of several multi-sensor logs, I identified a previously unhandled event code (0x10) as marking a sensor identification event record. Parsing this record allows the primary and other sensors to be definitively identified regardless of which one sends the first pressure event. Issue #3: Sensor values added to the sample collection regardless of sensor ID. When processing events, the code previously dropped through to create a sample for every pressure event record, regardless of which sensor ID that event is associated with. Pressure events for sensors other than the primary are now ignored and omitted from the sample collection. Issue #4: Duplicate samples when pressure event time syncs with sample time. The sample index (d) was not incremented in this specific case resulting in a duplicate sample (for the same sample time) being created when processing the next pressure event record. Issue #5: Unsigned time difference results in erroneous interpolated samples. When interpolating/extrapolating depth and temperature values for a between- samples pressure event, a signed time value is subtracted from an unsigned time value, resulting in an unsigned term. This term is used as a scaling factor and should be signed to allow for a negative value. Currently, negative values are instead treated as large unsigned values which result in erroneous scaled depth and temperature values. Signed-off-by: Robert Bodily <robert@bodily.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-04-29Add SPDX header to core C filesGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-03-11Merge branch 'master' of https://github.com/dje29/subsurfaceGravatar Dirk Hohndel
2017-03-11We use 'setpoint' in UI. Use it also for documentation and comments. No ↵Gravatar Martin Měřinský
semantic change.
2017-03-09Fix potential double/float to int rounding errorsGravatar Jeremie Guichard
Not using lrint(f) when converting double/float to int creates rounding errors. This error was detected by TestParse::testParseDM4 failure on Windows. It was creating rounding inconsistencies on Linux too, see change in TestDiveDM4.xml. Enable -Wfloat-conversion for gcc version greater than 4.9.0 Signed-off-by: Jeremie Guichard <djebrest@gmail.com>
2016-04-04Move subsurface-core to core and qt-mobile to mobile-widgetsGravatar Dirk Hohndel
Having subsurface-core as a directory name really messes with autocomplete and is obviously redundant. Simmilarly, qt-mobile caused an autocomplete conflict and also was inconsistent with the desktop-widget name for the directory containing the "other" UI. And while cleaning up the resulting change in the path name for include files, I decided to clean up those even more to make them consistent overall. This could have been handled in more commits, but since this requires a make clean before the build, it seemed more sensible to do it all in one. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>