From 7d48587ed8c08f8e72982c771ce02465bf3cf89a Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Mon, 22 Apr 2019 22:16:41 +0200 Subject: [PATCH 1/3] Add support for the Scubapro Aladin H Matrix The Aladin H Matrix appears to be identical to the Aladin Sport Matrix. --- src/descriptor.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/descriptor.c b/src/descriptor.c index eb5bce8..a12d42a 100644 --- a/src/descriptor.c +++ b/src/descriptor.c @@ -128,6 +128,7 @@ static const dc_descriptor_t g_descriptors[] = { {"Uwatec", "Aladin Sport", DC_FAMILY_UWATEC_SMART, 0x15, DC_TRANSPORT_IRDA, dc_filter_uwatec}, {"Subgear", "XP-3G", DC_FAMILY_UWATEC_SMART, 0x15, DC_TRANSPORT_IRDA, dc_filter_uwatec}, {"Scubapro", "Aladin Sport Matrix", DC_FAMILY_UWATEC_SMART, 0x17, DC_TRANSPORT_BLE, dc_filter_uwatec}, + {"Scubapro", "Aladin H Matrix", DC_FAMILY_UWATEC_SMART, 0x17, DC_TRANSPORT_BLE, dc_filter_uwatec}, {"Uwatec", "Smart Tec", DC_FAMILY_UWATEC_SMART, 0x18, DC_TRANSPORT_IRDA, dc_filter_uwatec}, {"Uwatec", "Galileo Trimix", DC_FAMILY_UWATEC_SMART, 0x19, DC_TRANSPORT_IRDA, dc_filter_uwatec}, {"Uwatec", "Smart Z", DC_FAMILY_UWATEC_SMART, 0x1C, DC_TRANSPORT_IRDA, dc_filter_uwatec}, From 74957542bb58cf3fd064103a8e883cef33fab546 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Mon, 22 Apr 2019 22:45:18 +0200 Subject: [PATCH 2/3] Add support for the Scubapro G2 HUD The G2 HUD is compatible with the G2, except for the new USB PID. --- src/descriptor.c | 2 ++ src/uwatec_smart_parser.c | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/descriptor.c b/src/descriptor.c index a12d42a..1eb45cd 100644 --- a/src/descriptor.c +++ b/src/descriptor.c @@ -140,6 +140,7 @@ static const dc_descriptor_t g_descriptors[] = { {"Scubapro", "Mantis 2", DC_FAMILY_UWATEC_SMART, 0x26, DC_TRANSPORT_SERIAL, NULL}, {"Scubapro", "G2", DC_FAMILY_UWATEC_SMART, 0x32, DC_TRANSPORT_USBHID | DC_TRANSPORT_BLE, dc_filter_uwatec}, {"Scubapro", "G2 Console", DC_FAMILY_UWATEC_SMART, 0x32, DC_TRANSPORT_USBHID | DC_TRANSPORT_BLE, dc_filter_uwatec}, + {"Scubapro", "G2 HUD", DC_FAMILY_UWATEC_SMART, 0x42, DC_TRANSPORT_USBHID | DC_TRANSPORT_BLE, dc_filter_uwatec}, /* Reefnet */ {"Reefnet", "Sensus", DC_FAMILY_REEFNET_SENSUS, 1, DC_TRANSPORT_SERIAL, NULL}, {"Reefnet", "Sensus Pro", DC_FAMILY_REEFNET_SENSUSPRO, 2, DC_TRANSPORT_SERIAL, NULL}, @@ -420,6 +421,7 @@ static int dc_filter_uwatec (dc_transport_t transport, const void *userdata) static const dc_usb_desc_t usbhid[] = { {0x2e6c, 0x3201}, // G2 {0x2e6c, 0x3211}, // G2 Console + {0x2e6c, 0x4201}, // G2 HUD {0xc251, 0x2006}, // Aladin Square }; static const char *bluetooth[] = { diff --git a/src/uwatec_smart_parser.c b/src/uwatec_smart_parser.c index fb41676..44b1e45 100644 --- a/src/uwatec_smart_parser.c +++ b/src/uwatec_smart_parser.c @@ -50,6 +50,7 @@ #define CHROMIS 0x24 #define MANTIS2 0x26 #define G2 0x32 +#define G2HUD 0x42 #define UNSUPPORTED 0xFFFFFFFF @@ -529,7 +530,7 @@ uwatec_smart_parser_cache (uwatec_smart_parser_t *parser) parser->model == ALADIN2G || parser->model == MERIDIAN || parser->model == CHROMIS || parser->model == MANTIS2 || parser->model == G2 || parser->model == ALADINSPORTMATRIX || - parser->model == ALADINSQUARE) { + parser->model == ALADINSQUARE || parser->model == G2HUD) { unsigned int offset = header->tankpressure + 2 * i; endpressure = array_uint16_le(data + offset); beginpressure = array_uint16_le(data + offset + 2 * header->ngases); @@ -620,6 +621,7 @@ uwatec_smart_parser_create (dc_parser_t **out, dc_context_t *context, unsigned i parser->nevents[2] = C_ARRAY_SIZE (uwatec_smart_galileo_events_2); break; case G2: + case G2HUD: case ALADINSPORTMATRIX: parser->headersize = 84; parser->header = &uwatec_smart_trimix_header; @@ -963,7 +965,7 @@ uwatec_smart_parse (uwatec_smart_parser_t *parser, dc_sample_callback_t callback parser->model == ALADIN2G || parser->model == MERIDIAN || parser->model == CHROMIS || parser->model == MANTIS2 || parser->model == G2 || parser->model == ALADINSPORTMATRIX || - parser->model == ALADINSQUARE) { + parser->model == ALADINSQUARE || parser->model == G2HUD) { // Uwatec Galileo id = uwatec_galileo_identify (data[offset]); } else { From f37c3d3c86fd15bb7438537f77da1248d0f6e11a Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Tue, 23 Apr 2019 21:18:14 +0200 Subject: [PATCH 3/3] Fix the ndl/deco sample for the Aqualung i450T --- src/oceanic_atom2_parser.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/oceanic_atom2_parser.c b/src/oceanic_atom2_parser.c index e65cbbc..002de21 100644 --- a/src/oceanic_atom2_parser.c +++ b/src/oceanic_atom2_parser.c @@ -969,7 +969,7 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ unsigned int have_deco = 0; unsigned int decostop = 0, decotime = 0; if (parser->model == A300CS || parser->model == VTX || - parser->model == I450T || parser->model == I750TC || + parser->model == I750TC || parser->model == PROPLUSX || parser->model == I770R) { decostop = (data[offset + 15] & 0x70) >> 4; decotime = array_uint16_le(data + offset + 6) & 0x03FF; @@ -990,7 +990,8 @@ oceanic_atom2_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_ } else if (parser->model == I200 || parser->model == I300 || parser->model == OC1A || parser->model == OC1B || parser->model == OC1C || parser->model == OCI || - parser->model == I100 || parser->model == I300C) { + parser->model == I100 || parser->model == I300C || + parser->model == I450T) { decostop = (data[offset + 7] & 0xF0) >> 4; decotime = array_uint16_le(data + offset + 6) & 0x0FFF; have_deco = 1;