From ef4bd94717659c98a38c656a660ec1722ede512a Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Sun, 5 Jan 2020 21:15:44 +0100 Subject: [PATCH] Add support for the Oceanic Veo 4.0 --- src/descriptor.c | 1 + src/oceanic_atom2.c | 1 + src/oceanic_atom2_parser.c | 14 +++++++++----- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/descriptor.c b/src/descriptor.c index 1002b36..64323b2 100644 --- a/src/descriptor.c +++ b/src/descriptor.c @@ -242,6 +242,7 @@ static const dc_descriptor_t g_descriptors[] = { {"Aqualung", "i770R", DC_FAMILY_OCEANIC_ATOM2, 0x4651, DC_TRANSPORT_SERIAL, NULL}, {"Aqualung", "i550C", DC_FAMILY_OCEANIC_ATOM2, 0x4652, DC_TRANSPORT_SERIAL, NULL}, {"Oceanic", "Geo 4.0", DC_FAMILY_OCEANIC_ATOM2, 0x4653, DC_TRANSPORT_SERIAL, NULL}, + {"Oceanic", "Veo 4.0", DC_FAMILY_OCEANIC_ATOM2, 0x4654, DC_TRANSPORT_SERIAL, NULL}, {"Oceanic", "Pro Plus 4", DC_FAMILY_OCEANIC_ATOM2, 0x4656, DC_TRANSPORT_SERIAL, NULL}, /* Mares Nemo */ {"Mares", "Nemo", DC_FAMILY_MARES_NEMO, 0, DC_TRANSPORT_SERIAL, NULL}, diff --git a/src/oceanic_atom2.c b/src/oceanic_atom2.c index 553d2d2..195e4ca 100644 --- a/src/oceanic_atom2.c +++ b/src/oceanic_atom2.c @@ -128,6 +128,7 @@ static const oceanic_common_version_t oceanic_atom2b_version[] = { {"AQUAI100 \0\0 512K"}, {"AQUA300C \0\0 512K"}, {"OCEGEO40 \0\0 512K"}, + {"VEOSMART \0\0 512K"}, }; static const oceanic_common_version_t oceanic_atom2c_version[] = { diff --git a/src/oceanic_atom2_parser.c b/src/oceanic_atom2_parser.c index ed38802..1f4f852 100644 --- a/src/oceanic_atom2_parser.c +++ b/src/oceanic_atom2_parser.c @@ -93,6 +93,7 @@ #define I770R 0x4651 #define I550C 0x4652 #define GEO40 0x4653 +#define VEO40 0x4654 #define PROPLUS4 0x4656 #define NORMAL 0 @@ -166,7 +167,8 @@ oceanic_atom2_parser_create (dc_parser_t **out, dc_context_t *context, unsigned model == INSIGHT2 || model == ZEN || model == I300 || model == I550 || model == I200 || model == I200C || - model == I300C || model == GEO40) { + model == I300C || model == GEO40 || + model == VEO40) { parser->headersize -= PAGESIZE; } else if (model == VT4 || model == VT41) { parser->headersize += PAGESIZE; @@ -290,6 +292,7 @@ oceanic_atom2_parser_get_datetime (dc_parser_t *abstract, dc_datetime_t *datetim case I100: case I300C: case GEO40: + case VEO40: case PROPLUS4: datetime->year = ((p[3] & 0xE0) >> 1) + (p[4] & 0x0F) + 2000; datetime->month = (p[4] & 0xF0) >> 4; @@ -727,7 +730,8 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ parser->model == MANTA || parser->model == I300 || parser->model == I200 || parser->model == I100 || parser->model == I300C || parser->model == TALIS || - parser->model == I200C || parser->model == GEO40) { + parser->model == I200C || parser->model == GEO40 || + parser->model == VEO40) { have_pressure = 0; } @@ -886,7 +890,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ parser->model == I450T || parser->model == I300 || parser->model == I200 || parser->model == I100 || parser->model == I300C || parser->model == I200C || - parser->model == GEO40) { + parser->model == GEO40 || parser->model == VEO40) { temperature = data[offset + 3]; } else if (parser->model == OCS || parser->model == TX1) { temperature = data[offset + 1]; @@ -960,7 +964,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ parser->model == I450T || parser->model == I300 || parser->model == I200 || parser->model == I100 || parser->model == I300C || parser->model == I200C || - parser->model == GEO40) + parser->model == GEO40 || parser->model == VEO40) depth = (data[offset + 4] + (data[offset + 5] << 8)) & 0x0FFF; else if (parser->model == ATOM1) depth = data[offset + 3] * 16; @@ -1014,7 +1018,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ parser->model == OC1C || parser->model == OCI || parser->model == I100 || parser->model == I300C || parser->model == I450T || parser->model == I200C || - parser->model == GEO40) { + parser->model == GEO40 || parser->model == VEO40) { decostop = (data[offset + 7] & 0xF0) >> 4; decotime = array_uint16_le(data + offset + 6) & 0x0FFF; have_deco = 1;