162 Commits

Author SHA1 Message Date
Linus Torvalds
ffbb472975 Merge git://github.com/libdivecomputer/libdivecomputer into Subsurface-NG
Merge upstream libdivecomputer updates from Jef:

 - Add support for the Aqualung i550C

 - Update Ratio iX3M GPS naming and note that they support rfcomm

 - misc cleanups

* 'master' of git://github.com/libdivecomputer/libdivecomputer:
  Add support for the Aqualung i550C
  Enable bluetooth support for the Ratio iX3M GPS
  Update the naming of the Ratio iX3M GPS range
  Mark the string tables as constant
  Refactor the filter functions
2019-07-14 17:34:38 -07:00
Janice McLaughlin
d5aa15c1c5 Add support for the Aqualung i550C 2019-07-08 08:49:14 +02:00
Linus Torvalds
1bbd386959 Merge git://github.com/libdivecomputer/libdivecomputer
Merge upstream libdivecomputer updates from Jef:

 - Support the new versions of the Mares Genius with more memory

 - misc small fixes (Pelagic/atom2 tank pressure fix, proper error
   codes, license info for AES code)

* git://github.com/libdivecomputer/libdivecomputer:
  Fix the tank pressure reporting
  Return the correct error code
  Add support for the Mares Genius
  Simplify the detection of air integrated models
  Refactor the gas mix and tank parsing
  Refactor the date/time parsing
  Replace the header offset with the header size
  Use symbolic constants for the commands
  Add license information to the AES code
  Update the udev rules
2019-07-04 10:50:17 +09:00
Janice McLaughlin
c70046bccf Fix the tank pressure reporting
A small typo introduced with the Tusa Talis support in commit
b188c414206daaa5b6de464ced98d78f6da7cde1 accidentally disabled the tank
pressure reporting for all models.
2019-06-27 08:55:45 +02:00
Linus Torvalds
e38406b353 Start adding IDs for the Oceanic Geo 4.0
There's a new dive computer in town: the Oceanic Geo 4.0.  It looks like
it should support BLE, and is probably fairly similar to the Pro Plus X.
Or so this initial support trial just assumes.

I don't have the version string for this device yet, so that hasn't been
added at all.  A full dump is required, the initial report only (almost
accidentally) gave the model numbers thanks to the BLE scan data.

Reported-by: George Rocks <jrroques2004@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-05-31 10:03:06 -07:00
Linus Torvalds
8fb2b75c25 Merge git://github.com/libdivecomputer/libdivecomputer into Subsurface-NG
Merge Jef's upstream updates.

Trivial conflicts just because of whitespace differences and a comment
difference in our Suunto D5 support changes.

* git://github.com/libdivecomputer/libdivecomputer:
  Add support for the Suunto D5
  Add support for the Tusa Talis
  Add the G2 HUD bluetooth device name
  Detect Mares Quad with more flash memory
  Fix the limit for an invalid sample temperature
  Fix a buffer overflow
2019-05-31 09:49:17 -07:00
Jef Driesen
b188c41420 Add support for the Tusa Talis
Reported-By: Nick Shore <support@mac-dive.com>
2019-05-27 09:06:13 +02:00
Linus Torvalds
2971cc20ff Merge git://github.com/libdivecomputer/libdivecomputer into Subsurface-NG
Pull upstream updates from Jef Driesen.

This adds ID entries for the Scubapro G2 HUD (but no GPS parsing support
yet) and the Aladin H Matric.

Also fix ndl/deco parsing for for Aqualung i450T.

* git://github.com/libdivecomputer/libdivecomputer:
  Fix the ndl/deco sample for the Aqualung i450T
  Add support for the Scubapro G2 HUD
  Add support for the Scubapro Aladin H Matrix
2019-04-24 09:04:42 -07:00
Jef Driesen
f37c3d3c86 Fix the ndl/deco sample for the Aqualung i450T 2019-04-24 16:23:11 +02:00
Linus Torvalds
e34e211c3e Merge git://github.com/libdivecomputer/libdivecomputer into Subsurface-NG
Sync up with Jef's upstream changes.

About half of it was stuff we'd already done: i770R support (together
with the Oceanic dive truncation) and the change to the Scubapro G2 BLE
protocol.

And once again, Jef has taken the work of others (me and Janice) and
made pointless changes to it just to make merging harder.

And once again, I tried to match up with upstream as much as possible to
make future merges easier.  But it annoys me.

This *may* also get the Aqualung i300C working over bluetooth.  I have
no real way to test, but the basic parsing support is there thanks to
Jef, and Janice implied that the BLE handshaking is the same as the
i770R.

* 'master' of git://github.com/libdivecomputer/libdivecomputer:
  Add support for the Aqualung i300C
  Add support for the Aqualung i770R
  Fix the Pro Plus X gas mixes
  Oceanic: fix up dive truncation issues
  Scubapro G2: update BLE downloading for new 1.4 firmware version
  Add a workaround for invalid ringbuffer begin pointers
2018-12-02 11:52:06 -08:00
Jef Driesen
43303eadf6 Add support for the Aqualung i300C 2018-11-28 16:34:50 +01:00
Janice McLaughlin
52388efe59 Add support for the Aqualung i770R
It appears that the Aqualung i770R looks almost the same as the Pro Plus
X, but has an additional pO2 field for each gas by the O2 field, which
impacts the offset calculations.
2018-11-28 16:34:50 +01:00
Janice McLaughlin
f5d636d12e Fix the Pro Plus X gas mixes 2018-11-28 16:34:50 +01:00
Linus Torvalds
65ef99981f Aqualung i770R: _really_ fix the gas mix parsing
Commit fac3c8ff1487 ("Aqualung i770R: fix up gas mix parsing") was
supposed to fix gasmix parsing for the i770R, but because Janice's patch
didn't apply as-is, I had just redone it by hand, and in the process
copied the wrong o2_offset for the i770R, giving (not surprisingly) the
wrong results.

This just fixes my copy-paste error to what Janice actually had
originally.

Mea culpa.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-10-05 15:04:37 -07:00
Janice McLaughlin
fac3c8ff14 Aqualung i770R: fix up gas mix parsing
It appears that the Aqualung i770R looks almost the same as the ProPlus
X, but has an additional pO2 field for each gas by the O2 field, which
impacts the offset calculations.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-10-04 10:06:54 -07:00
Linus Torvalds
07a33e88c3 First attempt at supporting the Aqualung i770R
This works over BLE, although the end result of a dive download is still
a bit wonky.  There remains some parsing problem that Jef says are
likely be common with the Pro Plus too.

The serial download doesn't work at all, for unknown reasons.  That
*should* be the easy part that "just works" and acts the way previous
similar dive computers have acted.  It's a standard FTDI chip (FT231X)
that exposes a serial connection, but there may be some setup required
to choose between USB and BLE that we do not know about right now.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-09-30 10:08:06 -07:00
Linus Torvalds
f705ddefa8 Merge branch 'master' of git://github.com/libdivecomputer/libdivecomputer into Subsurface-NG
Pull Aqualung i100 support from Jef's upstream libdivecomputer.

Very similar to the I200, but with the header in a different location.

* 'master' of git://github.com/libdivecomputer/libdivecomputer:
  Add support for the Aqualung i100
2018-09-24 12:25:11 -07:00
Jef Driesen
e968f84999 Add support for the Aqualung i100 2018-09-24 10:11:42 +02:00
Linus Torvalds
63cd80c560 Merge https://github.com/libdivecomputer/libdivecomputer into Subsurface-NG
Merge upstream libdivecomputer changes from Jef Driesen.

* https://github.com/libdivecomputer/libdivecomputer:
  Add Travis CI integration
  Fix the transport command-line parameter
  Document dc_descriptor_get_model
  Include stddef.h in iostream.h
  Add support for the Mares Smart Air
  Fix the average depth for older OSTC dives
  Add support for the Oceanic Pro Plus X
2018-08-31 12:52:50 -07:00
Jef Driesen
aee70d1ec7 Add support for the Oceanic Pro Plus X
The Oceanic Pro Plus X is quite different from the previous models. The
profile data is now stored in a dedicated memory area, and hence there
are a few important differences:

Reading data from the new profile memory area is done with a new F6
command. This new command is very similar to the existing B8 command,
but accesses a completely different memory area. In order to integrate
those two memory areas as transparantly as possible into the existing
infrastructure, a virtual memory space is introduced. The lower part of
the virtual memory is mapped onto the main memory area, while the upper
part is mapped onto the new profile memory area.

The page size of the new profile memory area also increased from 16 to
256 bytes. If the profile size is not an exact multiple of 256 bytes,
the dive computer pads the profile data with 0xFF bytes.

The other changes are the usual Oceanic device specific changes.
2018-07-20 10:18:49 +02:00
Dirk Hohndel
f248a95d64 Oceanic Atom2: add extended string information parsing
This adds the string field interface to the Oceanic Atom2 family,
including the proper serial number handling.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-04-24 17:32:21 -07:00
Jef Driesen
26f5925c05 Implement the ndl/deco, rbt and bookmark samples 2017-08-25 21:25:21 +02:00
Jef Driesen
abab44a74c Implement the ndl/deco sample for the Aqualung i300 2017-08-20 21:29:18 +02:00
Jef Driesen
156f54302d Add basic timezone support
Allthough most dive computers always use local time and don't support
timezones at all, there are a few exceptions. There are two different
sources of timezone information:

 - Some of the newer Uwatec/Scubapro devices use UTC internally and also
   support a timezone setting. This UTC offset is currently taken into
   account to obtain the dive date/time, but the UTC offset itself is
   lost.

 - Uwatec/Scubapro and Reefnet devices rely on the clock of the host
   system to synchronize the internal device clock and calculate the
   dive date/time. The consequence is that the resulting date/time is
   always in the timezone of the host system.

In order to preserve this timezone information, the dc_datetime_t
structure is extended with a new "timezone" field, containing the UTC
offset in seconds. Devices without timezone support will set the field
to the special value DC_TIMEZONE_NONE.

The dc_datetime_localtime() and dc_datetime_gmtime() functions will
automatically populate the new field with respectively the local
timezone offset and zero. The dc_datetime_mktime() function will take
into account the new timezone field for the conversion to UTC. The
special value DC_TIMEZONE_NONE is interpreted as zero.
2017-08-18 23:26:45 +02:00
Jef Driesen
f7bcbb5828 Add support for the Aqualung i200 2017-08-15 11:47:05 +02:00
Kristaps Dzonsons
0b22a2ba33 Fix the Oceanic OCS freedive mode 2017-06-02 11:24:00 +02:00
Jef Driesen
d1a06e784c Remove deprecated functions from the public api
The vendor_product_parser_create() and vendor_product_device_open()
functions should be called indirectly, through the generic
dc_device_open() and dc_parser_new() functions. And the
vendor_product_extract_dives() functions are internal functions that
should never have been part of the public api in the first place.
2017-04-18 08:41:10 +02:00
Jef Driesen
e96611cccd Fix the number of gas mixes
The Tusa Zen supports a maximum of only 2 gas mixes.
2017-02-10 19:42:02 +01:00
Jef Driesen
0832f97492 Fix the name of the Aqualung i550
The Aqualung i550 doesn't have a "T" (which probably stands for
transmitter) in its name.
2017-02-01 08:32:01 +01:00
Jef Driesen
9cb6856bfb Fix the ndl/deco and rbt samples
The Air Time Remaining (ATR) and Dive Time Remaining (DTR) fields have
been swapped.
2017-01-30 20:54:59 +01:00
Jef Driesen
e5805f3f7d Fix the Aqualung i450T time samples
The Aqualung i450T appears to ignore the fixed sample rate and instead
store a timestamp in each sample.

