79 Commits

Author SHA1 Message Date
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
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
5126ef389a Add support for the Oceanic Atom 3.1 2012-04-15 09:45:31 +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
4afa8ad1ef Mark the last memory page on an Oceanic Veo 3.0 as unreadable. 2012-03-15 21:44:25 +01:00
Jef Driesen
605cb37c23 Add support for the Oceanic OC1 Pioneer. 2012-02-24 20:36:28 +01:00
Jef Driesen
87397a4ea1 Add support for the Oceanic VT4.1 2012-01-14 06:37:26 +01:00
Denny Page
c4f62d9410 Remove the init command from the initialization sequence.
The init command appears to behave more like a hard reset. If the
command is sent during the communication, the device immediately closes
the connection and no further communication is possible without
disconnecting and reconnecting the device.

Sending the command at the start of the communication seems to require a
long delay before sending the next command. However the communication
works equally well without sending this command. For some devices it
even improves the success rate of the initialization sequence, and thus
there is no reason to keep it.
2011-11-22 21:51:50 +01:00
Denny Page
22686d6fe9 Add a delay between sending the init and version command.
Some devices are having problems during the initialization sequence. The
extra delay appears to improve the success rate for the affected
devices. There is obviously a small performance penalty, but being able
to establish a reliable connection with all devices is more important.
2011-11-04 22:25:55 +01:00
Jef Driesen
bb32b13b09 Don't use asserts for parameter validation. 2011-10-23 08:12:34 +02:00
Jef Driesen
2a26da3737 Add support for the Oceanic Atom 3.0 and VT 4.0. 2011-08-22 23:27:43 +02:00
Jef Driesen
ce9459039c Add support for the Aeris Atmos AI (metal buttons). 2011-04-16 08:53:58 +02:00
Jef Driesen
b288e82960 Adjust the profile ringbuffer to exclude the last 512 bytes.
For the devices in the list below, the last 512 bytes of the memory area
are not part of the profile ringbuffer. The real purpose of these bytes
is currently unknown.

Oceanic Atom 2.0 (firmware 3I or greater)
Oceanic Geo 2.0
Oceanic OC1
Oceanic ProPlus 2.1
Oceanic Veo 2.0
Oceanic Veo 3.0
Sherwood Insight
Sherwood Wisdom2
Tusa Element II
Tusa Zen
Tusa Zen Air

