11 Commits

Author SHA1 Message Date
Dirk Hohndel
4d8cdaaf8e Garmin: attempt to parse big endian .FIT files
The only examples I have seen so far are small incomplete files that
don't contain the dive profile, so I'm unsure if this is sufficient (and
why there are big endian files in the first place).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2022-10-06 13:27:26 -07:00
Linus Torvalds
aff0c28d08 Merge https://github.com/libdivecomputer/libdivecomputer into Subsurface-DS9
Merge Jef's upstream updates:

 - Add support for Seac Screen and Action

 - Add support for Cressi Michelangelo

 - misc small fixes

* https://github.com/libdivecomputer/libdivecomputer:
  Add support for the Seac Screen and Action
  Add an address parameter to the memory dump helper function
  Ignore invalid gas mixes
  Add support for the Cressi Michelangelo
  Move the C_ARRAY_SIZE macro to a common place
  Fix the timezone offset in the xml output
  Emit a devinfo event when downloading a memory dump
  Read the info and more info data during startup
  Use helper functions to decode multibyte values
  Fix changing the OSTC settings
2022-06-05 09:02:06 -07:00
Dirk Hohndel
7c3e92e391 move pointer test to generic helper
This should always be tested for - the only other user of the generic
helper currently didn't test for it, either.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2022-05-31 14:46:30 -07:00
Dirk Hohndel
0aad8cfd13 Garmin: replace get_field function
The generic function already handles all the cases (treating gasmix and
tank count as being the same and responding UNSUPPORTED to the same set
of types). The only thing missing is the check of the value parameter
and the extraction of the cache pointer from the context.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2022-05-31 14:46:28 -07:00
Dirk Hohndel
cd72516668 Garmin: decode divemode
The code used sub_sport to figure out if this was a dive in the first
place, but then never reported back the specific dive mode, leading to
all dives being interpreted as open circuit.

Reported-By: Anton van Rosmalen
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2022-05-31 10:59:45 -07:00
Michael Andreen
93fe31eef5 Garmin: Fix gas change event parsing
The gas mixes are numbered from 0 and up and the gas change event uses
this number directly, so no need to subtract one.

Signed-off-by: Michael Andreen <michael@andreen.dev>
2021-11-17 11:58:14 +01:00
Linus Torvalds
e7da5acff3 Garmin: add extra-info for serial number and firmware version
In proper string format that matches what the Garmin reports on the
"About" screen.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-08-15 16:40:02 -10:00
Linus Torvalds
89b1cc4f28 Garmin Descent Mk2i: add support for parsing cylinder pressure data
Very early trial at parsing the pressure data from the Garmin tank pods.
It seems to work for the test-cases I have.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-10-30 12:37:19 -07:00
Linus Torvalds
c4a3db4ac1 Garmin: add skeleton for the new fields for the Descent Mk2/Mk2i
This adds the field definitions, but doesn't actually report the data
yet.  But just having the definitions makes the debug output a lot
easier to read through.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-10-30 10:50:00 -07:00
Linus Torvalds
0ebd5d3879 Garmin Descent: clear dive data in between dives
This actually got broken long ago (and before the new "Subsurface-DS9"
branch: when I converted the Garmin parser to use the generic field
cache, I missed the fact that the parser now cleared _only_ that generic
part of the per-dive cache in between different dives.

The GPS information, and the general dive information would be left
alone in between dives, and could leak from one dive to the next.

Most of the time you don't notice, because dives tend to all have the
same information, so the stale data would get overwritten when parsing
the next dive.  But that isn't _always_ true - particularly for the GPS
information, not all the data necessarily always exists.

So clear all the per-dive data when starting to parse a new dive.

This puts the non-gps data all in one sub-structure, so that it's easy
to clear that too in one go - even though that part of the data probably
always does get opverwritten by the new dive data.

Reported-by: @brysconsulting
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-09-29 16:54:48 -07:00
Linus Torvalds
4e9e94d9f8 Add backend for Garmin Descent Mk1
This uses pretty much all of our new infrastructure: the USB storage
iostream for the actual IO, the field-cache for the divecomputer fields,
and the string interface for the events.

It's also a very fast downloader.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-05-07 15:05:37 -07:00