diff --git a/src/descriptor.c b/src/descriptor.c index 47fc028..7a65e71 100644 --- a/src/descriptor.c +++ b/src/descriptor.c @@ -288,6 +288,7 @@ static const dc_descriptor_t g_descriptors[] = { {"Heinrichs Weikamp", "OSTC cR", DC_FAMILY_HW_OSTC3, 0x07, dc_filter_hw}, {"Heinrichs Weikamp", "OSTC Sport", DC_FAMILY_HW_OSTC3, 0x12, dc_filter_hw}, {"Heinrichs Weikamp", "OSTC Sport", DC_FAMILY_HW_OSTC3, 0x13, dc_filter_hw}, + {"Heinrichs Weikamp", "OSTC 2 TR", DC_FAMILY_HW_OSTC3, 0x33, dc_filter_hw}, /* Cressi Edy */ {"Tusa", "IQ-700", DC_FAMILY_CRESSI_EDY, 0x05, NULL}, {"Cressi", "Edy", DC_FAMILY_CRESSI_EDY, 0x08, NULL}, diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c index acf1592..bf28be9 100644 --- a/src/hw_ostc_parser.c +++ b/src/hw_ostc_parser.c @@ -641,6 +641,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call switch (info[i].type) { case 0: // Temperature case 1: // Deco / NDL + case 6: // Tank pressure if (info[i].size != 2) { ERROR(abstract->context, "Unexpected sample size."); return DC_STATUS_DATAFORMAT; @@ -674,6 +675,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call unsigned int time = 0; unsigned int nsamples = 0; + unsigned int tank = parser->initial != UNDEFINED ? parser->initial : 0; unsigned int offset = header; if (version == 0x23 || version == 0x24) @@ -809,6 +811,7 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call idx--; /* Convert to a zero based index. */ sample.gasmix = idx; if (callback) callback (DC_SAMPLE_GASMIX, sample, userdata); + tank = idx; offset++; length--; } @@ -909,6 +912,12 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call sample.cns = data[offset] / 100.0; if (callback) callback (DC_SAMPLE_CNS, sample, userdata); break; + case 6: // Tank pressure + value = array_uint16_le (data + offset); + sample.pressure.tank = tank; + sample.pressure.value = value / 10.0; + if (callback) callback (DC_SAMPLE_PRESSURE, sample, userdata); + break; default: // Not yet used. break; }