From d6806ab494459b6ffc6897bddbf2622783743bec Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Mon, 8 May 2017 19:24:32 +0200 Subject: [PATCH] Report the ppO2 in external O2 sensor mode only The O2 sensor millivolt values are only valid if external O2 sensor monitoring is enabled. Note that the interpretation of the PPO2 status bit appears to be reversed (0=external and 1=internal). Reviewed-by: Anton Lundin --- src/shearwater_predator_parser.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/shearwater_predator_parser.c b/src/shearwater_predator_parser.c index 3e5fcbf..e922220 100644 --- a/src/shearwater_predator_parser.c +++ b/src/shearwater_predator_parser.c @@ -448,14 +448,15 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal sample.ppo2 = data[offset + 6] / 100.0; if (callback) callback (DC_SAMPLE_PPO2, sample, userdata); #else - sample.ppo2 = data[offset + 12] * parser->calibration[0]; - if (callback && (data[86] & 0x01)) callback (DC_SAMPLE_PPO2, sample, userdata); + if ((status & PPO2_EXTERNAL) == 0) { + sample.ppo2 = data[offset + 12] * parser->calibration[0]; + if (callback && (data[86] & 0x01)) callback (DC_SAMPLE_PPO2, sample, userdata); - sample.ppo2 = data[offset + 14] * parser->calibration[1]; - if (callback && (data[86] & 0x02)) callback (DC_SAMPLE_PPO2, sample, userdata); + sample.ppo2 = data[offset + 14] * parser->calibration[1]; + if (callback && (data[86] & 0x02)) callback (DC_SAMPLE_PPO2, sample, userdata); - sample.ppo2 = data[offset + 15] * parser->calibration[2]; - if (callback && (data[86] & 0x04)) callback (DC_SAMPLE_PPO2, sample, userdata); + sample.ppo2 = data[offset + 15] * parser->calibration[2]; + if (callback && (data[86] & 0x04)) callback (DC_SAMPLE_PPO2, sample, userdata); } #endif