>From e4ef3931a664bc38477ecf4e2a9490ff7c0a1ddd Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Thu, 16 Oct 2014 15:06:59 +0200 Subject: [PATCH 3/5] Implement deco algorithm and parameter fields for Shearwater Signed-off-by: Dirk Hohndel --- src/shearwater_predator_parser.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/shearwater_predator_parser.c b/src/shearwater_predator_parser.c index 62d94bbacd37..0f0b0cde747f 100644 --- a/src/shearwater_predator_parser.c +++ b/src/shearwater_predator_parser.c @@ -190,6 +190,8 @@ shearwater_predator_parser_get_field (dc_parser_t *abstract, dc_field_type_t typ dc_gasmix_t *gasmix = (dc_gasmix_t *) value; dc_salinity_t *water = (dc_salinity_t *) value; unsigned int density = 0; + dc_deco_alg_t *deco_alg = (dc_deco_alg_t *) value; + unsigned int *gf = (unsigned int *) value; if (value) { switch (type) { @@ -221,6 +223,35 @@ shearwater_predator_parser_get_field (dc_parser_t *abstract, dc_field_type_t typ case DC_FIELD_ATMOSPHERIC: *((double *) value) = array_uint16_be (data + 47) / 1000.0; break; + case DC_FIELD_DECO_ALG: + switch(data[67]) { + case 0: + *deco_alg = DC_DECO_ALG_BZHGF; + break; + case 1: + *deco_alg = DC_DECO_ALG_VPM; + break; + case 2: + *deco_alg = DC_DECO_ALG_VPMGFS; + break; + default: + return DC_STATUS_DATAFORMAT; + } + break; + case DC_FIELD_DECO_GFHIGH: + if (data[67] == 0) + *gf = data[5]; + else if (data[67] == 2) + *gf = data[85]; + else + return DC_STATUS_UNSUPPORTED; + break; + case DC_FIELD_DECO_GFLOW: + if (data[67] == 0) + *gf = data[4]; + else + return DC_STATUS_UNSUPPORTED; + break; default: return DC_STATUS_UNSUPPORTED; } -- 1.8.0.rc0.18.gf84667d