From b41ecd0c15872e3ed3ea62e8b15c9dd714bef48c Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Thu, 21 Apr 2016 19:31:48 +0200 Subject: [PATCH] Add a parameter with the model number. --- examples/dctool_parse.c | 2 +- include/libdivecomputer/oceanic_vtpro.h | 6 ++++++ src/device.c | 2 +- src/libdivecomputer.symbols | 2 ++ src/oceanic_vtpro.c | 9 +++++++++ src/oceanic_vtpro_parser.c | 9 +++++++++ src/parser.c | 2 +- 7 files changed, 29 insertions(+), 3 deletions(-) diff --git a/examples/dctool_parse.c b/examples/dctool_parse.c index 5057566..10f4ded 100644 --- a/examples/dctool_parse.c +++ b/examples/dctool_parse.c @@ -106,7 +106,7 @@ parse (dc_buffer_t *buffer, dc_context_t *context, dc_descriptor_t *descriptor, rc = reefnet_sensusultra_parser_create (&parser, context, devtime, systime); break; case DC_FAMILY_OCEANIC_VTPRO: - rc = oceanic_vtpro_parser_create (&parser, context); + rc = oceanic_vtpro_parser_create2 (&parser, context, model); break; case DC_FAMILY_OCEANIC_VEO250: rc = oceanic_veo250_parser_create (&parser, context, model); diff --git a/include/libdivecomputer/oceanic_vtpro.h b/include/libdivecomputer/oceanic_vtpro.h index ba693f6..f6d2a64 100644 --- a/include/libdivecomputer/oceanic_vtpro.h +++ b/include/libdivecomputer/oceanic_vtpro.h @@ -33,6 +33,9 @@ extern "C" { dc_status_t oceanic_vtpro_device_open (dc_device_t **device, dc_context_t *context, const char *name); +dc_status_t +oceanic_vtpro_device_open2 (dc_device_t **device, dc_context_t *context, const char *name, unsigned int model); + dc_status_t oceanic_vtpro_device_version (dc_device_t *device, unsigned char data[], unsigned int size); @@ -42,6 +45,9 @@ oceanic_vtpro_device_keepalive (dc_device_t *device); dc_status_t oceanic_vtpro_parser_create (dc_parser_t **parser, dc_context_t *context); +dc_status_t +oceanic_vtpro_parser_create2 (dc_parser_t **parser, dc_context_t *context, unsigned int model); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/src/device.c b/src/device.c index 3687463..f94adf2 100644 --- a/src/device.c +++ b/src/device.c @@ -129,7 +129,7 @@ dc_device_open (dc_device_t **out, dc_context_t *context, dc_descriptor_t *descr rc = reefnet_sensusultra_device_open (&device, context, name); break; case DC_FAMILY_OCEANIC_VTPRO: - rc = oceanic_vtpro_device_open (&device, context, name); + rc = oceanic_vtpro_device_open2 (&device, context, name, dc_descriptor_get_model (descriptor)); break; case DC_FAMILY_OCEANIC_VEO250: rc = oceanic_veo250_device_open (&device, context, name); diff --git a/src/libdivecomputer.symbols b/src/libdivecomputer.symbols index e59888d..41ecac8 100644 --- a/src/libdivecomputer.symbols +++ b/src/libdivecomputer.symbols @@ -58,6 +58,7 @@ mares_nemo_parser_create mares_darwin_parser_create mares_iconhd_parser_create oceanic_vtpro_parser_create +oceanic_vtpro_parser_create2 oceanic_veo250_parser_create oceanic_atom2_parser_create hw_ostc_parser_create @@ -102,6 +103,7 @@ oceanic_veo250_device_open oceanic_veo250_device_version oceanic_veo250_device_keepalive oceanic_vtpro_device_open +oceanic_vtpro_device_open2 oceanic_vtpro_device_version oceanic_vtpro_device_keepalive reefnet_sensus_device_open diff --git a/src/oceanic_vtpro.c b/src/oceanic_vtpro.c index bf7b3fa..2101167 100644 --- a/src/oceanic_vtpro.c +++ b/src/oceanic_vtpro.c @@ -43,6 +43,7 @@ typedef struct oceanic_vtpro_device_t { oceanic_common_device_t base; dc_serial_t *port; + unsigned int model; } oceanic_vtpro_device_t; static dc_status_t oceanic_vtpro_device_read (dc_device_t *abstract, unsigned int address, unsigned char data[], unsigned int size); @@ -256,6 +257,13 @@ oceanic_vtpro_calibrate (oceanic_vtpro_device_t *device) dc_status_t oceanic_vtpro_device_open (dc_device_t **out, dc_context_t *context, const char *name) +{ + return oceanic_vtpro_device_open2 (out, context, name, 0); +} + + +dc_status_t +oceanic_vtpro_device_open2 (dc_device_t **out, dc_context_t *context, const char *name, unsigned int model) { dc_status_t status = DC_STATUS_SUCCESS; oceanic_vtpro_device_t *device = NULL; @@ -278,6 +286,7 @@ oceanic_vtpro_device_open (dc_device_t **out, dc_context_t *context, const char // Set the default values. device->port = NULL; + device->model = model; // Open the device. status = dc_serial_open (&device->port, context, name); diff --git a/src/oceanic_vtpro_parser.c b/src/oceanic_vtpro_parser.c index d2d7919..d87f05c 100644 --- a/src/oceanic_vtpro_parser.c +++ b/src/oceanic_vtpro_parser.c @@ -35,6 +35,7 @@ typedef struct oceanic_vtpro_parser_t oceanic_vtpro_parser_t; struct oceanic_vtpro_parser_t { dc_parser_t base; + unsigned int model; // Cached fields. unsigned int cached; unsigned int divetime; @@ -59,6 +60,13 @@ static const dc_parser_vtable_t oceanic_vtpro_parser_vtable = { dc_status_t oceanic_vtpro_parser_create (dc_parser_t **out, dc_context_t *context) +{ + return oceanic_vtpro_parser_create2 (out, context, 0); +} + + +dc_status_t +oceanic_vtpro_parser_create2 (dc_parser_t **out, dc_context_t *context, unsigned int model) { oceanic_vtpro_parser_t *parser = NULL; @@ -73,6 +81,7 @@ oceanic_vtpro_parser_create (dc_parser_t **out, dc_context_t *context) } // Set the default values. + parser->model = model; parser->cached = 0; parser->divetime = 0; parser->maxdepth = 0.0; diff --git a/src/parser.c b/src/parser.c index 2498a8e..3d61404 100644 --- a/src/parser.c +++ b/src/parser.c @@ -92,7 +92,7 @@ dc_parser_new (dc_parser_t **out, dc_device_t *device) rc = reefnet_sensusultra_parser_create (&parser, context, device->clock.devtime, device->clock.systime); break; case DC_FAMILY_OCEANIC_VTPRO: - rc = oceanic_vtpro_parser_create (&parser, context); + rc = oceanic_vtpro_parser_create2 (&parser, context, device->devinfo.model); break; case DC_FAMILY_OCEANIC_VEO250: rc = oceanic_veo250_parser_create (&parser, context, device->devinfo.model);