From 5bb6257acbc994db478ecbacb532142edb7b996f Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Sun, 4 Jul 2021 11:25:51 +0200 Subject: [PATCH] Implement the salinity field The 4th bit of the settings byte contains the salinity setting (salt or fresh water). --- src/sporasub_sp2_parser.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/sporasub_sp2_parser.c b/src/sporasub_sp2_parser.c index 0479d59..e041495 100644 --- a/src/sporasub_sp2_parser.c +++ b/src/sporasub_sp2_parser.c @@ -112,9 +112,13 @@ sporasub_sp2_parser_get_field (dc_parser_t *abstract, dc_field_type_t type, unsi const unsigned char *data = abstract->data; unsigned int size = abstract->size; + dc_salinity_t *water = (dc_salinity_t *) value; + if (size < SZ_HEADER) return DC_STATUS_DATAFORMAT; + unsigned int settings = data[0x1A]; + if (value) { switch (type) { case DC_FIELD_DIVETIME: @@ -132,6 +136,10 @@ sporasub_sp2_parser_get_field (dc_parser_t *abstract, dc_field_type_t type, unsi case DC_FIELD_TEMPERATURE_MAXIMUM: *((double *) value) = array_uint16_le (data + 0x16) / 10.0; break; + case DC_FIELD_SALINITY: + water->type = settings & 0x08 ? DC_WATER_FRESH : DC_WATER_SALT; + water->density = 0.0; + break; default: return DC_STATUS_UNSUPPORTED; }