From 1c736835eb36b2e2194cab1384e5453de235e009 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Fri, 20 Feb 2009 12:26:15 +0000 Subject: [PATCH] Autodetect the difference between a Vyper and a Spyder. --- src/libdivecomputer.symbols | 1 - src/suunto_vyper.c | 23 ++++++++++------------- src/suunto_vyper.h | 3 --- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/libdivecomputer.symbols b/src/libdivecomputer.symbols index 04f19bc..4682a02 100644 --- a/src/libdivecomputer.symbols +++ b/src/libdivecomputer.symbols @@ -66,7 +66,6 @@ suunto_eon_device_open suunto_eon_device_write_interval suunto_eon_device_write_name suunto_eon_extract_dives -suunto_spyder_extract_dives suunto_vyper2_device_open suunto_vyper2_device_reset_maxdepth suunto_vyper_device_open diff --git a/src/suunto_vyper.c b/src/suunto_vyper.c index f538935..d6c5ae9 100644 --- a/src/suunto_vyper.c +++ b/src/suunto_vyper.c @@ -613,18 +613,15 @@ suunto_vyper_extract_dives (const unsigned char data[], unsigned int size, dive_ { assert (size >= SUUNTO_VYPER_MEMORY_SIZE); - unsigned int eop = (data[0x51] << 8) + data[0x52]; + unsigned int vyper = 1; + if (data[HDR_DEVINFO_VYPER] == 20 || data[HDR_DEVINFO_VYPER] == 30 || data[HDR_DEVINFO_VYPER] == 60) + vyper = 0; - return suunto_common_extract_dives (data, 0x71, SUUNTO_VYPER_MEMORY_SIZE, eop, 5, callback, userdata); -} - - -device_status_t -suunto_spyder_extract_dives (const unsigned char data[], unsigned int size, dive_callback_t callback, void *userdata) -{ - assert (size >= SUUNTO_VYPER_MEMORY_SIZE); - - unsigned int eop = (data[0x1C] << 8) + data[0x1D]; - - return suunto_common_extract_dives (data, 0x4C, SUUNTO_VYPER_MEMORY_SIZE, eop, 3, callback, userdata); + if (vyper) { + unsigned int eop = (data[0x51] << 8) + data[0x52]; + return suunto_common_extract_dives (data, 0x71, SUUNTO_VYPER_MEMORY_SIZE, eop, 5, callback, userdata); + } else { + unsigned int eop = (data[0x1C] << 8) + data[0x1D]; + return suunto_common_extract_dives (data, 0x4C, SUUNTO_VYPER_MEMORY_SIZE, eop, 3, callback, userdata); + } } diff --git a/src/suunto_vyper.h b/src/suunto_vyper.h index 11c3443..16cafc3 100644 --- a/src/suunto_vyper.h +++ b/src/suunto_vyper.h @@ -44,9 +44,6 @@ suunto_vyper_device_read_dive (device_t *device, unsigned char data[], unsigned device_status_t suunto_vyper_extract_dives (const unsigned char data[], unsigned int size, dive_callback_t callback, void *userdata); -device_status_t -suunto_spyder_extract_dives (const unsigned char data[], unsigned int size, dive_callback_t callback, void *userdata); - parser_status_t suunto_vyper_parser_create (parser_t **parser);