Fix the temperature and pressure for the Oceanic Atom 2.

This commit is contained in:
Jef Driesen 2010-06-23 13:33:16 +02:00
parent 8dd1647ede
commit a37bf20493

View File

@ -258,7 +258,10 @@ oceanic_atom2_parser_samples_foreach (parser_t *abstract, sample_callback_t call
} else { } else {
// Tank pressure (2 psi) and number (one based index) // Tank pressure (2 psi) and number (one based index)
tank = (data[offset + 1] & 0x03) - 1; tank = (data[offset + 1] & 0x03) - 1;
pressure = (((data[offset + 4] << 8) + data[offset + 5]) & 0x0FFF) * 2; if (parser->model == 0x4342)
pressure = (((data[offset + 3] << 8) + data[offset + 4]) & 0x0FFF) * 2;
else
pressure = (((data[offset + 4] << 8) + data[offset + 5]) & 0x0FFF) * 2;
} }
complete = 0; complete = 0;
@ -267,10 +270,15 @@ oceanic_atom2_parser_samples_foreach (parser_t *abstract, sample_callback_t call
if (parser->model == 0x4344) { if (parser->model == 0x4344) {
temperature = data[offset + 6]; temperature = data[offset + 6];
} else { } else {
if (data[offset + 0] & 0x80) unsigned int sign;
temperature += (data[offset + 7] & 0xFC) >> 2; if (parser->model == 0x4342)
sign = (data[offset + 0] & 0x80) >> 7;
else else
temperature -= (data[offset + 7] & 0xFC) >> 2; sign = (~data[offset + 0] & 0x80) >> 7;
if (sign)
temperature -= (data[offset + 7] & 0x0C) >> 2;
else
temperature += (data[offset + 7] & 0x0C) >> 2;
} }
sample.temperature = (temperature - 32.0) * (5.0 / 9.0); sample.temperature = (temperature - 32.0) * (5.0 / 9.0);
if (callback) callback (SAMPLE_TYPE_TEMPERATURE, sample, userdata); if (callback) callback (SAMPLE_TYPE_TEMPERATURE, sample, userdata);