Add a TTS field to the deco sample
Some dive computers report the time of the next decompression stop, while others report the Time To Surface (TTS). Some models can even report both. Add a TTS field to the deco sample to support both values.
This commit is contained in:
parent
b1ff2c6a8e
commit
4b383a778e
@ -171,6 +171,10 @@ sample_cb (dc_sample_type_t type, dc_sample_value_t value, void *userdata)
|
|||||||
value.deco.time,
|
value.deco.time,
|
||||||
convert_depth(value.deco.depth, sampledata->units),
|
convert_depth(value.deco.depth, sampledata->units),
|
||||||
decostop[value.deco.type]);
|
decostop[value.deco.type]);
|
||||||
|
if (value.deco.tts) {
|
||||||
|
fprintf (sampledata->ostream, " <tts>%u</tts>\n",
|
||||||
|
value.deco.tts);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case DC_SAMPLE_GASMIX:
|
case DC_SAMPLE_GASMIX:
|
||||||
fprintf (sampledata->ostream, " <gasmix>%u</gasmix>\n", value.gasmix);
|
fprintf (sampledata->ostream, " <gasmix>%u</gasmix>\n", value.gasmix);
|
||||||
|
|||||||
@ -257,6 +257,7 @@ typedef union dc_sample_value_t {
|
|||||||
unsigned int type;
|
unsigned int type;
|
||||||
unsigned int time;
|
unsigned int time;
|
||||||
double depth;
|
double depth;
|
||||||
|
unsigned int tts;
|
||||||
} deco;
|
} deco;
|
||||||
unsigned int gasmix; /* Gas mix index */
|
unsigned int gasmix; /* Gas mix index */
|
||||||
} dc_sample_value_t;
|
} dc_sample_value_t;
|
||||||
|
|||||||
@ -344,6 +344,7 @@ atomics_cobalt_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback
|
|||||||
sample.deco.type = DC_DECO_NDL;
|
sample.deco.type = DC_DECO_NDL;
|
||||||
sample.deco.time = ndl;
|
sample.deco.time = ndl;
|
||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
offset += SZ_SEGMENT;
|
offset += SZ_SEGMENT;
|
||||||
|
|||||||
@ -615,6 +615,7 @@ cochran_commander_parser_samples_foreach_tm (dc_parser_t *abstract, dc_sample_ca
|
|||||||
sample.deco.type = DC_DECO_DECOSTOP;
|
sample.deco.type = DC_DECO_DECOSTOP;
|
||||||
sample.deco.time = 60; // We don't know the duration
|
sample.deco.time = 60; // We don't know the duration
|
||||||
sample.deco.depth = deco_ceiling * FEET;
|
sample.deco.depth = deco_ceiling * FEET;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
||||||
break;
|
break;
|
||||||
case 0xAD: // Increment ceiling (shallower)
|
case 0xAD: // Increment ceiling (shallower)
|
||||||
@ -623,6 +624,7 @@ cochran_commander_parser_samples_foreach_tm (dc_parser_t *abstract, dc_sample_ca
|
|||||||
sample.deco.type = DC_DECO_DECOSTOP;
|
sample.deco.type = DC_DECO_DECOSTOP;
|
||||||
sample.deco.depth = deco_ceiling * FEET;
|
sample.deco.depth = deco_ceiling * FEET;
|
||||||
sample.deco.time = 60; // We don't know the duration
|
sample.deco.time = 60; // We don't know the duration
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -774,6 +776,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c
|
|||||||
sample.deco.type = DC_DECO_DECOSTOP;
|
sample.deco.type = DC_DECO_DECOSTOP;
|
||||||
sample.deco.time = (array_uint16_le(s + 3) + 1) * 60;
|
sample.deco.time = (array_uint16_le(s + 3) + 1) * 60;
|
||||||
sample.deco.depth = deco_ceiling * FEET;
|
sample.deco.depth = deco_ceiling * FEET;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
||||||
break;
|
break;
|
||||||
case 0xAD: // Increment ceiling (shallower)
|
case 0xAD: // Increment ceiling (shallower)
|
||||||
@ -782,6 +785,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c
|
|||||||
sample.deco.type = DC_DECO_DECOSTOP;
|
sample.deco.type = DC_DECO_DECOSTOP;
|
||||||
sample.deco.depth = deco_ceiling * FEET;
|
sample.deco.depth = deco_ceiling * FEET;
|
||||||
sample.deco.time = (array_uint16_le(s + 3) + 1) * 60;
|
sample.deco.time = (array_uint16_le(s + 3) + 1) * 60;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
||||||
break;
|
break;
|
||||||
case 0xC0: // Switched to FO2 21% mode (surface)
|
case 0xC0: // Switched to FO2 21% mode (surface)
|
||||||
@ -855,6 +859,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c
|
|||||||
sample.deco.type = DC_DECO_NDL;
|
sample.deco.type = DC_DECO_NDL;
|
||||||
sample.deco.time = deco_time * 60;
|
sample.deco.time = deco_time * 60;
|
||||||
sample.deco.depth = 0;
|
sample.deco.depth = 0;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -865,6 +870,7 @@ cochran_commander_parser_samples_foreach_emc (dc_parser_t *abstract, dc_sample_c
|
|||||||
sample.deco.type = DC_DECO_DECOSTOP;
|
sample.deco.type = DC_DECO_DECOSTOP;
|
||||||
sample.deco.depth = deco_ceiling * FEET;
|
sample.deco.depth = deco_ceiling * FEET;
|
||||||
sample.deco.time = deco_time * 60;
|
sample.deco.time = deco_time * 60;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -978,6 +978,7 @@ divesoft_freedom_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba
|
|||||||
sample.deco.time = ndl * 60;
|
sample.deco.time = ndl * 60;
|
||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
}
|
}
|
||||||
|
sample.deco.tts = tts * 60;
|
||||||
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback(DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
// Setpoint
|
// Setpoint
|
||||||
|
|||||||
@ -566,11 +566,13 @@ divesystem_idive_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba
|
|||||||
if (decostop) {
|
if (decostop) {
|
||||||
sample.deco.type = DC_DECO_DECOSTOP;
|
sample.deco.type = DC_DECO_DECOSTOP;
|
||||||
sample.deco.depth = decostop / 10.0;
|
sample.deco.depth = decostop / 10.0;
|
||||||
sample.deco.time = apos4 ? decotime : tts;
|
sample.deco.time = decotime;
|
||||||
|
sample.deco.tts = tts;
|
||||||
} else {
|
} else {
|
||||||
sample.deco.type = DC_DECO_NDL;
|
sample.deco.type = DC_DECO_NDL;
|
||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
sample.deco.time = tts;
|
sample.deco.time = tts;
|
||||||
|
sample.deco.tts = 0;
|
||||||
}
|
}
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
|
|||||||
@ -1053,6 +1053,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call
|
|||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
}
|
}
|
||||||
sample.deco.time = data[offset + 1] * 60;
|
sample.deco.time = data[offset + 1] * 60;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
break;
|
break;
|
||||||
case PPO2:
|
case PPO2:
|
||||||
|
|||||||
@ -593,6 +593,7 @@ liquivision_lynx_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba
|
|||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
}
|
}
|
||||||
sample.deco.time = 0;
|
sample.deco.time = 0;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
have_deco = 0;
|
have_deco = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -282,6 +282,7 @@ mares_darwin_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t
|
|||||||
}
|
}
|
||||||
sample.deco.time = 0;
|
sample.deco.time = 0;
|
||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
if (parser->samplesize == 3) {
|
if (parser->samplesize == 3) {
|
||||||
|
|||||||
@ -1159,6 +1159,7 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t
|
|||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
}
|
}
|
||||||
sample.deco.time = decotime * 60;
|
sample.deco.time = decotime * 60;
|
||||||
|
sample.deco.tts = tts;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
// Alarms
|
// Alarms
|
||||||
|
|||||||
@ -422,6 +422,7 @@ mares_nemo_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t c
|
|||||||
}
|
}
|
||||||
sample.deco.time = 0;
|
sample.deco.time = 0;
|
||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
// Pressure (1 bar).
|
// Pressure (1 bar).
|
||||||
|
|||||||
@ -964,6 +964,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
|
|||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
}
|
}
|
||||||
sample.deco.time = decotime * 60;
|
sample.deco.time = decotime * 60;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -277,6 +277,7 @@ oceanic_veo250_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback
|
|||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
}
|
}
|
||||||
sample.deco.time = decotime * 60;
|
sample.deco.time = decotime * 60;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -372,6 +372,7 @@ oceanic_vtpro_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_
|
|||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
}
|
}
|
||||||
sample.deco.time = decotime * 60;
|
sample.deco.time = decotime * 60;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -298,6 +298,7 @@ oceans_s1_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca
|
|||||||
}
|
}
|
||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
sample.deco.time = 0;
|
sample.deco.time = 0;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -377,6 +377,7 @@ seac_screen_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t
|
|||||||
sample.deco.time = ndl_tts;
|
sample.deco.time = ndl_tts;
|
||||||
sample.deco.depth = 0;
|
sample.deco.depth = 0;
|
||||||
}
|
}
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
// CNS
|
// CNS
|
||||||
|
|||||||
@ -995,6 +995,7 @@ shearwater_predator_parser_samples_foreach (dc_parser_t *abstract, dc_sample_cal
|
|||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
}
|
}
|
||||||
sample.deco.time = data[offset + pnf + 9] * 60;
|
sample.deco.time = data[offset + pnf + 9] * 60;
|
||||||
|
sample.deco.tts = array_uint16_be (data + offset + pnf + 4) * 60;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
// for logversion 7 and newer (introduced for Perdix AI)
|
// for logversion 7 and newer (introduced for Perdix AI)
|
||||||
|
|||||||
@ -811,6 +811,7 @@ suunto_d9_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t ca
|
|||||||
}
|
}
|
||||||
sample.deco.time = 0;
|
sample.deco.time = 0;
|
||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
time += interval_sample;
|
time += interval_sample;
|
||||||
|
|||||||
@ -510,6 +510,7 @@ static void sample_ndl(struct sample_data *info, short ndl)
|
|||||||
|
|
||||||
sample.deco.type = DC_DECO_NDL;
|
sample.deco.type = DC_DECO_NDL;
|
||||||
sample.deco.time = ndl;
|
sample.deco.time = ndl;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (info->callback) info->callback(DC_SAMPLE_DECO, sample, info->userdata);
|
if (info->callback) info->callback(DC_SAMPLE_DECO, sample, info->userdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -996,8 +997,9 @@ static int traverse_samples(unsigned short type, const struct type_desc *desc, c
|
|||||||
dc_sample_value_t sample = {0};
|
dc_sample_value_t sample = {0};
|
||||||
|
|
||||||
sample.deco.type = DC_DECO_DECOSTOP;
|
sample.deco.type = DC_DECO_DECOSTOP;
|
||||||
sample.deco.time = info->tts;
|
sample.deco.time = 0;
|
||||||
sample.deco.depth = info->ceiling;
|
sample.deco.depth = info->ceiling;
|
||||||
|
sample.deco.tts = info->tts;
|
||||||
if (info->callback) info->callback(DC_SAMPLE_DECO, sample, info->userdata);
|
if (info->callback) info->callback(DC_SAMPLE_DECO, sample, info->userdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -272,6 +272,7 @@ uwatec_memomouse_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callba
|
|||||||
}
|
}
|
||||||
sample.deco.time = 0;
|
sample.deco.time = 0;
|
||||||
sample.deco.depth = 0.0;
|
sample.deco.depth = 0.0;
|
||||||
|
sample.deco.tts = 0;
|
||||||
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
if (callback) callback (DC_SAMPLE_DECO, sample, userdata);
|
||||||
|
|
||||||
// Warnings
|
// Warnings
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user