Move the version function to the device specific api.

The version function requires device specific knowledge to use it (at
least the required buffer size), it is already called internally when
necessary, and only a few backends support it. Thus there is no good
reason to keep it in the high-level public api.
This commit is contained in:
Jef Driesen 2012-05-13 19:18:01 +02:00
parent 2a9e8c0023
commit 985323eefb
37 changed files with 68 additions and 61 deletions

View File

@ -44,9 +44,9 @@ test_dump_sdm (const char* name)
return rc;
}
message ("dc_device_version\n");
message ("suunto_d9_device_version\n");
unsigned char version[SUUNTO_D9_VERSION_SIZE] = {0};
rc = dc_device_version (device, version, sizeof (version));
rc = suunto_d9_device_version (device, version, sizeof (version));
if (rc != DC_STATUS_SUCCESS) {
WARNING ("Cannot identify computer.");
dc_device_close (device);
@ -95,9 +95,9 @@ test_dump_memory (const char* name, const char* filename)
return rc;
}
message ("dc_device_version\n");
message ("suunto_d9_device_version\n");
unsigned char version[SUUNTO_D9_VERSION_SIZE] = {0};
rc = dc_device_version (device, version, sizeof (version));
rc = suunto_d9_device_version (device, version, sizeof (version));
if (rc != DC_STATUS_SUCCESS) {
WARNING ("Cannot identify computer.");
dc_device_close (device);

View File

@ -44,9 +44,9 @@ test_dump_sdm (const char* name)
return rc;
}
message ("dc_device_version\n");
message ("suunto_vyper2_device_version\n");
unsigned char version[SUUNTO_VYPER2_VERSION_SIZE] = {0};
rc = dc_device_version (device, version, sizeof (version));
rc = suunto_vyper2_device_version (device, version, sizeof (version));
if (rc != DC_STATUS_SUCCESS) {
WARNING ("Cannot identify computer.");
dc_device_close (device);
@ -95,9 +95,9 @@ test_dump_memory (const char* name, const char* filename)
return rc;
}
message ("dc_device_version\n");
message ("suunto_vyper2_device_version\n");
unsigned char version[SUUNTO_VYPER2_VERSION_SIZE] = {0};
rc = dc_device_version (device, version, sizeof (version));
rc = suunto_vyper2_device_version (device, version, sizeof (version));
if (rc != DC_STATUS_SUCCESS) {
WARNING ("Cannot identify computer.");
dc_device_close (device);

View File

@ -46,9 +46,9 @@ test_dump_memory (const char* filename)
return rc;
}
message ("dc_device_version\n");
message ("uwatec_smart_device_version\n");
unsigned char version[UWATEC_SMART_VERSION_SIZE] = {0};
rc = dc_device_version (device, version, sizeof (version));
rc = uwatec_smart_device_version (device, version, sizeof (version));
if (rc != DC_STATUS_SUCCESS) {
WARNING ("Cannot identify computer.");
dc_device_close (device);

View File

@ -33,6 +33,9 @@ extern "C" {
dc_status_t
atomics_cobalt_device_open (dc_device_t **device, dc_context_t *context);
dc_status_t
atomics_cobalt_device_version (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t
atomics_cobalt_device_set_simulation (dc_device_t *device, unsigned int simulation);

View File

@ -37,6 +37,9 @@ extern "C" {
dc_status_t
hw_frog_device_open (dc_device_t **device, dc_context_t *context, const char *name);
dc_status_t
hw_frog_device_version (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t
hw_frog_device_clock (dc_device_t *device, const dc_datetime_t *datetime);

View File

@ -33,6 +33,9 @@ extern "C" {
dc_status_t
oceanic_atom2_device_open (dc_device_t **device, dc_context_t *context, const char *name);
dc_status_t
oceanic_atom2_device_version (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t
oceanic_atom2_device_keepalive (dc_device_t *device);

View File

@ -33,6 +33,9 @@ extern "C" {
dc_status_t
oceanic_veo250_device_open (dc_device_t **device, dc_context_t *context, const char *name);
dc_status_t
oceanic_veo250_device_version (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t
oceanic_veo250_device_keepalive (dc_device_t *device);

View File

@ -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_version (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t
oceanic_vtpro_device_keepalive (dc_device_t *device);

View File

@ -35,6 +35,9 @@ extern "C" {
dc_status_t
suunto_d9_device_open (dc_device_t **device, dc_context_t *context, const char *name, unsigned int model);
dc_status_t
suunto_d9_device_version (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t
suunto_d9_device_reset_maxdepth (dc_device_t *device);

View File

@ -34,6 +34,9 @@ extern "C" {
dc_status_t
suunto_vyper2_device_open (dc_device_t **device, dc_context_t *context, const char *name);
dc_status_t
suunto_vyper2_device_version (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t
suunto_vyper2_device_reset_maxdepth (dc_device_t *device);

View File

@ -35,6 +35,9 @@ extern "C" {
dc_status_t
uwatec_smart_device_open (dc_device_t **device, dc_context_t *context);
dc_status_t
uwatec_smart_device_version (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t
uwatec_smart_device_set_timestamp (dc_device_t *device, unsigned int timestamp);

View File

@ -60,14 +60,12 @@ typedef struct atomics_cobalt_device_t {
} atomics_cobalt_device_t;
static dc_status_t atomics_cobalt_device_set_fingerprint (dc_device_t *abstract, const unsigned char data[], unsigned int size);
static dc_status_t atomics_cobalt_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size);
static dc_status_t atomics_cobalt_device_foreach (dc_device_t *abstract, dc_dive_callback_t callback, void *userdata);
static dc_status_t atomics_cobalt_device_close (dc_device_t *abstract);
static const device_backend_t atomics_cobalt_device_backend = {
DC_FAMILY_ATOMICS_COBALT,
atomics_cobalt_device_set_fingerprint, /* set_fingerprint */
atomics_cobalt_device_version, /* version */
NULL, /* read */
NULL, /* write */
NULL, /* dump */
@ -205,7 +203,7 @@ atomics_cobalt_device_set_simulation (dc_device_t *abstract, unsigned int simula
}
static dc_status_t
dc_status_t
atomics_cobalt_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size)
{
atomics_cobalt_device_t *device = (atomics_cobalt_device_t *) abstract;

View File

@ -66,7 +66,6 @@ static dc_status_t cressi_edy_device_close (dc_device_t *abstract);
static const device_backend_t cressi_edy_device_backend = {
DC_FAMILY_CRESSI_EDY,
cressi_edy_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
cressi_edy_device_read, /* read */
NULL, /* write */
cressi_edy_device_dump, /* dump */

View File

@ -59,8 +59,6 @@ struct device_backend_t {
dc_status_t (*set_fingerprint) (dc_device_t *device, const unsigned char data[], unsigned int size);
dc_status_t (*version) (dc_device_t *device, unsigned char data[], unsigned int size);
dc_status_t (*read) (dc_device_t *device, unsigned int address, unsigned char data[], unsigned int size);
dc_status_t (*write) (dc_device_t *device, unsigned int address, const unsigned char data[], unsigned int size);

View File

@ -193,19 +193,6 @@ dc_device_set_fingerprint (dc_device_t *device, const unsigned char data[], unsi
}
dc_status_t
dc_device_version (dc_device_t *device, unsigned char data[], unsigned int size)
{
if (device == NULL)
return DC_STATUS_UNSUPPORTED;
if (device->backend->version == NULL)
return DC_STATUS_UNSUPPORTED;
return device->backend->version (device, data, size);
}
dc_status_t
dc_device_read (dc_device_t *device, unsigned int address, unsigned char data[], unsigned int size)
{

View File

@ -64,14 +64,12 @@ typedef struct hw_frog_device_t {
} hw_frog_device_t;
static dc_status_t hw_frog_device_set_fingerprint (dc_device_t *abstract, const unsigned char data[], unsigned int size);
static dc_status_t hw_frog_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size);
static dc_status_t hw_frog_device_foreach (dc_device_t *abstract, dc_dive_callback_t callback, void *userdata);
static dc_status_t hw_frog_device_close (dc_device_t *abstract);
static const device_backend_t hw_frog_device_backend = {
DC_FAMILY_HW_FROG,
hw_frog_device_set_fingerprint, /* set_fingerprint */
hw_frog_device_version, /* version */
NULL, /* read */
NULL, /* write */
NULL, /* dump */
@ -294,7 +292,7 @@ hw_frog_device_set_fingerprint (dc_device_t *abstract, const unsigned char data[
}
static dc_status_t
dc_status_t
hw_frog_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size)
{
hw_frog_device_t *device = (hw_frog_device_t *) abstract;

View File

@ -62,7 +62,6 @@ static dc_status_t hw_ostc_device_close (dc_device_t *abstract);
static const device_backend_t hw_ostc_device_backend = {
DC_FAMILY_HW_OSTC,
hw_ostc_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
hw_ostc_device_dump, /* dump */

View File

@ -72,7 +72,6 @@ dc_device_read
dc_device_set_cancel
dc_device_set_events
dc_device_set_fingerprint
dc_device_version
dc_device_write
cressi_edy_device_open
@ -85,10 +84,13 @@ mares_darwin_extract_dives
mares_iconhd_device_open
mares_iconhd_extract_dives
oceanic_atom2_device_open
oceanic_atom2_device_version
oceanic_atom2_device_keepalive
oceanic_veo250_device_open
oceanic_veo250_device_version
oceanic_veo250_device_keepalive
oceanic_vtpro_device_open
oceanic_vtpro_device_version
oceanic_vtpro_device_keepalive
reefnet_sensus_device_open
reefnet_sensus_device_set_timestamp
@ -109,6 +111,7 @@ reefnet_sensusultra_device_write_parameter
reefnet_sensusultra_device_write_user
reefnet_sensusultra_extract_dives
suunto_d9_device_open
suunto_d9_device_version
suunto_d9_device_reset_maxdepth
suunto_solution_device_open
suunto_solution_extract_dives
@ -117,6 +120,7 @@ suunto_eon_device_write_interval
suunto_eon_device_write_name
suunto_eon_extract_dives
suunto_vyper2_device_open
suunto_vyper2_device_version
suunto_vyper2_device_reset_maxdepth
suunto_vyper_device_open
suunto_vyper_device_read_dive
@ -129,6 +133,7 @@ uwatec_memomouse_device_open
uwatec_memomouse_device_set_timestamp
uwatec_memomouse_extract_dives
uwatec_smart_device_open
uwatec_smart_device_version
uwatec_smart_device_set_timestamp
uwatec_smart_extract_dives
hw_ostc_device_open
@ -140,9 +145,11 @@ hw_ostc_device_reset
hw_ostc_device_screenshot
hw_ostc_extract_dives
hw_frog_device_open
hw_frog_device_version
hw_frog_device_clock
hw_frog_device_display
hw_frog_device_customtext
zeagle_n2ition3_device_open
atomics_cobalt_device_open
atomics_cobalt_device_version
atomics_cobalt_device_set_simulation

View File

@ -63,7 +63,6 @@ static dc_status_t mares_darwin_device_close (dc_device_t *abstract);
static const device_backend_t mares_darwin_device_backend = {
DC_FAMILY_MARES_DARWIN,
mares_darwin_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
mares_common_device_read, /* read */
NULL, /* write */
mares_darwin_device_dump, /* dump */

View File

@ -67,7 +67,6 @@ static dc_status_t mares_iconhd_device_close (dc_device_t *abstract);
static const device_backend_t mares_iconhd_device_backend = {
DC_FAMILY_MARES_ICONHD,
mares_iconhd_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
mares_iconhd_device_read, /* read */
NULL, /* write */
mares_iconhd_device_dump, /* dump */

View File

@ -61,7 +61,6 @@ static dc_status_t mares_nemo_device_close (dc_device_t *abstract);
static const device_backend_t mares_nemo_device_backend = {
DC_FAMILY_MARES_NEMO,
mares_nemo_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
mares_nemo_device_dump, /* dump */

View File

@ -51,7 +51,6 @@ static dc_status_t mares_puck_device_close (dc_device_t *abstract);
static const device_backend_t mares_puck_device_backend = {
DC_FAMILY_MARES_PUCK,
mares_puck_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
mares_common_device_read, /* read */
NULL, /* write */
mares_puck_device_dump, /* dump */

View File

@ -48,7 +48,6 @@ typedef struct oceanic_atom2_device_t {
unsigned char version[PAGESIZE];
} oceanic_atom2_device_t;
static dc_status_t oceanic_atom2_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size);
static dc_status_t oceanic_atom2_device_read (dc_device_t *abstract, unsigned int address, unsigned char data[], unsigned int size);
static dc_status_t oceanic_atom2_device_write (dc_device_t *abstract, unsigned int address, const unsigned char data[], unsigned int size);
static dc_status_t oceanic_atom2_device_close (dc_device_t *abstract);
@ -56,7 +55,6 @@ static dc_status_t oceanic_atom2_device_close (dc_device_t *abstract);
static const device_backend_t oceanic_atom2_device_backend = {
DC_FAMILY_OCEANIC_ATOM2,
oceanic_common_device_set_fingerprint, /* set_fingerprint */
oceanic_atom2_device_version, /* version */
oceanic_atom2_device_read, /* read */
oceanic_atom2_device_write, /* write */
oceanic_common_device_dump, /* dump */
@ -455,7 +453,7 @@ oceanic_atom2_device_keepalive (dc_device_t *abstract)
}
static dc_status_t
dc_status_t
oceanic_atom2_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size)
{
oceanic_atom2_device_t *device = (oceanic_atom2_device_t*) abstract;

View File

@ -49,14 +49,12 @@ typedef struct oceanic_veo250_device_t {
unsigned char version[PAGESIZE];
} oceanic_veo250_device_t;
static dc_status_t oceanic_veo250_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size);
static dc_status_t oceanic_veo250_device_read (dc_device_t *abstract, unsigned int address, unsigned char data[], unsigned int size);
static dc_status_t oceanic_veo250_device_close (dc_device_t *abstract);
static const device_backend_t oceanic_veo250_device_backend = {
DC_FAMILY_OCEANIC_VEO250,
oceanic_common_device_set_fingerprint, /* set_fingerprint */
oceanic_veo250_device_version, /* version */
oceanic_veo250_device_read, /* read */
NULL, /* write */
oceanic_common_device_dump, /* dump */
@ -362,7 +360,7 @@ oceanic_veo250_device_keepalive (dc_device_t *abstract)
}
static dc_status_t
dc_status_t
oceanic_veo250_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size)
{
oceanic_veo250_device_t *device = (oceanic_veo250_device_t*) abstract;

View File

@ -49,14 +49,12 @@ typedef struct oceanic_vtpro_device_t {
unsigned char version[PAGESIZE];
} oceanic_vtpro_device_t;
static dc_status_t oceanic_vtpro_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size);
static dc_status_t oceanic_vtpro_device_read (dc_device_t *abstract, unsigned int address, unsigned char data[], unsigned int size);
static dc_status_t oceanic_vtpro_device_close (dc_device_t *abstract);
static const device_backend_t oceanic_vtpro_device_backend = {
DC_FAMILY_OCEANIC_VTPRO,
oceanic_common_device_set_fingerprint, /* set_fingerprint */
oceanic_vtpro_device_version, /* version */
oceanic_vtpro_device_read, /* read */
NULL, /* write */
oceanic_common_device_dump, /* dump */
@ -403,7 +401,7 @@ oceanic_vtpro_device_keepalive (dc_device_t *abstract)
}
static dc_status_t
dc_status_t
oceanic_vtpro_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size)
{
oceanic_vtpro_device_t *device = (oceanic_vtpro_device_t*) abstract;

View File

@ -56,7 +56,6 @@ static dc_status_t reefnet_sensus_device_close (dc_device_t *abstract);
static const device_backend_t reefnet_sensus_device_backend = {
DC_FAMILY_REEFNET_SENSUS,
reefnet_sensus_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
reefnet_sensus_device_dump, /* dump */

View File

@ -55,7 +55,6 @@ static dc_status_t reefnet_sensuspro_device_close (dc_device_t *abstract);
static const device_backend_t reefnet_sensuspro_device_backend = {
DC_FAMILY_REEFNET_SENSUSPRO,
reefnet_sensuspro_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
reefnet_sensuspro_device_dump, /* dump */

View File

@ -64,7 +64,6 @@ static dc_status_t reefnet_sensusultra_device_close (dc_device_t *abstract);
static const device_backend_t reefnet_sensusultra_device_backend = {
DC_FAMILY_REEFNET_SENSUSULTRA,
reefnet_sensusultra_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
reefnet_sensusultra_device_dump, /* dump */

View File

@ -55,7 +55,6 @@ static const suunto_common2_device_backend_t suunto_d9_device_backend = {
{
DC_FAMILY_SUUNTO_D9,
suunto_common2_device_set_fingerprint, /* set_fingerprint */
suunto_common2_device_version, /* version */
suunto_common2_device_read, /* read */
suunto_common2_device_write, /* write */
suunto_common2_device_dump, /* dump */
@ -299,6 +298,16 @@ suunto_d9_device_packet (dc_device_t *abstract, const unsigned char command[], u
}
dc_status_t
suunto_d9_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size)
{
if (! device_is_suunto_d9 (abstract))
return DC_STATUS_INVALIDARGS;
return suunto_common2_device_version (abstract, data, size);
}
dc_status_t
suunto_d9_device_reset_maxdepth (dc_device_t *abstract)
{

View File

@ -50,7 +50,6 @@ static dc_status_t suunto_eon_device_close (dc_device_t *abstract);
static const device_backend_t suunto_eon_device_backend = {
DC_FAMILY_SUUNTO_EON,
suunto_common_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
suunto_eon_device_dump, /* dump */

View File

@ -52,7 +52,6 @@ static dc_status_t suunto_solution_device_close (dc_device_t *abstract);
static const device_backend_t suunto_solution_device_backend = {
DC_FAMILY_SUUNTO_SOLUTION,
NULL, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
suunto_solution_device_dump, /* dump */

View File

@ -63,7 +63,6 @@ static dc_status_t suunto_vyper_device_close (dc_device_t *abstract);
static const device_backend_t suunto_vyper_device_backend = {
DC_FAMILY_SUUNTO_VYPER,
suunto_common_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
suunto_vyper_device_read, /* read */
suunto_vyper_device_write, /* write */
suunto_vyper_device_dump, /* dump */

View File

@ -47,7 +47,6 @@ static const suunto_common2_device_backend_t suunto_vyper2_device_backend = {
{
DC_FAMILY_SUUNTO_VYPER2,
suunto_common2_device_set_fingerprint, /* set_fingerprint */
suunto_common2_device_version, /* version */
suunto_common2_device_read, /* read */
suunto_common2_device_write, /* write */
suunto_common2_device_dump, /* dump */
@ -225,6 +224,16 @@ suunto_vyper2_device_packet (dc_device_t *abstract, const unsigned char command[
}
dc_status_t
suunto_vyper2_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size)
{
if (! device_is_suunto_vyper2 (abstract))
return DC_STATUS_INVALIDARGS;
return suunto_common2_device_version (abstract, data, size);
}
dc_status_t
suunto_vyper2_device_reset_maxdepth (dc_device_t *abstract)
{

View File

@ -61,7 +61,6 @@ static dc_status_t uwatec_aladin_device_close (dc_device_t *abstract);
static const device_backend_t uwatec_aladin_device_backend = {
DC_FAMILY_UWATEC_ALADIN,
uwatec_aladin_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
uwatec_aladin_device_dump, /* dump */

View File

@ -57,7 +57,6 @@ static dc_status_t uwatec_memomouse_device_close (dc_device_t *abstract);
static const device_backend_t uwatec_memomouse_device_backend = {
DC_FAMILY_UWATEC_MEMOMOUSE,
uwatec_memomouse_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */
NULL, /* write */
uwatec_memomouse_device_dump, /* dump */

View File

@ -44,7 +44,6 @@ typedef struct uwatec_smart_device_t {
} uwatec_smart_device_t;
static dc_status_t uwatec_smart_device_set_fingerprint (dc_device_t *device, const unsigned char data[], unsigned int size);
static dc_status_t uwatec_smart_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size);
static dc_status_t uwatec_smart_device_dump (dc_device_t *abstract, dc_buffer_t *buffer);
static dc_status_t uwatec_smart_device_foreach (dc_device_t *abstract, dc_dive_callback_t callback, void *userdata);
static dc_status_t uwatec_smart_device_close (dc_device_t *abstract);
@ -52,7 +51,6 @@ static dc_status_t uwatec_smart_device_close (dc_device_t *abstract);
static const device_backend_t uwatec_smart_device_backend = {
DC_FAMILY_UWATEC_SMART,
uwatec_smart_device_set_fingerprint, /* set_fingerprint */
uwatec_smart_device_version, /* version */
NULL, /* read */
NULL, /* write */
uwatec_smart_device_dump, /* dump */
@ -271,7 +269,7 @@ uwatec_smart_device_set_fingerprint (dc_device_t *abstract, const unsigned char
}
static dc_status_t
dc_status_t
uwatec_smart_device_version (dc_device_t *abstract, unsigned char data[], unsigned int size)
{
uwatec_smart_device_t *device = (uwatec_smart_device_t *) abstract;

View File

@ -62,7 +62,6 @@ static dc_status_t zeagle_n2ition3_device_close (dc_device_t *abstract);
static const device_backend_t zeagle_n2ition3_device_backend = {
DC_FAMILY_ZEAGLE_N2ITION3,
zeagle_n2ition3_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
zeagle_n2ition3_device_read, /* read */
NULL, /* write */
zeagle_n2ition3_device_dump, /* dump */