From dea1fe358d1bc768b8767f37980d2435f628bc1c Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Sat, 10 Mar 2012 10:18:35 +0100 Subject: [PATCH] Add support for the Darwin Air tank pressure. --- src/mares_darwin_parser.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/mares_darwin_parser.c b/src/mares_darwin_parser.c index ba59af3..e36b04a 100644 --- a/src/mares_darwin_parser.c +++ b/src/mares_darwin_parser.c @@ -185,6 +185,8 @@ mares_darwin_parser_samples_foreach (parser_t *abstract, sample_callback_t callb unsigned int time = 0; + unsigned int pressure = array_uint16_be (abstract->data + 0x17); + unsigned int offset = parser->headersize; while (offset + parser->samplesize <= abstract->size) { parser_sample_value_t sample = {0}; @@ -199,6 +201,17 @@ mares_darwin_parser_samples_foreach (parser_t *abstract, sample_callback_t callb sample.depth = depth / 10.0; if (callback) callback (SAMPLE_TYPE_DEPTH, sample, userdata); + if (parser->samplesize == 3) { + unsigned int type = (time / 20 + 2) % 3; + if (type == 0) { + // Tank Pressure (bar) + pressure -= abstract->data[offset + 2]; + sample.pressure.tank = 0; + sample.pressure.value = pressure; + if (callback) callback (SAMPLE_TYPE_PRESSURE, sample, userdata); + } + } + offset += parser->samplesize; }