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: