590 Commits

Author SHA1 Message Date
Jef Driesen
ddf6fca65f Add support for the Uwatec Galileo Trimix. 2012-09-20 20:40:38 +02:00
Sascha Kettler
074bee70a2 Fixed date parsing for Oceanic VEO 3.0 2012-09-17 22:04:30 +02:00
Jef Driesen
1b7eaaa831 Add support for the Oceanic OCS. 2012-09-11 20:26:20 +02:00
Jef Driesen
6242978fc0 Add support for the Aeris Manta.
The last memory page is marked as unreadable, and the profile ringbuffer
end is set to 0xFE00.
2012-08-15 07:18:12 +02:00
Jef Driesen
58d0e0a62a Fix the libusb timeout handling.
A bulk transfer of more than 8K of data takes about one second with the
Cobalt. Because we use a one second timeout combined with a 10K buffer,
such a transfer can easily exceed the timeout. Normally this shouldn't
be a problem because the leftover data is supposed to be received with
the next transfer. However to break out of the loop we check the actual
number of bytes received, and ignore the libusb LIBUSB_ERROR_TIMEOUT
return code.

To fix this problem, the internal buffer is reduced to 8K, and the
timeout is increased to 2 seconds. This should avoid hitting the timeout
and allows to consider LIBUSB_ERROR_TIMEOUT a fatal error.
2012-08-11 23:08:24 +02:00
Pascal Manchon
0e1809aac9 Fix some ioctl calls on 64bit Mac OS X.
On Mac OS X (and probably the other BSD's too), the ioctl() syscall
takes an 'unsigned long' integer as the request parameter. On 64bit
systems this is a 64bit type, while on 32bit systems it's a 32bit type.

Some of the request constants are defined as 32 bit negative numbers.
Casting it to a 64bit value will perform a sign extension operation to
preserve the negative value. Because this results in a different request
code when interpreted as an unsigned integer, the ioctl() call fails
with ENOTTY. For example TIOCMBIS is defined as 0x8004746c and becomes
0xffffffff8004746 after the sign extension.

Linux 64bit is unaffected by this problem. None of the request constants
has the sign bit set, and thus the sign extension has no effect. For
example TIOCMBIS is defined as 0x5416.

By using an unsigned integer type, the sign extension can be avoided. We
use the 'unsigned long' type in case one of the request constants
happens to be defined as a 64bit number.
2012-07-08 13:42:13 +02:00
Grischa Toedt
2f4a9abf88 Fix a build error with automake 1.12 or newer.
Since automake 1.12, the warnings in the category 'extra-portability'
are now enabled by '-Wall'. Because of this change, linking libtool
archives requires the new AM_PROG_AR macro.
2012-07-07 22:54:42 +02:00
Jef Driesen
6423edffc8 Fix the profile ringbuffer end.
The profile ringbuffer is smaller than expected. The purpose of the
extra area after the profile ringbuffer is currently unknown.
2012-06-21 21:59:07 +02:00
Jef Driesen
80f5c7025e Fix the detection of the last dive.
It looks like the Icon HD erases old dives partially with 0xFF bytes
before overwriting them with new dives. If the head of the oldest dive
has been erased, the length field which is stored in the first 4 bytes
is erased as well, and we can use it to detect the last dive.
2012-06-19 23:00:30 +02:00
Jef Driesen
9c59563d4c Add support for eeprom bank number 2.
Devices with firmware version 2.22 (or greater) have an additional
eeprom bank with new custom functions.
2012-06-19 21:28:43 +02:00
Jef Driesen
fa54a55a89 Add a version suffix.
For development snapshots, a 'devel' suffix is added to distinguish from
the final release. If necessary, the suffix can also be used for 'alpha'
and 'beta' releases.
2012-06-19 21:27:46 +02:00
Jef Driesen
53b4a1c225 Post release version bump to 0.1.1 2012-06-03 22:13:38 +02:00
Jef Driesen
c3ea5a16e4 Release version 0.1.0 v0.1.0 2012-04-27 23:33:57 +02:00
Jef Driesen
b567f0774c Add a README file. 2012-04-27 23:28:42 +02:00
Jef Driesen
ec6795cbf3 Fix the Oceanic Veo 1.0 layout descriptor. 2012-04-24 19:31:39 +02:00
Jef Driesen
94b4ee368a Add partial support for the Oceanic Veo 1.0
The Veo 1.0 has very limited memory and doesn't have a logbook and
profile ringbuffer. Hence downloading dives isn't really supported, but
even this limited amount of data might be useful for someone.
2012-04-23 22:04:23 +02:00
Jef Driesen
0a6e0d93a8 Add support for the Aeris F10. 2012-04-23 21:37:02 +02:00
Jef Driesen
5ae0e37d1f Remove the hardcoded logbook entry size. 2012-04-23 21:37:02 +02:00
Jef Driesen
1faea84b5b Fix the gas mix parsing for the Oceanic VT 4.x. 2012-04-23 21:37:02 +02:00
Jef Driesen
2fe695d38e Adjust the header size calculations. 2012-04-23 21:37:01 +02:00
Jef Driesen
414a8053d5 Allow easier disabling of the tank switch and surface samples. 2012-04-23 21:37:01 +02:00
Jef Driesen
2897d1079a Allow easier disabling of the individual sample types. 2012-04-23 21:36:52 +02:00
Jef Driesen
6c2014732a Fix the gas mix parsing for the Aeris CompuMask. 2012-04-22 22:33:52 +02:00
Jef Driesen
5126ef389a Add support for the Oceanic Atom 3.1 2012-04-15 09:45:31 +02:00
Jef Driesen
a5f8c8cfff Add a small delay before flushing the serial line.
Sometimes there are a few garbages bytes received before the preamble
bytes. This typically happens when trying to download again after a
failed attempt. However trying to flush them immediately after opening
the serial port doesn't work.
2012-04-14 07:48:13 +02:00
Jef Driesen
8cec4d0a42 Increase the read timeout to 4 seconds.
When the OSTC receives the download dives command, it responds
immediately with the preamble bytes. But then it does a linear search
through its internal memory to locate the end-of-profile marker. As a
result the response time increases when the marker is located near the
end of the memory area. In the worst case scenario, the response time
can exceed the 3 second read timeout with a few milliseconds.

Since the required timeout depends on the total amount of profile
memory, this problem was indirectly introduced with firmware v1.91,
which doubled the amount of profile memory from 32K to 64K.
2012-04-14 07:46:50 +02:00
Jef Driesen
a2f4f1cd3f Replace the fixed delay with the new half-duplex emulation code. 2012-04-10 21:31:46 +02:00
Jef Driesen
b6d24e72e2 Add support for half-duplex emulation.
When using half-duplex communication (e.g. only a single wire for both
Tx and Rx) a data packet needs to be transmitted entirely before
attempting to switch into receiving mode.

For legacy serial hardware, the tcdrain() probably works as advertised,
and waits until the data has been transmitted. However for common
usb-serial converters, the hardware doesn't provide any feedback to the
driver, and the tcdrain() function can only wait until the data has been
transmitted to the usb-serial chip. There is no guarantee that the data
has actually been transmitted by the usb-serial chip.

As a workaround, we wait at least the minimum amount of time required to
transmit the data packet over a serial line, taking into account the
current configuration.
2012-04-10 21:31:31 +02:00
Jef Driesen
3c07a3017f Integrate the tcdrain() call into the write function. 2012-04-10 21:30:39 +02:00
Jef Driesen
060cc95d5c Substract the dive time from the date/time value.
The OSTC doesn't store the start of the dive, but the exit time. Hence
the dive time needs to be substracted.

For dives with format version 0x21, we prefer the total dive time in
seconds stored in the extended header. This time value also includes the
shallow parts of the dive, and therefore yields the most accurate start
time. The dive time is rounded down towards the nearest minute, to match
the value displayed by the ostc. For dives with the older format version
0x20, this value isn't available and we default to the normal dive time.
2012-04-10 21:21:52 +02:00
Jef Driesen
90a8452788 Add a wrapper for the mktime function. 2012-04-10 21:21:52 +02:00
Jef Driesen
bb4a498302 Fix the freedive mode detection for the Mares Puck Air. 2012-04-10 20:53:38 +02:00
Khalid El Fathi
3882827736 Spelling correction. 2012-04-05 20:21:23 +02:00
Björn Spruck
0f83d6ae23 Add support for parsing the events.
The event bits have been verified for a Mares M1 only.
2012-03-30 20:36:21 +02:00
Björn Spruck
407c40ed38 Fix the oxygen percentage for air dives.
When the dive mode setting is set to air, the oxygen percentage stored
in the header is different from the expected 21%. It might be the last
used nitrox percentage.
2012-03-29 21:41:41 +02:00
Jef Driesen
45c0750631 Adjust the profile ringbuffer to exclude the last 512 bytes. 2012-03-22 22:22:59 +01:00
Jef Driesen
a3f674913d Skip gaps between two consecutive dive profiles.
The assumption that two consecutive dive profiles are stored without any
gaps in between them, appears to be incorrect in some cases. Instead of
failing with an error we just skip those gaps now.
2012-03-16 22:53:57 +01:00
Jef Driesen
2b0ef8c0f1 Disable pressure samples for the Oceanic Veo 3.0. 2012-03-15 21:44:25 +01:00
Jef Driesen
4afa8ad1ef Mark the last memory page on an Oceanic Veo 3.0 as unreadable. 2012-03-15 21:44:25 +01:00
Jef Driesen
dea1fe358d Add support for the Darwin Air tank pressure. 2012-03-10 10:20:23 +01:00
Jef Driesen
d4b94cb77c Improve the communication with Darwin Air devices.
We received a report of a Darwin Air device which has a very high error
rate. The majority of the echo packets is incorrect, but since this
doesn't seem to have any effect on the actual data packet, we can just
ignore this error. If there happens to be a more serious error, it will
be detect in the data packet.

Sometimes there were also a some garbage bytes received at startup.
Adding a small delay seems to fix this.
2012-03-05 21:20:07 +01:00
Sam Calhoun
1ccd786493 Fix the temperature for the Oceanic ProPlus 2.1. 2012-03-01 22:05:35 +01:00
Jef Driesen
605cb37c23 Add support for the Oceanic OC1 Pioneer. 2012-02-24 20:36:28 +01:00
Jef Driesen
ee4f105a94 Revert back to a standard baudrate on Unix.
The linux USB CDC-ACM driver, which is used by the Mares Icon HD
interface, doesn't support the ioctl's to configure a custom baudrate.
But since the actual baudrate doesn't seem to matter at all, we revert
back to the nearest standard baudrate.

Because custom baudrates are confirmed to be supported on Windows and
Mac OS X, those platforms can keep using the non-standard baudrate.
2012-01-20 22:44:45 +01:00
Jef Driesen
87397a4ea1 Add support for the Oceanic VT4.1 2012-01-14 06:37:26 +01:00
Jef Driesen
2abd5164f4 Add a delay between sending the commands.
When trying to send the commands as fast as possible, without any delay,
the failure rate is very high. Almost every single packet fails with a
timeout at first. Retrying the packet works, but those many timeouts
make the download extremely slow. Adding a small delay avoids the much
more expensive timeout and speeds up the transfer significantly.
2012-01-02 08:01:08 +01:00
Jef Driesen
fa348c0d04 Rename the example application too. 2011-12-31 09:09:40 +01:00
Jef Driesen
48f6b1eec7 Add a command line parameter to specify the model code. 2011-12-31 07:52:07 +01:00
Jef Driesen
3d78282cde Rename the backend from darwinair to darwin.
The name change makes it more obvious the backend supports both the
Darwin and the Darwin Air, and it's a shorter name too.
2011-12-31 07:51:52 +01:00
Jef Driesen
ca56b5932a Add support for the Mares Darwin.
The Darwin and Darwin Air share a very similar layout, but with a few
differences here and there. Unfortunately, there seems to be no way to
autodetect the exact model during the download. Therefore, an extra
model parameter is added to select the appropriate model manually.
2011-12-31 07:47:43 +01:00