80 Commits

Author SHA1 Message Date
Jef Driesen
866e636e8c Move the logging code to the examples.
With the application defined logging function, the actual logging is not
performed by the library anymore, and the code belongs in the
applications.
2012-08-27 23:08:38 +02:00
Jef Driesen
43cd111198 Add support for an application defined logging function.
An application can now register an application defined callback
function, which will perform the actual logging. This provides
additional flexibility compared to logging to stderr with a hardcoded
format. Applications can now easily display the messages in their user
interface, customize the format, etc.

Although the internal logging function is a printf like function, the
arguments are converted into a plain string before being passed to the
callback function. This greatly improves interoperability with
programming languages which don't support C style variadic functions
(e.g. Python, C#, etc).
2012-08-27 23:02:44 +02:00
Jef Driesen
0f6d23757f Add a new library context object.
With the introduction of a context object, library initialization and
shutdown can be performed without requiring any global state. A single
process can use multiple independent contexts without any problems. The
lack of a global state also improves the thread-safety of the library.

At the moment, the new context object is primary used to implement an
improved logging system.
2012-08-27 23:02:44 +02:00
Jef Driesen
6922838695 Add a dc_parser_new convenience function.
The devinfo and clock event data is now cached internally at the device layer.
This allows the new dc_parser_new() convenience function to retrieve the event
data directly from the device handle, and applications don't have to deal with
the events anymore to create a parser.
2012-06-21 21:42:37 +02:00
Jef Driesen
df9897fb3c Add a dc_device_open convenience function.
With the introduction of the device descriptors, the new dc_device_open()
convenience function can take care of the mapping from a particular model to
the corresponding backend internally, without needing any device specific
knowledge in the application. An application can simply query the list of
supported devices, and the library will automatically do the right thing.
2012-06-21 21:42:37 +02:00
Jef Driesen
79eade6e06 Add the device enumeration support.
Applications can now enumerate all the supported devices at runtime,
and don't have to maintain their own list anymore. The internal list
does include only those devices that have been confirmed to work at
least once without any major problems.
2012-06-21 21:42:37 +02:00
Jef Driesen
a78cf2f939 Add a new device descriptor object.
As the name already indicates, a device descriptor is lightweight
object which describes a single device. Currently, the api supports
getting the device name (vendor and product) and model number. But
this can extended with other features when necessary.
2012-06-21 21:42:37 +02:00
Jef Driesen
fbe712fc8f Add a generic iterator interface. 2012-06-21 21:42:37 +02:00
Jef Driesen
c821d40144 Introduce a namespace prefix for the high-level public api.
Adding the "dc_" namespace prefix (which is of course an abbreviation
for libdivecomputer) should avoid conflicts with other libraries. For
the time being, only the high-level device and parser layers are
changed.
2012-06-21 21:42:37 +02:00
Jef Driesen
781f0db71f Add support for the Heinrichs Weikamp Frog. 2012-04-28 11:18:16 +02:00
Jef Driesen
90a8452788 Add a wrapper for the mktime function. 2012-04-10 21:21:52 +02: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
5ef0398c42 Add support for the Dacor Darwin Air. 2011-11-11 11:13:03 +01:00
Jef Driesen
d3e522b070 Add support for the OSTC screenshot feature. 2011-07-24 23:24:20 +02:00
Jef Driesen
57615abc0c Add support for some additinal OSTC features. 2011-07-20 22:08:24 +02:00
Jef Driesen
8fa63eb4a2 Add an option to adjust the depth calibration constants.
When the atmospheric pressure is set to zero (the default value), the
atmosperic pressure stored in the header is used.
2011-03-12 10:37:55 +01:00
Jef Driesen
c15b964b26 Add an option to switch between real and simulated dives. 2011-03-12 10:37:55 +01:00
Jef Driesen
4b887341f3 Add support for the Atomics Cobalt. 2011-03-12 10:31:32 +01:00
Jef Driesen
90e60fecee Add a new function to the public api to retrieve the dive metadata. 2011-01-13 22:14:53 +01:00
Jef Driesen
a24fd313ae Add the foreach function for the Mares Icon HD.
Note that this implementation will fail if the ringbuffer doesn't start
at the fixed address 0xA000. This is very likely to occur once the
ringbuffer is filled completely and the device starts to overwrite old
data.
2010-09-19 15:22:11 +02:00
Jef Driesen
c060f268be Add support for the Zeagle N2iTiON3. 2010-08-28 22:53:48 +02:00
Jef Driesen
aca36ad344 Add a parser for the Mares Icon HD. 2010-06-29 11:42:00 +02:00
Jef Driesen
620775af25 Add support for the Mares Icon HD. 2010-04-12 10:19:38 +02:00
Jef Driesen
6641dda617 Add a parser for the Cressi Edy. 2010-05-03 18:02:43 +00:00
Jef Driesen
2cd09fd525 Add a more convenient method for compile/run-time version checks. 2010-04-29 09:21:05 +00:00
Jef Driesen
0976932501 Add a function to retrieve the run-time version info. 2010-04-27 14:00:53 +00:00
Jef Driesen
fb9976d24f Add a parser for the Heinrichs Weikamp OSTC. 2010-04-19 13:53:38 +00:00
Jef Driesen
b0f82da28f Implement some missing features for the Heinrichs Weikamp OSTC. 2010-04-19 13:53:23 +00:00
Jef Driesen
b295f71536 Add a dummy backend for systems without IrDA support. 2010-02-18 09:26:32 +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
a8116a0aec Add datetime support to the parsers. 2010-02-02 15:04:46 +00:00
Jef Driesen
54410dab8d Add a datetime module. 2010-02-01 21:19:55 +00:00
Jef Driesen
098b229bc6 Rename the Suunto Spyder parser as the Eon parser.
Both devices have an almost identical data format. Renaming the parser
backend makes it more consistent with the corresponding device backend.
2010-02-01 13:34:52 +00:00
Jef Driesen
ceeee5b2fa Removed the handshake and version functions.
The handshake function is now called internally (even if it doesn't seem
to be required at all), and the version function can be called through
the public api. The format of the version data is changed too.
2010-01-30 21:27:43 +00:00
Jef Driesen
bb08248bd9 Add a parser for the Oceanic VT Pro. 2009-12-28 10:30:53 +00:00
Jef Driesen
778ae70d2e Add a parser for the Oceanic Veo 250. 2009-12-28 10:30:36 +00:00
Jef Driesen
5fa943d685 Added the initial implementation for the Cressi Edy. 2009-11-17 11:02:26 +00:00
Jef Driesen
21832851af Add a function to slice the buffer. 2009-11-16 08:14:19 +00:00
Jef Driesen
7e6a57bd1c Added the initial implementation for the Heinrichs Weikamp OSTC. 2009-11-12 08:18:16 +00:00
Jef Driesen
d3028dc2d7 Add a new memory buffer class. 2009-11-10 11:35:09 +00:00
Jef Driesen
bf0dd700c1 Add a parser for the Oceanic Atom 2. 2009-10-15 09:14:33 +00:00
Jef Driesen
cc1a99b9c7 Add a common base class for the Mares backends.
The memory layout of the Mares Puck and Nemo devices is very similar, 
which allows to share the parsing code between the backends.
    
The Mares Puck protocol allows for a more efficient implementation, by 
reading only the data that we really need. But as an intermediate 
solution, reusing the Nemo code is good enough.
2009-10-11 13:51:26 +00:00
Jef Driesen
ff26c2db70 Calibrate the device during initialization.
Although calibration is optional, it's highly recommended because it
reduces the transfer time considerably. The calibrate function is
removed from the public api.
2009-05-27 10:24:04 +00:00
Jef Driesen
9089651f17 Fix the symbols file for platforms without IRDA support (Mac OS X).
When the IRDA backend is disabled or not supported by the underlying
platform (such as on Mac OS X), the Uwatec Smart parser is disabled as
well. The symbols file is updated to reflect this.
2009-04-14 21:46:59 +00:00
Jef Driesen
be2a27c58b Remove the handshake function from the public api. 2009-04-14 21:37:39 +00:00
Jef Driesen
572dfa5184 Add a function to retrieve the stored handshake packet. 2009-04-14 21:37:04 +00:00
Jef Driesen
b7fcd5442c Use a single function for writing the device parameters. 2009-04-14 21:36:07 +00:00
Jef Driesen
6abfa9792d Added the initial implementation for the Mares Puck. 2009-03-30 20:30:32 +00:00
Jef Driesen
4368b94ff0 Added basic support for the fingerprint feature. 2009-02-23 13:03:20 +00:00
Jef Driesen
1c736835eb Autodetect the difference between a Vyper and a Spyder. 2009-02-20 12:26:15 +00:00