Some but not all of these devices also have an unreadable last page,
making the autodetection code even more complex.
2011-04-15 20:06:27 +02:00
Jef Driesen
63f3f6de06 Add support for the Sherwood Insight. 2011-02-24 20:59:52 +01:00
Jef Driesen
910521fe80 Add support for the Oceanic Atom 1.0. 2011-01-06 21:04:55 +01:00
Jef Driesen
d7f5813f57 Delay the resending of a command after an error.
Especially the version commands seems to be sensitive to errors. Once
the initialization phase is over, a delay is usually not necessary, but
it should cause a noticable slowdown either because errors are supposed
to be rare.
2010-11-04 21:52:32 +01:00
Jef Driesen
f8e8bd3b54 Discard the additional bytes inside the init function. 2010-11-04 21:52:14 +01:00
Jef Driesen
57ae6b2c13 Eliminate some duplicated code. 2010-11-04 20:49:14 +01:00
Jef Driesen
608df2c4c1 Fixed a typo in the autodetection of the Oceanic OC1. 2010-11-01 20:21:11 +01:00
Jef Driesen
887d744e6d Use a more consistent typedef in the serial and irda backends. 2010-10-04 23:08:39 +02:00
Jef Driesen
55c4212dae Add support for the Tusa Zen Air. 2010-10-04 21:33:08 +02:00
Jef Driesen
2abc371abb Mark the last memory page on an Geo 2 and Pro Plus 2.1 as unreadable. 2010-09-30 20:58:34 +02:00
Jef Driesen
79dfa4becb Mark the last memory page on an Aeris Epic as unreadable. 2010-08-06 13:30:42 +02:00
Jef Driesen
a722d50f03 Mark the last memory page on a Sherwood Wisdom 2 as unreadable. 2010-07-28 08:36:49 +02:00
Jef Driesen
f4d3747e94 Mark the last memory page on an Oceanic Atom 2 as unreadable.
When trying to read the last memory page from an Oceanic Atom 2, the
device does not respond. Strangely, other compatible devices are not
affected by this problem.
2010-06-23 15:01:51 +02:00
Jef Driesen
4e5c9ad8a3 Remove all debugging code. 2010-05-06 06:21:59 +00:00
Jef Driesen
61f9603131 Autodetect the Oceanic OC1 layout at runtime. 2010-04-27 11:33:41 +00:00
Jef Driesen
e87385850b Use independent settings for the global and logbook pointer modes. 2010-04-27 11:33:29 +00:00
Jef Driesen
b9f7d4e425 Improve the ACK/NAK error recovery to fix more errors. 2010-03-18 09:40:29 +00:00
Jef Driesen
f8ff2852bf Fix the init sequence for Geo 2 devices.
The Geo 2 appears to respond with a single NAK byte instead of three.
The issue is fixed by expecting only a single byte, and flushing the
serial line to discard all other bytes (if there are any).
2010-03-06 11:48:22 +00:00
Jef Driesen
f6d35fa2c2 Add cancellation support.
To be able to cancel an operation, an application should register a
callback function that returns a non-zero value whenever the active
operaton should be cancelled. A backend can invoke this callback function
to query the application for a pending cancellation request.
2010-02-15 13:16:26 +00:00
Jef Driesen
87236f505a Remove a number of unnecessary functions. 2010-01-25 19:46:09 +00:00
Jef Driesen
a14b0b7b98 Do not ignore errors during initialization. 2010-01-25 14:08:01 +00:00
Jef Driesen
45f51fedfb Store the layout descriptor in the device handle. 2010-01-15 10:16:49 +00:00
Jef Driesen
32fd37df2c Keep only a single PAGESIZE macro. 2010-01-15 09:51:15 +00:00
Jef Driesen
a87398b7c6 Implement progress events for the device_dump() function.
A helper function is added to simplify implementing the devic_dump()
function on top of the device_read() function, and enable progress
events automatically.
2009-11-12 08:04:34 +00:00
Jef Driesen
a49d2c7b36 Changed the device_dump() function to use the new memory buffer class.
Using a resizable memory buffer allows to allocate the right amount of
memory inside the backend, avoiding having to know the required buffer
size in advance.
2009-11-10 11:36:10 +00:00
Jef Driesen
58f6b0e190 Remove the gap between the logbook and profile ringbuffers. 2009-10-20 13:43:21 +00:00
Jef Driesen
407ff06fb9 Improve the empty ringbuffer detection.
The logbook ringbuffer is now considered empty if any of the pointers is
outside the valid ringbuffer area. Compared to checking only against a
special empty value, this approach makes the code more robust against
invalid pointers.
2009-10-20 13:43:07 +00:00
Jef Driesen
a4247b7505 Define the WARNING macro only once. 2009-08-06 14:15:52 +00:00
Jef Driesen
24f0f66efd Automatically switch the device into download mode. 2009-05-27 10:23:27 +00:00
Jef Driesen
5a1658d30e Use the symbolic constants for ACK/NAK bytes. 2009-05-27 10:22:29 +00:00
Jef Driesen
f477defbf8 Increase the total memory size to 64KB. 2009-05-15 10:13:03 +00:00
Jef Driesen
f0b3253296 Add a common base class.
Introducing a common base class allows to share more code between the
backends. Sharing the fingerprint data eliminates the need to pass it
with a function parameter.
2009-05-05 13:20:11 +00:00
Jef Driesen
f642049fe2 Enable the shared parsing code. 2009-05-04 09:03:18 +00:00
Jef Driesen
be2a27c58b Remove the handshake function from the public api. 2009-04-14 21:37:39 +00:00
Jef Driesen
8bfe481e58 Add progress events. 2009-04-10 09:21:38 +00:00