From 74957542bb58cf3fd064103a8e883cef33fab546 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Mon, 22 Apr 2019 22:45:18 +0200 Subject: [PATCH] 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 {