shearwater: Fallback to average/voted ppo2

If we can't find any calibration values for the individual sensors,
fallback to emitting the average/voted ppo2 instead, so users always get
a ppo2 value.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Anton Lundin 2018-06-20 20:04:55 +02:00 committed by Linus Torvalds
parent e0761561e9
commit 902dbf4d6d

View File

@ -669,19 +669,19 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal
if ((status & OC) == 0) { if ((status & OC) == 0) {
// PPO2 // PPO2
if ((status & PPO2_EXTERNAL) == 0) { if ((status & PPO2_EXTERNAL) == 0) {
#ifdef SENSOR_AVERAGE if (!parser->calibrated) {
sample.ppo2 = data[offset + 6] / 100.0; sample.ppo2 = data[offset + 6] / 100.0;
if (callback) callback (DC_SAMPLE_PPO2, sample, userdata); if (callback) callback (DC_SAMPLE_PPO2, sample, userdata);
#else } else {
sample.ppo2 = data[offset + 12] * parser->calibration[0]; sample.ppo2 = data[offset + 12] * parser->calibration[0];
if (callback && (parser->calibrated & 0x01)) callback (DC_SAMPLE_PPO2, sample, userdata); if (callback && (parser->calibrated & 0x01)) callback (DC_SAMPLE_PPO2, sample, userdata);
sample.ppo2 = data[offset + 14] * parser->calibration[1]; sample.ppo2 = data[offset + 14] * parser->calibration[1];
if (callback && (parser->calibrated & 0x02)) callback (DC_SAMPLE_PPO2, sample, userdata); if (callback && (parser->calibrated & 0x02)) callback (DC_SAMPLE_PPO2, sample, userdata);
sample.ppo2 = data[offset + 15] * parser->calibration[2]; sample.ppo2 = data[offset + 15] * parser->calibration[2];
if (callback && (parser->calibrated & 0x04)) callback (DC_SAMPLE_PPO2, sample, userdata); if (callback && (parser->calibrated & 0x04)) callback (DC_SAMPLE_PPO2, sample, userdata);
#endif }
} }
// Setpoint // Setpoint