>From b9dbaed6b1130398124d64f400656677a5914deb Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 30 Sep 2014 12:35:04 -0700 Subject: [PATCH 4/5] Aeris A300CS: add support for NDL / deco data Encoded in every sample. The depth is in multiples of 10 feet which gives somewhat odd metric stop depth - but rounding to full meters would take care of that. Signed-off-by: Dirk Hohndel --- src/oceanic_atom2_parser.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/oceanic_atom2_parser.c b/src/oceanic_atom2_parser.c index b081b3be812a..3a577d2e05d8 100644 --- a/src/oceanic_atom2_parser.c +++ b/src/oceanic_atom2_parser.c @@ -631,6 +631,21 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ sample.depth = depth / 16.0 * FEET; if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata); + // NDL / Deco + // bits 6..4 of byte 15 encode deco state & depth + // bytes 6 & 7 encode minutes of NDL / deco + if (parser->model == A300CS) { + if ((data[offset + 15] & 0x70) != 0) { + sample.deco.type = DC_DECO_DECOSTOP; + sample.deco.depth = ((data[offset + 15] & 0x70) >> 4) * 10 * FEET; + } else { + sample.deco.type = DC_DECO_NDL; + sample.deco.depth = 0.0; + } + sample.deco.time = (data[offset + 6] + (data[offset + 7] << 8)) & 0x03FF; + if (callback) callback (DC_SAMPLE_DECO, sample, userdata); + } + complete = 1; } -- 1.8.0.rc0.18.gf84667d