Port the changes from r179 to the Uwatec Smart parser.

This commit is contained in:
Jef Driesen 2008-11-10 20:30:27 +00:00
parent 7d9ffdc3f8
commit 019b807e0f

View File

@ -316,7 +316,7 @@ uwatec_smart_parser_samples_foreach (parser_t *abstract, sample_callback_t callb
offset += table[id].extrabytes + 1;
// Fix the sign bit.
value = uwatec_smart_fixsignbit (value, nbits);
signed int svalue = uwatec_smart_fixsignbit (value, nbits);
if (complete && table[id].type != TIME) {
complete = 0;
@ -327,8 +327,8 @@ uwatec_smart_parser_samples_foreach (parser_t *abstract, sample_callback_t callb
// Parse the value.
switch (table[id].type) {
case DELTA_TANK_PRESSURE_DEPTH:
pressure += ((signed char) ((value >> NBITS) & 0xFF)) / 4.0;
depth += ((signed char) (value & 0xFF)) / 50.0;
pressure += ((signed char) ((svalue >> NBITS) & 0xFF)) / 4.0;
depth += ((signed char) (svalue & 0xFF)) / 50.0;
sample.pressure.tank = tank;
sample.pressure.value = pressure;
if (callback) callback (SAMPLE_TYPE_PRESSURE, sample, userdata);
@ -338,23 +338,23 @@ uwatec_smart_parser_samples_foreach (parser_t *abstract, sample_callback_t callb
time += 4;
break;
case DELTA_RBT:
rbt += (signed int) value;
rbt += svalue;
sample.rbt = rbt;
if (callback) callback (SAMPLE_TYPE_RBT, sample, userdata);
break;
case DELTA_TEMPERATURE:
temperature += ((signed int)value) / 2.5;
temperature += svalue / 2.5;
sample.temperature = temperature;
if (callback) callback (SAMPLE_TYPE_TEMPERATURE, sample, userdata);
break;
case DELTA_TANK_PRESSURE:
pressure += ((signed int)value) / 4.0;
pressure += svalue / 4.0;
sample.pressure.tank = tank;
sample.pressure.value = pressure;
if (callback) callback (SAMPLE_TYPE_PRESSURE, sample, userdata);
break;
case DELTA_DEPTH:
depth += ((signed int)value) / 50.0;
depth += svalue / 50.0;
sample.depth = depth - depth_calibration;
if (callback) callback (SAMPLE_TYPE_DEPTH, sample, userdata);
complete = 1;