The presence of the surface samples in combination with this timestamp
based format is odd. Even the official Diverlog software is confused:
the Windows versions seems to ignore them, but the Mac version takes
them into account.
2017-01-19 22:11:48 +01:00
Jef Driesen
8a4c1f1ef7 Split the raw data into multiple vendor samples
After the previous commit, the raw data is now reported with one large
vendor sample. Because that makes the data more difficult to interpret
(for example during debugging), a small helper function is added to
split the data again in multiple vendor samples.
2017-01-19 22:11:48 +01:00
Jef Driesen
7c0f8f9b9d Output samples only once all raw data is available
Originally, the time and vendor sample values are emitted immediately
after the previous sample is complete. This is now postponed until all
raw samples are available.

This will be required for the Aqualung i450t. That model appears to
ignore the fixed sample rate and instead store a timestamp in each
sample. That means the timestamp is only available once the last raw
sample data has been reached.
2017-01-19 22:06:52 +01:00
Jef Driesen
0429ea146e Fix the length check 2017-01-19 22:06:31 +01:00
Jef Driesen
ef47084e05 Skip the extra samples one by one
Skipping the extra samples by increasing the length is not always
reliable. If there are empty samples present, they will get skipped
instead of the real samples. And if the number of samples isn't an exact
multiple of the samplerate, we're accessing data beyond the end of the
dive profile.
2017-01-19 22:06:31 +01:00
Jef Driesen
3c17132a55 Implement ndl/deco for the Hollis DG03 2017-01-19 22:05:20 +01:00
Jef Driesen
296b13947f Update the Aqualung i750TC parser
The Aqualung i750TC data format appears identical to the Oceanic VTX
format. Therefore the i750TC parser is updated to match with the VTX
parser.
2016-12-06 08:47:11 +01:00
Jef Driesen
61f3031364 Add support for the Aqualung i750TC 2016-11-12 16:05:50 +01:00
Jef Driesen
d0dbd1f6fd Remove the deprecated gas change events
The new gas mix sample has been around for a while now, and we're not
going to maintain the deprecated events forever.
2016-11-04 19:24:54 +01:00
Jef Driesen
8ad3e6322e Add support for the Oceanic F10.
This appears to be an Oceanic branded version of the Aeris F10.
2016-10-01 10:49:02 +02:00
Janice
3cb29abfaa Add support for the Subgear XP-Air 2016-09-24 10:07:15 +02:00
Jef Driesen
3b179e7058 Add support for the Sherwood Vision. 2016-08-25 09:10:06 +02:00
Jef Driesen
c506be93f9 Fix the decoding of the maximum depth.
Several devices (e.g. Oceanic Geo, Oceanic Veo 2.0 and Tusa Zen) report
a maximum depth that is clearly too large. The problem is easily fixed
by ignoring the higher bits. The exact bit mask is an educated guess. A
12 bit value is plausible because it's also used for the sample depths.
2016-08-23 07:58:25 +02:00
Jef Driesen
dfa191c9bc Fix the temperature for the Tusa Zen Air. 2016-08-20 21:22:19 +02:00
Jef Driesen
f666cb8cb3 Add support for the Aqualung i550T. 2016-08-20 21:20:01 +02:00
Janice
e99b8ac837 Add NDL and RBT for the ATOM31 and I450T 2016-08-05 10:26:07 +02:00
Jef Driesen
47037286a2 Fix the sample rate for the Aqualung i450t. 2016-06-13 15:17:58 +02:00
Jef Driesen
8f776cc55e Add support for the Aqualung i300. 2016-05-16 09:06:57 +02:00
Jef Driesen
dbba7f3272 Fix the date for the Sherwood Insight 2. 2016-04-27 16:20:04 +02:00
Jef Driesen
33f5206f79 Add support for the Beuchat Mundial 2 and 3.
These two models use the same memory layout and data format as the
Oceanic F10.

Reported-By: Nick Shore <support@mac-dive.com>
2016-04-27 09:09:06 +02:00