diff --git a/examples/universal.c b/examples/universal.c index c90fe5b..9d07088 100644 --- a/examples/universal.c +++ b/examples/universal.c @@ -363,17 +363,24 @@ doparse (FILE *fp, dc_device_t *device, const unsigned char data[], unsigned int // Parse the temperature. message ("Parsing the temperature.\n"); - double temperature = 0.0; - rc = dc_parser_get_field (parser, DC_FIELD_TEMPERATURE, 0, &temperature); - if (rc != DC_STATUS_SUCCESS && rc != DC_STATUS_UNSUPPORTED) { - WARNING ("Error parsing the temperature."); - dc_parser_destroy (parser); - return rc; - } + for (unsigned int i = 0; i < 3; ++i) { + dc_field_type_t fields[] = {DC_FIELD_TEMPERATURE_SURFACE, + DC_FIELD_TEMPERATURE_MINIMUM, + DC_FIELD_TEMPERATURE_MAXIMUM}; + const char *names[] = {"surface", "minimum", "maximum"}; - if (rc != DC_STATUS_UNSUPPORTED) { - fprintf (fp, "%.1f\n", - temperature); + double temperature = 0.0; + rc = dc_parser_get_field (parser, fields[i], 0, &temperature); + if (rc != DC_STATUS_SUCCESS && rc != DC_STATUS_UNSUPPORTED) { + WARNING ("Error parsing the temperature."); + dc_parser_destroy (parser); + return rc; + } + + if (rc != DC_STATUS_UNSUPPORTED) { + fprintf (fp, "%.1f\n", + names[i], temperature); + } } // Parse the maxdepth. diff --git a/include/libdivecomputer/parser.h b/include/libdivecomputer/parser.h index a1919a9..526173a 100644 --- a/include/libdivecomputer/parser.h +++ b/include/libdivecomputer/parser.h @@ -54,7 +54,9 @@ typedef enum dc_field_type_t { DC_FIELD_GASMIX, DC_FIELD_SALINITY, DC_FIELD_ATMOSPHERIC, - DC_FIELD_TEMPERATURE + DC_FIELD_TEMPERATURE_SURFACE, + DC_FIELD_TEMPERATURE_MINIMUM, + DC_FIELD_TEMPERATURE_MAXIMUM } dc_field_type_t; typedef enum parser_sample_event_t { diff --git a/src/cressi_leonardo_parser.c b/src/cressi_leonardo_parser.c index f79723f..b01a37a 100644 --- a/src/cressi_leonardo_parser.c +++ b/src/cressi_leonardo_parser.c @@ -139,7 +139,7 @@ cressi_leonardo_parser_get_field (dc_parser_t *abstract, dc_field_type_t type, u gasmix->oxygen = data[0x19] / 100.0; gasmix->nitrogen = 1.0 - gasmix->oxygen - gasmix->helium; break; - case DC_FIELD_TEMPERATURE: + case DC_FIELD_TEMPERATURE_MINIMUM: *((double *) value) = data[0x22]; break; default: