From 572dfa518441996031f83ed758d686d819cc79b4 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Tue, 14 Apr 2009 21:37:04 +0000 Subject: [PATCH] Add a function to retrieve the stored handshake packet. --- src/libdivecomputer.symbols | 3 +++ src/reefnet_sensus.c | 19 +++++++++++++++++++ src/reefnet_sensus.h | 3 +++ src/reefnet_sensuspro.c | 19 +++++++++++++++++++ src/reefnet_sensuspro.h | 3 +++ src/reefnet_sensusultra.c | 19 +++++++++++++++++++ src/reefnet_sensusultra.h | 3 +++ 7 files changed, 69 insertions(+) diff --git a/src/libdivecomputer.symbols b/src/libdivecomputer.symbols index 6e8c8a8..76b97e7 100644 --- a/src/libdivecomputer.symbols +++ b/src/libdivecomputer.symbols @@ -44,9 +44,11 @@ oceanic_vtpro_device_keepalive oceanic_vtpro_device_calibrate reefnet_sensus_device_open reefnet_sensus_device_set_timestamp +reefnet_sensus_device_get_handshake reefnet_sensus_extract_dives reefnet_sensuspro_device_open reefnet_sensuspro_device_set_timestamp +reefnet_sensuspro_device_get_handshake reefnet_sensuspro_device_write_interval reefnet_sensuspro_extract_dives reefnet_sensusultra_device_open @@ -54,6 +56,7 @@ reefnet_sensusultra_device_read_user reefnet_sensusultra_device_sense reefnet_sensusultra_device_set_maxretries reefnet_sensusultra_device_set_timestamp +reefnet_sensusultra_device_get_handshake reefnet_sensusultra_device_write_parameter reefnet_sensusultra_device_write_user reefnet_sensusultra_extract_dives diff --git a/src/reefnet_sensus.c b/src/reefnet_sensus.c index 3cd828d..423cf8b 100644 --- a/src/reefnet_sensus.c +++ b/src/reefnet_sensus.c @@ -180,6 +180,25 @@ reefnet_sensus_device_close (device_t *abstract) } +device_status_t +reefnet_sensus_device_get_handshake (device_t *abstract, unsigned char data[], unsigned int size) +{ + reefnet_sensus_device_t *device = (reefnet_sensus_device_t*) abstract; + + if (! device_is_reefnet_sensus (abstract)) + return DEVICE_STATUS_TYPE_MISMATCH; + + if (size < REEFNET_SENSUS_HANDSHAKE_SIZE) { + WARNING ("Insufficient buffer space available."); + return DEVICE_STATUS_MEMORY; + } + + memcpy (data, device->handshake, REEFNET_SENSUS_HANDSHAKE_SIZE); + + return DEVICE_STATUS_SUCCESS; +} + + device_status_t reefnet_sensus_device_set_timestamp (device_t *abstract, unsigned int timestamp) { diff --git a/src/reefnet_sensus.h b/src/reefnet_sensus.h index 01a9091..2d9f781 100644 --- a/src/reefnet_sensus.h +++ b/src/reefnet_sensus.h @@ -38,6 +38,9 @@ reefnet_sensus_device_open (device_t **device, const char* name); device_status_t reefnet_sensus_device_set_timestamp (device_t *device, unsigned int timestamp); +device_status_t +reefnet_sensus_device_get_handshake (device_t *abstract, unsigned char data[], unsigned int size); + device_status_t reefnet_sensus_extract_dives (device_t *device, const unsigned char data[], unsigned int size, dive_callback_t callback, void *userdata); diff --git a/src/reefnet_sensuspro.c b/src/reefnet_sensuspro.c index 3784bdf..f4d0011 100644 --- a/src/reefnet_sensuspro.c +++ b/src/reefnet_sensuspro.c @@ -154,6 +154,25 @@ reefnet_sensuspro_device_close (device_t *abstract) } +device_status_t +reefnet_sensuspro_device_get_handshake (device_t *abstract, unsigned char data[], unsigned int size) +{ + reefnet_sensuspro_device_t *device = (reefnet_sensuspro_device_t*) abstract; + + if (! device_is_reefnet_sensuspro (abstract)) + return DEVICE_STATUS_TYPE_MISMATCH; + + if (size < REEFNET_SENSUSPRO_HANDSHAKE_SIZE) { + WARNING ("Insufficient buffer space available."); + return DEVICE_STATUS_MEMORY; + } + + memcpy (data, device->handshake, REEFNET_SENSUSPRO_HANDSHAKE_SIZE); + + return DEVICE_STATUS_SUCCESS; +} + + device_status_t reefnet_sensuspro_device_set_timestamp (device_t *abstract, unsigned int timestamp) { diff --git a/src/reefnet_sensuspro.h b/src/reefnet_sensuspro.h index b9defec..247e4d9 100644 --- a/src/reefnet_sensuspro.h +++ b/src/reefnet_sensuspro.h @@ -38,6 +38,9 @@ reefnet_sensuspro_device_open (device_t **device, const char* name); device_status_t reefnet_sensuspro_device_set_timestamp (device_t *device, unsigned int timestamp); +device_status_t +reefnet_sensuspro_device_get_handshake (device_t *abstract, unsigned char data[], unsigned int size); + device_status_t reefnet_sensuspro_device_write_interval (device_t *device, unsigned char interval); diff --git a/src/reefnet_sensusultra.c b/src/reefnet_sensusultra.c index d63736d..e7ad99e 100644 --- a/src/reefnet_sensusultra.c +++ b/src/reefnet_sensusultra.c @@ -161,6 +161,25 @@ reefnet_sensusultra_device_close (device_t *abstract) } +device_status_t +reefnet_sensusultra_device_get_handshake (device_t *abstract, unsigned char data[], unsigned int size) +{ + reefnet_sensusultra_device_t *device = (reefnet_sensusultra_device_t*) abstract; + + if (! device_is_reefnet_sensusultra (abstract)) + return DEVICE_STATUS_TYPE_MISMATCH; + + if (size < REEFNET_SENSUSULTRA_HANDSHAKE_SIZE) { + WARNING ("Insufficient buffer space available."); + return DEVICE_STATUS_MEMORY; + } + + memcpy (data, device->handshake, REEFNET_SENSUSULTRA_HANDSHAKE_SIZE); + + return DEVICE_STATUS_SUCCESS; +} + + device_status_t reefnet_sensusultra_device_set_maxretries (device_t *abstract, unsigned int maxretries) { diff --git a/src/reefnet_sensusultra.h b/src/reefnet_sensusultra.h index 10532ff..4879237 100644 --- a/src/reefnet_sensusultra.h +++ b/src/reefnet_sensusultra.h @@ -52,6 +52,9 @@ reefnet_sensusultra_device_set_maxretries (device_t *device, unsigned int maxret device_status_t reefnet_sensusultra_device_set_timestamp (device_t *device, unsigned int timestamp); +device_status_t +reefnet_sensusultra_device_get_handshake (device_t *abstract, unsigned char data[], unsigned int size); + device_status_t reefnet_sensusultra_device_read_user (device_t *device, unsigned char *data, unsigned int size);