From 8a0efe2bfb0bd32a6ea38a4c9a6373f3fb287f3a Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Sat, 20 Apr 2013 07:48:10 +0200 Subject: [PATCH] Fix the sample rate for the Genesis React Pro. This model doesn't support a 2 second sample rate. It appears the possible sample rate values have been shifted by one to map the value zero to a 15 second sample rate. To avoid any trouble with possible out of range values, the index is shifted in a circular way. --- src/oceanic_veo250_parser.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/oceanic_veo250_parser.c b/src/oceanic_veo250_parser.c index bddcadd..8792a31 100644 --- a/src/oceanic_veo250_parser.c +++ b/src/oceanic_veo250_parser.c @@ -29,6 +29,7 @@ #include "parser-private.h" #include "array.h" +#define REACTPRO 0x4247 #define VEO200 0x424B #define VEO250 0x424C @@ -211,6 +212,8 @@ oceanic_veo250_parser_get_field (dc_parser_t *abstract, dc_field_type_t type, un static dc_status_t oceanic_veo250_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t callback, void *userdata) { + oceanic_veo250_parser_t *parser = (oceanic_veo250_parser_t *) abstract; + if (! parser_is_oceanic_veo250 (abstract)) return DC_STATUS_INVALIDARGS; @@ -222,7 +225,12 @@ oceanic_veo250_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback unsigned int time = 0; unsigned int interval = 0; - switch (data[0x27] & 0x03) { + unsigned int interval_idx = data[0x27] & 0x03; + if (parser->model == REACTPRO) { + interval_idx += 1; + interval_idx %= 4; + } + switch (interval_idx) { case 0: interval = 2; break;