From 025fb5ed1a30e350d36cc514bec7dc6314c71964 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Thu, 7 May 2020 13:58:48 -0700 Subject: [PATCH] Add serial number to parser creation for ostc, atom2, shearwater and suunto d9 These backends want the serial number for reporting, and can't get it any other way. We really should re-organize this. It's a nasty source of pointless changes wrt upstream libdivecomputer, and I'm not convinced it's worth the pain. We also don't even have a consistent ordering for the arguments. Oh well. Signed-off-by: Linus Torvalds --- src/hw_ostc.h | 2 +- src/hw_ostc3.h | 2 +- src/hw_ostc_parser.c | 10 +++++----- src/oceanic_atom2.h | 2 +- src/oceanic_atom2_parser.c | 2 +- src/parser.c | 22 +++++++++++++--------- src/shearwater_petrel.h | 2 +- src/shearwater_predator.h | 2 +- src/shearwater_predator_parser.c | 10 +++++----- src/suunto_d9.h | 2 +- src/suunto_d9_parser.c | 2 +- 11 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/hw_ostc.h b/src/hw_ostc.h index fc45182..5635e6d 100644 --- a/src/hw_ostc.h +++ b/src/hw_ostc.h @@ -36,7 +36,7 @@ dc_status_t hw_ostc_device_open (dc_device_t **device, dc_context_t *context, dc_iostream_t *iostream); dc_status_t -hw_ostc_parser_create (dc_parser_t **parser, dc_context_t *context); +hw_ostc_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int serial); #ifdef __cplusplus } diff --git a/src/hw_ostc3.h b/src/hw_ostc3.h index 92cf277..1e7720a 100644 --- a/src/hw_ostc3.h +++ b/src/hw_ostc3.h @@ -36,7 +36,7 @@ dc_status_t hw_ostc3_device_open (dc_device_t **device, dc_context_t *context, dc_iostream_t *iostream); dc_status_t -hw_ostc3_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model); +hw_ostc3_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int serial, unsigned int model); #ifdef __cplusplus } diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c index 0f96b90..60a441d 100644 --- a/src/hw_ostc_parser.c +++ b/src/hw_ostc_parser.c @@ -312,7 +312,7 @@ hw_ostc_parser_cache (hw_ostc_parser_t *parser) } static dc_status_t -hw_ostc_parser_create_internal (dc_parser_t **out, dc_context_t *context, unsigned int hwos, unsigned int model) +hw_ostc_parser_create_internal (dc_parser_t **out, dc_context_t *context, unsigned int serial, unsigned int hwos, unsigned int model) { hw_ostc_parser_t *parser = NULL; @@ -350,15 +350,15 @@ hw_ostc_parser_create_internal (dc_parser_t **out, dc_context_t *context, unsign dc_status_t -hw_ostc_parser_create (dc_parser_t **out, dc_context_t *context) +hw_ostc_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int serial) { - return hw_ostc_parser_create_internal (out, context, 0, 0); + return hw_ostc_parser_create_internal (out, context, serial, 0, 0); } dc_status_t -hw_ostc3_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model) +hw_ostc3_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int serial, unsigned int model) { - return hw_ostc_parser_create_internal (out, context, 1, model); + return hw_ostc_parser_create_internal (out, context, serial, 1, model); } static dc_status_t diff --git a/src/oceanic_atom2.h b/src/oceanic_atom2.h index 25da953..657c719 100644 --- a/src/oceanic_atom2.h +++ b/src/oceanic_atom2.h @@ -37,7 +37,7 @@ dc_status_t oceanic_atom2_device_open (dc_device_t **device, dc_context_t *context, dc_iostream_t *iostream, unsigned int model); dc_status_t -oceanic_atom2_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int model); +oceanic_atom2_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int model, unsigned int serial); #ifdef __cplusplus } diff --git a/src/oceanic_atom2_parser.c b/src/oceanic_atom2_parser.c index 74f73cf..ad2460d 100644 --- a/src/oceanic_atom2_parser.c +++ b/src/oceanic_atom2_parser.c @@ -142,7 +142,7 @@ static const dc_parser_vtable_t oceanic_atom2_parser_vtable = { dc_status_t -oceanic_atom2_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model) +oceanic_atom2_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model, unsigned int serial) { oceanic_atom2_parser_t *parser = NULL; diff --git a/src/parser.c b/src/parser.c index fa37f33..8fd16ee 100644 --- a/src/parser.c +++ b/src/parser.c @@ -67,7 +67,7 @@ #define REACTPROWHITE 0x4354 static dc_status_t -dc_parser_new_internal (dc_parser_t **out, dc_context_t *context, dc_family_t family, unsigned int model, unsigned int devtime, dc_ticks_t systime) +dc_parser_new_internal (dc_parser_t **out, dc_context_t *context, dc_family_t family, unsigned int model, unsigned int serial, unsigned int devtime, dc_ticks_t systime) { dc_status_t rc = DC_STATUS_SUCCESS; dc_parser_t *parser = NULL; @@ -90,7 +90,7 @@ dc_parser_new_internal (dc_parser_t **out, dc_context_t *context, dc_family_t fa break; case DC_FAMILY_SUUNTO_VYPER2: case DC_FAMILY_SUUNTO_D9: - rc = suunto_d9_parser_create (&parser, context, model); + rc = suunto_d9_parser_create (&parser, context, model, serial); break; case DC_FAMILY_SUUNTO_EONSTEEL: rc = suunto_eonsteel_parser_create(&parser, context, model); @@ -121,7 +121,7 @@ dc_parser_new_internal (dc_parser_t **out, dc_context_t *context, dc_family_t fa if (model == REACTPROWHITE) rc = oceanic_veo250_parser_create (&parser, context, model); else - rc = oceanic_atom2_parser_create (&parser, context, model); + rc = oceanic_atom2_parser_create (&parser, context, model, serial); break; case DC_FAMILY_MARES_NEMO: case DC_FAMILY_MARES_PUCK: @@ -134,11 +134,11 @@ dc_parser_new_internal (dc_parser_t **out, dc_context_t *context, dc_family_t fa rc = mares_iconhd_parser_create (&parser, context, model); break; case DC_FAMILY_HW_OSTC: - rc = hw_ostc_parser_create (&parser, context); + rc = hw_ostc_parser_create (&parser, context, serial); break; case DC_FAMILY_HW_FROG: case DC_FAMILY_HW_OSTC3: - rc = hw_ostc3_parser_create (&parser, context, model); + rc = hw_ostc3_parser_create (&parser, context, serial, model); break; case DC_FAMILY_CRESSI_EDY: case DC_FAMILY_ZEAGLE_N2ITION3: @@ -154,10 +154,10 @@ dc_parser_new_internal (dc_parser_t **out, dc_context_t *context, dc_family_t fa rc = atomics_cobalt_parser_create (&parser, context); break; case DC_FAMILY_SHEARWATER_PREDATOR: - rc = shearwater_predator_parser_create (&parser, context, model); + rc = shearwater_predator_parser_create (&parser, context, model, serial); break; case DC_FAMILY_SHEARWATER_PETREL: - rc = shearwater_petrel_parser_create (&parser, context, model); + rc = shearwater_petrel_parser_create (&parser, context, model, serial); break; case DC_FAMILY_DIVERITE_NITEKQ: rc = diverite_nitekq_parser_create (&parser, context); @@ -196,7 +196,9 @@ dc_parser_new (dc_parser_t **out, dc_device_t *device) return DC_STATUS_INVALIDARGS; return dc_parser_new_internal (out, device->context, - dc_device_get_type (device), device->devinfo.model, + dc_device_get_type (device), + device->devinfo.model, + device->devinfo.serial, device->clock.devtime, device->clock.systime); } @@ -204,7 +206,9 @@ dc_status_t dc_parser_new2 (dc_parser_t **out, dc_context_t *context, dc_descriptor_t *descriptor, unsigned int devtime, dc_ticks_t systime) { return dc_parser_new_internal (out, context, - dc_descriptor_get_type (descriptor), dc_descriptor_get_model (descriptor), + dc_descriptor_get_type (descriptor), + dc_descriptor_get_model (descriptor), + 0, devtime, systime); } diff --git a/src/shearwater_petrel.h b/src/shearwater_petrel.h index 0a4e756..0d8593c 100644 --- a/src/shearwater_petrel.h +++ b/src/shearwater_petrel.h @@ -35,7 +35,7 @@ dc_status_t shearwater_petrel_device_open (dc_device_t **device, dc_context_t *context, dc_iostream_t *iostream); dc_status_t -shearwater_petrel_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int model); +shearwater_petrel_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int model, unsigned int serial); #ifdef __cplusplus } diff --git a/src/shearwater_predator.h b/src/shearwater_predator.h index 5d1fccb..2682e0a 100644 --- a/src/shearwater_predator.h +++ b/src/shearwater_predator.h @@ -35,7 +35,7 @@ dc_status_t shearwater_predator_device_open (dc_device_t **device, dc_context_t *context, dc_iostream_t *iostream); dc_status_t -shearwater_predator_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int model); +shearwater_predator_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int model, unsigned int serial); #ifdef __cplusplus } diff --git a/src/shearwater_predator_parser.c b/src/shearwater_predator_parser.c index e2f88fa..849646a 100644 --- a/src/shearwater_predator_parser.c +++ b/src/shearwater_predator_parser.c @@ -159,7 +159,7 @@ shearwater_predator_find_gasmix (shearwater_predator_parser_t *parser, unsigned static dc_status_t -shearwater_common_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model, unsigned int petrel) +shearwater_common_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model, unsigned int serial, unsigned int petrel) { shearwater_predator_parser_t *parser = NULL; const dc_parser_vtable_t *vtable = NULL; @@ -225,16 +225,16 @@ shearwater_common_parser_create (dc_parser_t **out, dc_context_t *context, unsig dc_status_t -shearwater_predator_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model) +shearwater_predator_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model, unsigned int serial) { - return shearwater_common_parser_create (out, context, model, 0); + return shearwater_common_parser_create (out, context, model, serial, 0); } dc_status_t -shearwater_petrel_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model) +shearwater_petrel_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model, unsigned int serial) { - return shearwater_common_parser_create (out, context, model, 1); + return shearwater_common_parser_create (out, context, model, serial, 1); } diff --git a/src/suunto_d9.h b/src/suunto_d9.h index 94a782f..a522fb8 100644 --- a/src/suunto_d9.h +++ b/src/suunto_d9.h @@ -36,7 +36,7 @@ dc_status_t suunto_d9_device_open (dc_device_t **device, dc_context_t *context, dc_iostream_t *iostream, unsigned int model); dc_status_t -suunto_d9_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int model); +suunto_d9_parser_create (dc_parser_t **parser, dc_context_t *context, unsigned int model, unsigned int serial); #ifdef __cplusplus } diff --git a/src/suunto_d9_parser.c b/src/suunto_d9_parser.c index 11b99e9..6df0d83 100644 --- a/src/suunto_d9_parser.c +++ b/src/suunto_d9_parser.c @@ -244,7 +244,7 @@ suunto_d9_parser_cache (suunto_d9_parser_t *parser) } dc_status_t -suunto_d9_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model) +suunto_d9_parser_create (dc_parser_t **out, dc_context_t *context, unsigned int model, unsigned int serial) { suunto_d9_parser_t *parser = NULL;