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