Use a common backend type for the device and parser layers.

This commit is contained in:
Jef Driesen 2012-01-16 23:05:16 +01:00
parent 9136a52835
commit 163d383332
49 changed files with 164 additions and 177 deletions

View File

@ -51,7 +51,7 @@ static const char *g_cachedir = NULL;
static int g_cachedir_read = 1;
typedef struct device_data_t {
device_type_t backend;
dc_family_t backend;
device_devinfo_t devinfo;
device_clock_t clock;
} device_data_t;
@ -70,36 +70,36 @@ typedef struct sample_data_t {
typedef struct backend_table_t {
const char *name;
device_type_t type;
dc_family_t type;
} backend_table_t;
static const backend_table_t g_backends[] = {
{"solution", DEVICE_TYPE_SUUNTO_SOLUTION},
{"eon", DEVICE_TYPE_SUUNTO_EON},
{"vyper", DEVICE_TYPE_SUUNTO_VYPER},
{"vyper2", DEVICE_TYPE_SUUNTO_VYPER2},
{"d9", DEVICE_TYPE_SUUNTO_D9},
{"aladin", DEVICE_TYPE_UWATEC_ALADIN},
{"memomouse", DEVICE_TYPE_UWATEC_MEMOMOUSE},
{"smart", DEVICE_TYPE_UWATEC_SMART},
{"sensus", DEVICE_TYPE_REEFNET_SENSUS},
{"sensuspro", DEVICE_TYPE_REEFNET_SENSUSPRO},
{"sensusultra", DEVICE_TYPE_REEFNET_SENSUSULTRA},
{"vtpro", DEVICE_TYPE_OCEANIC_VTPRO},
{"veo250", DEVICE_TYPE_OCEANIC_VEO250},
{"atom2", DEVICE_TYPE_OCEANIC_ATOM2},
{"nemo", DEVICE_TYPE_MARES_NEMO},
{"puck", DEVICE_TYPE_MARES_PUCK},
{"darwin", DEVICE_TYPE_MARES_DARWIN},
{"iconhd", DEVICE_TYPE_MARES_ICONHD},
{"ostc", DEVICE_TYPE_HW_OSTC},
{"frog", DEVICE_TYPE_HW_FROG},
{"edy", DEVICE_TYPE_CRESSI_EDY},
{"n2ition3", DEVICE_TYPE_ZEAGLE_N2ITION3},
{"cobalt", DEVICE_TYPE_ATOMICS_COBALT}
{"solution", DC_FAMILY_SUUNTO_SOLUTION},
{"eon", DC_FAMILY_SUUNTO_EON},
{"vyper", DC_FAMILY_SUUNTO_VYPER},
{"vyper2", DC_FAMILY_SUUNTO_VYPER2},
{"d9", DC_FAMILY_SUUNTO_D9},
{"aladin", DC_FAMILY_UWATEC_ALADIN},
{"memomouse", DC_FAMILY_UWATEC_MEMOMOUSE},
{"smart", DC_FAMILY_UWATEC_SMART},
{"sensus", DC_FAMILY_REEFNET_SENSUS},
{"sensuspro", DC_FAMILY_REEFNET_SENSUSPRO},
{"sensusultra", DC_FAMILY_REEFNET_SENSUSULTRA},
{"vtpro", DC_FAMILY_OCEANIC_VTPRO},
{"veo250", DC_FAMILY_OCEANIC_VEO250},
{"atom2", DC_FAMILY_OCEANIC_ATOM2},
{"nemo", DC_FAMILY_MARES_NEMO},
{"puck", DC_FAMILY_MARES_PUCK},
{"darwin", DC_FAMILY_MARES_DARWIN},
{"iconhd", DC_FAMILY_MARES_ICONHD},
{"ostc", DC_FAMILY_HW_OSTC},
{"frog", DC_FAMILY_HW_FROG},
{"edy", DC_FAMILY_CRESSI_EDY},
{"n2ition3", DC_FAMILY_ZEAGLE_N2ITION3},
{"cobalt", DC_FAMILY_ATOMICS_COBALT}
};
static device_type_t
static dc_family_t
lookup_type (const char *name)
{
unsigned int nbackends = sizeof (g_backends) / sizeof (g_backends[0]);
@ -108,11 +108,11 @@ lookup_type (const char *name)
return g_backends[i].type;
}
return DEVICE_TYPE_NULL;
return DC_FAMILY_NULL;
}
static const char *
lookup_name (device_type_t type)
lookup_name (dc_family_t type)
{
unsigned int nbackends = sizeof (g_backends) / sizeof (g_backends[0]);
for (unsigned int i = 0; i < nbackends; ++i) {
@ -160,7 +160,7 @@ fpconvert (const char *fingerprint)
}
static dc_buffer_t *
fpread (const char *dirname, device_type_t backend, unsigned int serial)
fpread (const char *dirname, dc_family_t backend, unsigned int serial)
{
// Build the filename.
char filename[1024] = {0};
@ -189,7 +189,7 @@ fpread (const char *dirname, device_type_t backend, unsigned int serial)
}
static void
fpwrite (dc_buffer_t *buffer, const char *dirname, device_type_t backend, unsigned int serial)
fpwrite (dc_buffer_t *buffer, const char *dirname, dc_family_t backend, unsigned int serial)
{
// Check the buffer size.
if (dc_buffer_get_size (buffer) == 0)
@ -291,68 +291,68 @@ doparse (FILE *fp, device_data_t *devdata, const unsigned char data[], unsigned
parser_t *parser = NULL;
dc_status_t rc = DC_STATUS_SUCCESS;
switch (devdata->backend) {
case DEVICE_TYPE_SUUNTO_SOLUTION:
case DC_FAMILY_SUUNTO_SOLUTION:
rc = suunto_solution_parser_create (&parser);
break;
case DEVICE_TYPE_SUUNTO_EON:
case DC_FAMILY_SUUNTO_EON:
rc = suunto_eon_parser_create (&parser, 0);
break;
case DEVICE_TYPE_SUUNTO_VYPER:
case DC_FAMILY_SUUNTO_VYPER:
if (devdata->devinfo.model == 0x01)
rc = suunto_eon_parser_create (&parser, 1);
else
rc = suunto_vyper_parser_create (&parser);
break;
case DEVICE_TYPE_SUUNTO_VYPER2:
case DEVICE_TYPE_SUUNTO_D9:
case DC_FAMILY_SUUNTO_VYPER2:
case DC_FAMILY_SUUNTO_D9:
rc = suunto_d9_parser_create (&parser, devdata->devinfo.model);
break;
case DEVICE_TYPE_UWATEC_ALADIN:
case DEVICE_TYPE_UWATEC_MEMOMOUSE:
case DC_FAMILY_UWATEC_ALADIN:
case DC_FAMILY_UWATEC_MEMOMOUSE:
rc = uwatec_memomouse_parser_create (&parser, devdata->clock.devtime, devdata->clock.systime);
break;
case DEVICE_TYPE_UWATEC_SMART:
case DC_FAMILY_UWATEC_SMART:
rc = uwatec_smart_parser_create (&parser, devdata->devinfo.model, devdata->clock.devtime, devdata->clock.systime);
break;
case DEVICE_TYPE_REEFNET_SENSUS:
case DC_FAMILY_REEFNET_SENSUS:
rc = reefnet_sensus_parser_create (&parser, devdata->clock.devtime, devdata->clock.systime);
break;
case DEVICE_TYPE_REEFNET_SENSUSPRO:
case DC_FAMILY_REEFNET_SENSUSPRO:
rc = reefnet_sensuspro_parser_create (&parser, devdata->clock.devtime, devdata->clock.systime);
break;
case DEVICE_TYPE_REEFNET_SENSUSULTRA:
case DC_FAMILY_REEFNET_SENSUSULTRA:
rc = reefnet_sensusultra_parser_create (&parser, devdata->clock.devtime, devdata->clock.systime);
break;
case DEVICE_TYPE_OCEANIC_VTPRO:
case DC_FAMILY_OCEANIC_VTPRO:
rc = oceanic_vtpro_parser_create (&parser);
break;
case DEVICE_TYPE_OCEANIC_VEO250:
case DC_FAMILY_OCEANIC_VEO250:
rc = oceanic_veo250_parser_create (&parser, devdata->devinfo.model);
break;
case DEVICE_TYPE_OCEANIC_ATOM2:
case DC_FAMILY_OCEANIC_ATOM2:
rc = oceanic_atom2_parser_create (&parser, devdata->devinfo.model);
break;
case DEVICE_TYPE_MARES_NEMO:
case DEVICE_TYPE_MARES_PUCK:
case DC_FAMILY_MARES_NEMO:
case DC_FAMILY_MARES_PUCK:
rc = mares_nemo_parser_create (&parser, devdata->devinfo.model);
break;
case DEVICE_TYPE_MARES_DARWIN:
case DC_FAMILY_MARES_DARWIN:
rc = mares_darwin_parser_create (&parser, devdata->devinfo.model);
break;
case DEVICE_TYPE_MARES_ICONHD:
case DC_FAMILY_MARES_ICONHD:
rc = mares_iconhd_parser_create (&parser, devdata->devinfo.model);
break;
case DEVICE_TYPE_HW_OSTC:
case DC_FAMILY_HW_OSTC:
rc = hw_ostc_parser_create (&parser, 0);
break;
case DEVICE_TYPE_HW_FROG:
case DC_FAMILY_HW_FROG:
rc = hw_ostc_parser_create (&parser, 1);
break;
case DEVICE_TYPE_CRESSI_EDY:
case DEVICE_TYPE_ZEAGLE_N2ITION3:
case DC_FAMILY_CRESSI_EDY:
case DC_FAMILY_ZEAGLE_N2ITION3:
rc = cressi_edy_parser_create (&parser, devdata->devinfo.model);
break;
case DEVICE_TYPE_ATOMICS_COBALT:
case DC_FAMILY_ATOMICS_COBALT:
rc = atomics_cobalt_parser_create (&parser);
break;
default:
@ -578,7 +578,7 @@ usage (const char *filename)
static dc_status_t
dowork (device_type_t backend, unsigned int model, const char *devname, const char *rawfile, const char *xmlfile, int memory, int dives, dc_buffer_t *fingerprint)
dowork (dc_family_t backend, unsigned int model, const char *devname, const char *rawfile, const char *xmlfile, int memory, int dives, dc_buffer_t *fingerprint)
{
dc_status_t rc = DC_STATUS_SUCCESS;
@ -591,73 +591,73 @@ dowork (device_type_t backend, unsigned int model, const char *devname, const ch
lookup_name (backend), devname ? devname : "null");
device_t *device = NULL;
switch (backend) {
case DEVICE_TYPE_SUUNTO_SOLUTION:
case DC_FAMILY_SUUNTO_SOLUTION:
rc = suunto_solution_device_open (&device, devname);
break;
case DEVICE_TYPE_SUUNTO_EON:
case DC_FAMILY_SUUNTO_EON:
rc = suunto_eon_device_open (&device, devname);
break;
case DEVICE_TYPE_SUUNTO_VYPER:
case DC_FAMILY_SUUNTO_VYPER:
rc = suunto_vyper_device_open (&device, devname);
break;
case DEVICE_TYPE_SUUNTO_VYPER2:
case DC_FAMILY_SUUNTO_VYPER2:
rc = suunto_vyper2_device_open (&device, devname);
break;
case DEVICE_TYPE_SUUNTO_D9:
case DC_FAMILY_SUUNTO_D9:
rc = suunto_d9_device_open (&device, devname, model);
break;
case DEVICE_TYPE_UWATEC_ALADIN:
case DC_FAMILY_UWATEC_ALADIN:
rc = uwatec_aladin_device_open (&device, devname);
break;
case DEVICE_TYPE_UWATEC_MEMOMOUSE:
case DC_FAMILY_UWATEC_MEMOMOUSE:
rc = uwatec_memomouse_device_open (&device, devname);
break;
case DEVICE_TYPE_UWATEC_SMART:
case DC_FAMILY_UWATEC_SMART:
rc = uwatec_smart_device_open (&device);
break;
case DEVICE_TYPE_REEFNET_SENSUS:
case DC_FAMILY_REEFNET_SENSUS:
rc = reefnet_sensus_device_open (&device, devname);
break;
case DEVICE_TYPE_REEFNET_SENSUSPRO:
case DC_FAMILY_REEFNET_SENSUSPRO:
rc = reefnet_sensuspro_device_open (&device, devname);
break;
case DEVICE_TYPE_REEFNET_SENSUSULTRA:
case DC_FAMILY_REEFNET_SENSUSULTRA:
rc = reefnet_sensusultra_device_open (&device, devname);
break;
case DEVICE_TYPE_OCEANIC_VTPRO:
case DC_FAMILY_OCEANIC_VTPRO:
rc = oceanic_vtpro_device_open (&device, devname);
break;
case DEVICE_TYPE_OCEANIC_VEO250:
case DC_FAMILY_OCEANIC_VEO250:
rc = oceanic_veo250_device_open (&device, devname);
break;
case DEVICE_TYPE_OCEANIC_ATOM2:
case DC_FAMILY_OCEANIC_ATOM2:
rc = oceanic_atom2_device_open (&device, devname);
break;
case DEVICE_TYPE_MARES_NEMO:
case DC_FAMILY_MARES_NEMO:
rc = mares_nemo_device_open (&device, devname);
break;
case DEVICE_TYPE_MARES_PUCK:
case DC_FAMILY_MARES_PUCK:
rc = mares_puck_device_open (&device, devname);
break;
case DEVICE_TYPE_MARES_DARWIN:
case DC_FAMILY_MARES_DARWIN:
rc = mares_darwin_device_open (&device, devname, model);
break;
case DEVICE_TYPE_MARES_ICONHD:
case DC_FAMILY_MARES_ICONHD:
rc = mares_iconhd_device_open (&device, devname);
break;
case DEVICE_TYPE_HW_OSTC:
case DC_FAMILY_HW_OSTC:
rc = hw_ostc_device_open (&device, devname);
break;
case DEVICE_TYPE_HW_FROG:
case DC_FAMILY_HW_FROG:
rc = hw_frog_device_open (&device, devname);
break;
case DEVICE_TYPE_CRESSI_EDY:
case DC_FAMILY_CRESSI_EDY:
rc = cressi_edy_device_open (&device, devname);
break;
case DEVICE_TYPE_ZEAGLE_N2ITION3:
case DC_FAMILY_ZEAGLE_N2ITION3:
rc = zeagle_n2ition3_device_open (&device, devname);
break;
case DEVICE_TYPE_ATOMICS_COBALT:
case DC_FAMILY_ATOMICS_COBALT:
rc = atomics_cobalt_device_open (&device);
break;
default:
@ -773,7 +773,7 @@ int
main (int argc, char *argv[])
{
// Default values.
device_type_t backend = DEVICE_TYPE_NULL;
dc_family_t backend = DC_FAMILY_NULL;
const char *logfile = "output.log";
const char *rawfile = "output.bin";
const char *xmlfile = "output.xml";
@ -836,7 +836,7 @@ main (int argc, char *argv[])
}
// The backend is a mandatory argument.
if (backend == DEVICE_TYPE_NULL) {
if (backend == DC_FAMILY_NULL) {
usage (argv[0]);
return EXIT_FAILURE;
}

View File

@ -40,6 +40,42 @@ typedef enum dc_status_t {
DC_STATUS_CANCELLED = -10
} dc_status_t;
typedef enum dc_family_t {
DC_FAMILY_NULL = 0,
/* Suunto */
DC_FAMILY_SUUNTO_SOLUTION = (1 << 16),
DC_FAMILY_SUUNTO_EON,
DC_FAMILY_SUUNTO_VYPER,
DC_FAMILY_SUUNTO_VYPER2,
DC_FAMILY_SUUNTO_D9,
/* Reefnet */
DC_FAMILY_REEFNET_SENSUS = (2 << 16),
DC_FAMILY_REEFNET_SENSUSPRO,
DC_FAMILY_REEFNET_SENSUSULTRA,
/* Uwatec */
DC_FAMILY_UWATEC_ALADIN = (3 << 16),
DC_FAMILY_UWATEC_MEMOMOUSE,
DC_FAMILY_UWATEC_SMART,
/* Oceanic */
DC_FAMILY_OCEANIC_VTPRO = (4 << 16),
DC_FAMILY_OCEANIC_VEO250,
DC_FAMILY_OCEANIC_ATOM2,
/* Mares */
DC_FAMILY_MARES_NEMO = (5 << 16),
DC_FAMILY_MARES_PUCK,
DC_FAMILY_MARES_DARWIN,
DC_FAMILY_MARES_ICONHD,
/* Heinrichs Weikamp */
DC_FAMILY_HW_OSTC = (6 << 16),
DC_FAMILY_HW_FROG,
/* Cressi */
DC_FAMILY_CRESSI_EDY = (7 << 16),
/* Zeagle */
DC_FAMILY_ZEAGLE_N2ITION3 = (8 << 16),
/* Atomic Aquatics */
DC_FAMILY_ATOMICS_COBALT = (9 << 16)
} dc_family_t;
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@ -30,33 +30,6 @@
extern "C" {
#endif /* __cplusplus */
typedef enum device_type_t {
DEVICE_TYPE_NULL = 0,
DEVICE_TYPE_SUUNTO_SOLUTION,
DEVICE_TYPE_SUUNTO_EON,
DEVICE_TYPE_SUUNTO_VYPER,
DEVICE_TYPE_SUUNTO_VYPER2,
DEVICE_TYPE_SUUNTO_D9,
DEVICE_TYPE_REEFNET_SENSUS,
DEVICE_TYPE_REEFNET_SENSUSPRO,
DEVICE_TYPE_REEFNET_SENSUSULTRA,
DEVICE_TYPE_UWATEC_ALADIN,
DEVICE_TYPE_UWATEC_MEMOMOUSE,
DEVICE_TYPE_UWATEC_SMART,
DEVICE_TYPE_OCEANIC_ATOM2,
DEVICE_TYPE_OCEANIC_VEO250,
DEVICE_TYPE_OCEANIC_VTPRO,
DEVICE_TYPE_MARES_NEMO,
DEVICE_TYPE_MARES_PUCK,
DEVICE_TYPE_MARES_DARWIN,
DEVICE_TYPE_MARES_ICONHD,
DEVICE_TYPE_HW_OSTC,
DEVICE_TYPE_HW_FROG,
DEVICE_TYPE_CRESSI_EDY,
DEVICE_TYPE_ZEAGLE_N2ITION3,
DEVICE_TYPE_ATOMICS_COBALT
} device_type_t;
typedef enum device_event_t {
DEVICE_EVENT_WAITING = (1 << 0),
DEVICE_EVENT_PROGRESS = (1 << 1),
@ -88,7 +61,7 @@ typedef void (*device_event_callback_t) (device_t *device, device_event_t event,
typedef int (*dive_callback_t) (const unsigned char *data, unsigned int size, const unsigned char *fingerprint, unsigned int fsize, void *userdata);
device_type_t device_get_type (device_t *device);
dc_family_t device_get_type (device_t *device);
dc_status_t device_set_cancel (device_t *device, device_cancel_callback_t callback, void *userdata);

View File

@ -29,28 +29,6 @@
extern "C" {
#endif /* __cplusplus */
typedef enum parser_type_t {
PARSER_TYPE_NULL = 0,
PARSER_TYPE_SUUNTO_SOLUTION,
PARSER_TYPE_SUUNTO_EON,
PARSER_TYPE_SUUNTO_VYPER,
PARSER_TYPE_SUUNTO_D9,
PARSER_TYPE_REEFNET_SENSUS,
PARSER_TYPE_REEFNET_SENSUSPRO,
PARSER_TYPE_REEFNET_SENSUSULTRA,
PARSER_TYPE_UWATEC_MEMOMOUSE,
PARSER_TYPE_UWATEC_SMART,
PARSER_TYPE_MARES_NEMO,
PARSER_TYPE_MARES_DARWIN,
PARSER_TYPE_MARES_ICONHD,
PARSER_TYPE_OCEANIC_VTPRO,
PARSER_TYPE_OCEANIC_VEO250,
PARSER_TYPE_OCEANIC_ATOM2,
PARSER_TYPE_HW_OSTC,
PARSER_TYPE_CRESSI_EDY,
PARSER_TYPE_ATOMICS_COBALT
} parser_type_t;
typedef enum parser_sample_type_t {
SAMPLE_TYPE_TIME,
SAMPLE_TYPE_DEPTH,
@ -148,7 +126,7 @@ typedef struct parser_t parser_t;
typedef void (*sample_callback_t) (parser_sample_type_t type, parser_sample_value_t value, void *userdata);
parser_type_t
dc_family_t
parser_get_type (parser_t *device);
dc_status_t

View File

@ -63,7 +63,7 @@ static dc_status_t atomics_cobalt_device_foreach (device_t *abstract, dive_callb
static dc_status_t atomics_cobalt_device_close (device_t *abstract);
static const device_backend_t atomics_cobalt_device_backend = {
DEVICE_TYPE_ATOMICS_COBALT,
DC_FAMILY_ATOMICS_COBALT,
atomics_cobalt_device_set_fingerprint, /* set_fingerprint */
atomics_cobalt_device_version, /* version */
NULL, /* read */

View File

@ -49,7 +49,7 @@ static dc_status_t atomics_cobalt_parser_samples_foreach (parser_t *abstract, sa
static dc_status_t atomics_cobalt_parser_destroy (parser_t *abstract);
static const parser_backend_t atomics_cobalt_parser_backend = {
PARSER_TYPE_ATOMICS_COBALT,
DC_FAMILY_ATOMICS_COBALT,
atomics_cobalt_parser_set_data, /* set_data */
atomics_cobalt_parser_get_datetime, /* datetime */
atomics_cobalt_parser_get_field, /* fields */

View File

@ -62,7 +62,7 @@ static dc_status_t cressi_edy_device_foreach (device_t *abstract, dive_callback_
static dc_status_t cressi_edy_device_close (device_t *abstract);
static const device_backend_t cressi_edy_device_backend = {
DEVICE_TYPE_CRESSI_EDY,
DC_FAMILY_CRESSI_EDY,
cressi_edy_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
cressi_edy_device_read, /* read */

View File

@ -41,7 +41,7 @@ static dc_status_t cressi_edy_parser_samples_foreach (parser_t *abstract, sample
static dc_status_t cressi_edy_parser_destroy (parser_t *abstract);
static const parser_backend_t cressi_edy_parser_backend = {
PARSER_TYPE_CRESSI_EDY,
DC_FAMILY_CRESSI_EDY,
cressi_edy_parser_set_data, /* set_data */
cressi_edy_parser_get_datetime, /* datetime */
cressi_edy_parser_get_field, /* fields */

View File

@ -49,7 +49,7 @@ struct device_t {
};
struct device_backend_t {
device_type_t type;
dc_family_t type;
dc_status_t (*set_fingerprint) (device_t *device, const unsigned char data[], unsigned int size);

View File

@ -39,11 +39,11 @@ device_init (device_t *device, const device_backend_t *backend)
}
device_type_t
dc_family_t
device_get_type (device_t *device)
{
if (device == NULL)
return DEVICE_TYPE_NULL;
return DC_FAMILY_NULL;
return device->backend->type;
}

View File

@ -69,7 +69,7 @@ static dc_status_t hw_frog_device_foreach (device_t *abstract, dive_callback_t c
static dc_status_t hw_frog_device_close (device_t *abstract);
static const device_backend_t hw_frog_device_backend = {
DEVICE_TYPE_HW_FROG,
DC_FAMILY_HW_FROG,
hw_frog_device_set_fingerprint, /* set_fingerprint */
hw_frog_device_version, /* version */
NULL, /* read */

View File

@ -60,7 +60,7 @@ static dc_status_t hw_ostc_device_foreach (device_t *abstract, dive_callback_t c
static dc_status_t hw_ostc_device_close (device_t *abstract);
static const device_backend_t hw_ostc_device_backend = {
DEVICE_TYPE_HW_OSTC,
DC_FAMILY_HW_OSTC,
hw_ostc_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -48,7 +48,7 @@ static dc_status_t hw_ostc_parser_samples_foreach (parser_t *abstract, sample_ca
static dc_status_t hw_ostc_parser_destroy (parser_t *abstract);
static const parser_backend_t hw_ostc_parser_backend = {
PARSER_TYPE_HW_OSTC,
DC_FAMILY_HW_OSTC,
hw_ostc_parser_set_data, /* set_data */
hw_ostc_parser_get_datetime, /* datetime */
hw_ostc_parser_get_field, /* fields */

View File

@ -61,7 +61,7 @@ static dc_status_t mares_darwin_device_foreach (device_t *abstract, dive_callbac
static dc_status_t mares_darwin_device_close (device_t *abstract);
static const device_backend_t mares_darwin_device_backend = {
DEVICE_TYPE_MARES_DARWIN,
DC_FAMILY_MARES_DARWIN,
mares_darwin_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
mares_common_device_read, /* read */

View File

@ -47,7 +47,7 @@ static dc_status_t mares_darwin_parser_samples_foreach (parser_t *abstract, samp
static dc_status_t mares_darwin_parser_destroy (parser_t *abstract);
static const parser_backend_t mares_darwin_parser_backend = {
PARSER_TYPE_MARES_DARWIN,
DC_FAMILY_MARES_DARWIN,
mares_darwin_parser_set_data, /* set_data */
mares_darwin_parser_get_datetime, /* datetime */
mares_darwin_parser_get_field, /* fields */

View File

@ -63,7 +63,7 @@ static dc_status_t mares_iconhd_device_foreach (device_t *abstract, dive_callbac
static dc_status_t mares_iconhd_device_close (device_t *abstract);
static const device_backend_t mares_iconhd_device_backend = {
DEVICE_TYPE_MARES_ICONHD,
DC_FAMILY_MARES_ICONHD,
mares_iconhd_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
mares_iconhd_device_read, /* read */

View File

@ -44,7 +44,7 @@ static dc_status_t mares_iconhd_parser_samples_foreach (parser_t *abstract, samp
static dc_status_t mares_iconhd_parser_destroy (parser_t *abstract);
static const parser_backend_t mares_iconhd_parser_backend = {
PARSER_TYPE_MARES_ICONHD,
DC_FAMILY_MARES_ICONHD,
mares_iconhd_parser_set_data, /* set_data */
mares_iconhd_parser_get_datetime, /* datetime */
mares_iconhd_parser_get_field, /* fields */

View File

@ -59,7 +59,7 @@ static dc_status_t mares_nemo_device_foreach (device_t *abstract, dive_callback_
static dc_status_t mares_nemo_device_close (device_t *abstract);
static const device_backend_t mares_nemo_device_backend = {
DEVICE_TYPE_MARES_NEMO,
DC_FAMILY_MARES_NEMO,
mares_nemo_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -59,7 +59,7 @@ static dc_status_t mares_nemo_parser_samples_foreach (parser_t *abstract, sample
static dc_status_t mares_nemo_parser_destroy (parser_t *abstract);
static const parser_backend_t mares_nemo_parser_backend = {
PARSER_TYPE_MARES_NEMO,
DC_FAMILY_MARES_NEMO,
mares_nemo_parser_set_data, /* set_data */
mares_nemo_parser_get_datetime, /* datetime */
mares_nemo_parser_get_field, /* fields */

View File

@ -49,7 +49,7 @@ static dc_status_t mares_puck_device_foreach (device_t *abstract, dive_callback_
static dc_status_t mares_puck_device_close (device_t *abstract);
static const device_backend_t mares_puck_device_backend = {
DEVICE_TYPE_MARES_PUCK,
DC_FAMILY_MARES_PUCK,
mares_puck_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
mares_common_device_read, /* read */

View File

@ -54,7 +54,7 @@ static dc_status_t oceanic_atom2_device_write (device_t *abstract, unsigned int
static dc_status_t oceanic_atom2_device_close (device_t *abstract);
static const device_backend_t oceanic_atom2_device_backend = {
DEVICE_TYPE_OCEANIC_ATOM2,
DC_FAMILY_OCEANIC_ATOM2,
oceanic_common_device_set_fingerprint, /* set_fingerprint */
oceanic_atom2_device_version, /* version */
oceanic_atom2_device_read, /* read */

View File

@ -68,7 +68,7 @@ static dc_status_t oceanic_atom2_parser_samples_foreach (parser_t *abstract, sam
static dc_status_t oceanic_atom2_parser_destroy (parser_t *abstract);
static const parser_backend_t oceanic_atom2_parser_backend = {
PARSER_TYPE_OCEANIC_ATOM2,
DC_FAMILY_OCEANIC_ATOM2,
oceanic_atom2_parser_set_data, /* set_data */
oceanic_atom2_parser_get_datetime, /* datetime */
oceanic_atom2_parser_get_field, /* fields */

View File

@ -54,7 +54,7 @@ static dc_status_t oceanic_veo250_device_read (device_t *abstract, unsigned int
static dc_status_t oceanic_veo250_device_close (device_t *abstract);
static const device_backend_t oceanic_veo250_device_backend = {
DEVICE_TYPE_OCEANIC_VEO250,
DC_FAMILY_OCEANIC_VEO250,
oceanic_common_device_set_fingerprint, /* set_fingerprint */
oceanic_veo250_device_version, /* version */
oceanic_veo250_device_read, /* read */

View File

@ -47,7 +47,7 @@ static dc_status_t oceanic_veo250_parser_samples_foreach (parser_t *abstract, sa
static dc_status_t oceanic_veo250_parser_destroy (parser_t *abstract);
static const parser_backend_t oceanic_veo250_parser_backend = {
PARSER_TYPE_OCEANIC_VEO250,
DC_FAMILY_OCEANIC_VEO250,
oceanic_veo250_parser_set_data, /* set_data */
oceanic_veo250_parser_get_datetime, /* datetime */
oceanic_veo250_parser_get_field, /* fields */

View File

@ -54,7 +54,7 @@ static dc_status_t oceanic_vtpro_device_read (device_t *abstract, unsigned int a
static dc_status_t oceanic_vtpro_device_close (device_t *abstract);
static const device_backend_t oceanic_vtpro_device_backend = {
DEVICE_TYPE_OCEANIC_VTPRO,
DC_FAMILY_OCEANIC_VTPRO,
oceanic_common_device_set_fingerprint, /* set_fingerprint */
oceanic_vtpro_device_version, /* version */
oceanic_vtpro_device_read, /* read */

View File

@ -46,7 +46,7 @@ static dc_status_t oceanic_vtpro_parser_samples_foreach (parser_t *abstract, sam
static dc_status_t oceanic_vtpro_parser_destroy (parser_t *abstract);
static const parser_backend_t oceanic_vtpro_parser_backend = {
PARSER_TYPE_OCEANIC_VTPRO,
DC_FAMILY_OCEANIC_VTPRO,
oceanic_vtpro_parser_set_data, /* set_data */
oceanic_vtpro_parser_get_datetime, /* datetime */
oceanic_vtpro_parser_get_field, /* fields */

View File

@ -40,7 +40,7 @@ struct parser_t {
};
struct parser_backend_t {
parser_type_t type;
dc_family_t type;
dc_status_t (*set_data) (parser_t *parser, const unsigned char *data, unsigned int size);

View File

@ -33,11 +33,11 @@ parser_init (parser_t *parser, const parser_backend_t *backend)
}
parser_type_t
dc_family_t
parser_get_type (parser_t *parser)
{
if (parser == NULL)
return PARSER_TYPE_NULL;
return DC_FAMILY_NULL;
return parser->backend->type;
}

View File

@ -51,7 +51,7 @@ static dc_status_t reefnet_sensus_device_foreach (device_t *abstract, dive_callb
static dc_status_t reefnet_sensus_device_close (device_t *abstract);
static const device_backend_t reefnet_sensus_device_backend = {
DEVICE_TYPE_REEFNET_SENSUS,
DC_FAMILY_REEFNET_SENSUS,
reefnet_sensus_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -53,7 +53,7 @@ static dc_status_t reefnet_sensus_parser_samples_foreach (parser_t *abstract, sa
static dc_status_t reefnet_sensus_parser_destroy (parser_t *abstract);
static const parser_backend_t reefnet_sensus_parser_backend = {
PARSER_TYPE_REEFNET_SENSUS,
DC_FAMILY_REEFNET_SENSUS,
reefnet_sensus_parser_set_data, /* set_data */
reefnet_sensus_parser_get_datetime, /* datetime */
reefnet_sensus_parser_get_field, /* fields */

View File

@ -50,7 +50,7 @@ static dc_status_t reefnet_sensuspro_device_foreach (device_t *abstract, dive_ca
static dc_status_t reefnet_sensuspro_device_close (device_t *abstract);
static const device_backend_t reefnet_sensuspro_device_backend = {
DEVICE_TYPE_REEFNET_SENSUSPRO,
DC_FAMILY_REEFNET_SENSUSPRO,
reefnet_sensuspro_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -52,7 +52,7 @@ static dc_status_t reefnet_sensuspro_parser_samples_foreach (parser_t *abstract,
static dc_status_t reefnet_sensuspro_parser_destroy (parser_t *abstract);
static const parser_backend_t reefnet_sensuspro_parser_backend = {
PARSER_TYPE_REEFNET_SENSUSPRO,
DC_FAMILY_REEFNET_SENSUSPRO,
reefnet_sensuspro_parser_set_data, /* set_data */
reefnet_sensuspro_parser_get_datetime, /* datetime */
reefnet_sensuspro_parser_get_field, /* fields */

View File

@ -56,7 +56,7 @@ static dc_status_t reefnet_sensusultra_device_foreach (device_t *abstract, dive_
static dc_status_t reefnet_sensusultra_device_close (device_t *abstract);
static const device_backend_t reefnet_sensusultra_device_backend = {
DEVICE_TYPE_REEFNET_SENSUSULTRA,
DC_FAMILY_REEFNET_SENSUSULTRA,
reefnet_sensusultra_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -52,7 +52,7 @@ static dc_status_t reefnet_sensusultra_parser_samples_foreach (parser_t *abstrac
static dc_status_t reefnet_sensusultra_parser_destroy (parser_t *abstract);
static const parser_backend_t reefnet_sensusultra_parser_backend = {
PARSER_TYPE_REEFNET_SENSUSULTRA,
DC_FAMILY_REEFNET_SENSUSULTRA,
reefnet_sensusultra_parser_set_data, /* set_data */
reefnet_sensusultra_parser_get_datetime, /* datetime */
reefnet_sensusultra_parser_get_field, /* fields */

View File

@ -53,7 +53,7 @@ static dc_status_t suunto_d9_device_close (device_t *abstract);
static const suunto_common2_device_backend_t suunto_d9_device_backend = {
{
DEVICE_TYPE_SUUNTO_D9,
DC_FAMILY_SUUNTO_D9,
suunto_common2_device_set_fingerprint, /* set_fingerprint */
suunto_common2_device_version, /* version */
suunto_common2_device_read, /* read */

View File

@ -64,7 +64,7 @@ static dc_status_t suunto_d9_parser_samples_foreach (parser_t *abstract, sample_
static dc_status_t suunto_d9_parser_destroy (parser_t *abstract);
static const parser_backend_t suunto_d9_parser_backend = {
PARSER_TYPE_SUUNTO_D9,
DC_FAMILY_SUUNTO_D9,
suunto_d9_parser_set_data, /* set_data */
suunto_d9_parser_get_datetime, /* datetime */
suunto_d9_parser_get_field, /* fields */

View File

@ -46,7 +46,7 @@ static dc_status_t suunto_eon_device_foreach (device_t *abstract, dive_callback_
static dc_status_t suunto_eon_device_close (device_t *abstract);
static const device_backend_t suunto_eon_device_backend = {
DEVICE_TYPE_SUUNTO_EON,
DC_FAMILY_SUUNTO_EON,
suunto_common_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -46,7 +46,7 @@ static dc_status_t suunto_eon_parser_samples_foreach (parser_t *abstract, sample
static dc_status_t suunto_eon_parser_destroy (parser_t *abstract);
static const parser_backend_t suunto_eon_parser_backend = {
PARSER_TYPE_SUUNTO_EON,
DC_FAMILY_SUUNTO_EON,
suunto_eon_parser_set_data, /* set_data */
suunto_eon_parser_get_datetime, /* datetime */
suunto_eon_parser_get_field, /* fields */

View File

@ -48,7 +48,7 @@ static dc_status_t suunto_solution_device_foreach (device_t *abstract, dive_call
static dc_status_t suunto_solution_device_close (device_t *abstract);
static const device_backend_t suunto_solution_device_backend = {
DEVICE_TYPE_SUUNTO_SOLUTION,
DC_FAMILY_SUUNTO_SOLUTION,
NULL, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -43,7 +43,7 @@ static dc_status_t suunto_solution_parser_samples_foreach (parser_t *abstract, s
static dc_status_t suunto_solution_parser_destroy (parser_t *abstract);
static const parser_backend_t suunto_solution_parser_backend = {
PARSER_TYPE_SUUNTO_SOLUTION,
DC_FAMILY_SUUNTO_SOLUTION,
suunto_solution_parser_set_data, /* set_data */
NULL, /* datetime */
suunto_solution_parser_get_field, /* fields */

View File

@ -58,7 +58,7 @@ static dc_status_t suunto_vyper_device_foreach (device_t *abstract, dive_callbac
static dc_status_t suunto_vyper_device_close (device_t *abstract);
static const device_backend_t suunto_vyper_device_backend = {
DEVICE_TYPE_SUUNTO_VYPER,
DC_FAMILY_SUUNTO_VYPER,
suunto_common_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
suunto_vyper_device_read, /* read */

View File

@ -45,7 +45,7 @@ static dc_status_t suunto_vyper2_device_close (device_t *abstract);
static const suunto_common2_device_backend_t suunto_vyper2_device_backend = {
{
DEVICE_TYPE_SUUNTO_VYPER2,
DC_FAMILY_SUUNTO_VYPER2,
suunto_common2_device_set_fingerprint, /* set_fingerprint */
suunto_common2_device_version, /* version */
suunto_common2_device_read, /* read */

View File

@ -44,7 +44,7 @@ static dc_status_t suunto_vyper_parser_samples_foreach (parser_t *abstract, samp
static dc_status_t suunto_vyper_parser_destroy (parser_t *abstract);
static const parser_backend_t suunto_vyper_parser_backend = {
PARSER_TYPE_SUUNTO_VYPER,
DC_FAMILY_SUUNTO_VYPER,
suunto_vyper_parser_set_data, /* set_data */
suunto_vyper_parser_get_datetime, /* datetime */
suunto_vyper_parser_get_field, /* fields */

View File

@ -57,7 +57,7 @@ static dc_status_t uwatec_aladin_device_foreach (device_t *abstract, dive_callba
static dc_status_t uwatec_aladin_device_close (device_t *abstract);
static const device_backend_t uwatec_aladin_device_backend = {
DEVICE_TYPE_UWATEC_ALADIN,
DC_FAMILY_UWATEC_ALADIN,
uwatec_aladin_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -55,7 +55,7 @@ static dc_status_t uwatec_memomouse_device_foreach (device_t *abstract, dive_cal
static dc_status_t uwatec_memomouse_device_close (device_t *abstract);
static const device_backend_t uwatec_memomouse_device_backend = {
DEVICE_TYPE_UWATEC_MEMOMOUSE,
DC_FAMILY_UWATEC_MEMOMOUSE,
uwatec_memomouse_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
NULL, /* read */

View File

@ -42,7 +42,7 @@ static dc_status_t uwatec_memomouse_parser_samples_foreach (parser_t *abstract,
static dc_status_t uwatec_memomouse_parser_destroy (parser_t *abstract);
static const parser_backend_t uwatec_memomouse_parser_backend = {
PARSER_TYPE_UWATEC_MEMOMOUSE,
DC_FAMILY_UWATEC_MEMOMOUSE,
uwatec_memomouse_parser_set_data, /* set_data */
uwatec_memomouse_parser_get_datetime, /* datetime */
uwatec_memomouse_parser_get_field, /* fields */

View File

@ -50,7 +50,7 @@ static dc_status_t uwatec_smart_device_foreach (device_t *abstract, dive_callbac
static dc_status_t uwatec_smart_device_close (device_t *abstract);
static const device_backend_t uwatec_smart_device_backend = {
DEVICE_TYPE_UWATEC_SMART,
DC_FAMILY_UWATEC_SMART,
uwatec_smart_device_set_fingerprint, /* set_fingerprint */
uwatec_smart_device_version, /* version */
NULL, /* read */

View File

@ -56,7 +56,7 @@ static dc_status_t uwatec_smart_parser_samples_foreach (parser_t *abstract, samp
static dc_status_t uwatec_smart_parser_destroy (parser_t *abstract);
static const parser_backend_t uwatec_smart_parser_backend = {
PARSER_TYPE_UWATEC_SMART,
DC_FAMILY_UWATEC_SMART,
uwatec_smart_parser_set_data, /* set_data */
uwatec_smart_parser_get_datetime, /* datetime */
uwatec_smart_parser_get_field, /* fields */

View File

@ -57,7 +57,7 @@ static dc_status_t zeagle_n2ition3_device_foreach (device_t *abstract, dive_call
static dc_status_t zeagle_n2ition3_device_close (device_t *abstract);
static const device_backend_t zeagle_n2ition3_device_backend = {
DEVICE_TYPE_ZEAGLE_N2ITION3,
DC_FAMILY_ZEAGLE_N2ITION3,
zeagle_n2ition3_device_set_fingerprint, /* set_fingerprint */
NULL, /* version */
zeagle_n2ition3_device_read, /* read */