diff --git a/examples/universal.c b/examples/universal.c index c4f2ba7..9f32c36 100644 --- a/examples/universal.c +++ b/examples/universal.c @@ -338,7 +338,7 @@ doparse (FILE *fp, device_data_t *devdata, const unsigned char data[], unsigned break; case DEVICE_TYPE_CRESSI_EDY: case DEVICE_TYPE_ZEAGLE_N2ITION3: - rc = cressi_edy_parser_create (&parser); + rc = cressi_edy_parser_create (&parser, devdata->devinfo.model); break; default: rc = PARSER_STATUS_ERROR; diff --git a/src/cressi_edy.h b/src/cressi_edy.h index 0795f9e..7c0d093 100644 --- a/src/cressi_edy.h +++ b/src/cressi_edy.h @@ -36,7 +36,7 @@ device_status_t cressi_edy_device_open (device_t **device, const char* name); parser_status_t -cressi_edy_parser_create (parser_t **parser); +cressi_edy_parser_create (parser_t **parser, unsigned int model); #ifdef __cplusplus } diff --git a/src/cressi_edy_parser.c b/src/cressi_edy_parser.c index dc19561..8c881df 100644 --- a/src/cressi_edy_parser.c +++ b/src/cressi_edy_parser.c @@ -30,6 +30,7 @@ typedef struct cressi_edy_parser_t cressi_edy_parser_t; struct cressi_edy_parser_t { parser_t base; + unsigned int model; }; static parser_status_t cressi_edy_parser_set_data (parser_t *abstract, const unsigned char *data, unsigned int size); @@ -57,7 +58,7 @@ parser_is_cressi_edy (parser_t *abstract) parser_status_t -cressi_edy_parser_create (parser_t **out) +cressi_edy_parser_create (parser_t **out, unsigned int model) { if (out == NULL) return PARSER_STATUS_ERROR; @@ -72,6 +73,9 @@ cressi_edy_parser_create (parser_t **out) // Initialize the base class. parser_init (&parser->base, &cressi_edy_parser_backend); + // Set the default values. + parser->model = model; + *out = (parser_t*) parser; return PARSER_STATUS_SUCCESS; @@ -125,11 +129,17 @@ cressi_edy_parser_get_datetime (parser_t *abstract, dc_datetime_t *datetime) static parser_status_t cressi_edy_parser_samples_foreach (parser_t *abstract, sample_callback_t callback, void *userdata) { + cressi_edy_parser_t *parser = (cressi_edy_parser_t *) abstract; + const unsigned char *data = abstract->data; unsigned int size = abstract->size; unsigned int time = 0; - unsigned int interval = 1; + unsigned int interval = 0; + if (parser->model == 0x08) + interval = 1; + else + interval = 30; unsigned int offset = 32; while (offset + 2 <= size) {