From 97a6023bb6c467cecd0e335ab2f31369a1748e66 Mon Sep 17 00:00:00 2001 From: Jef Driesen Date: Tue, 11 Apr 2017 20:08:29 +0200 Subject: [PATCH] Fix the firmware version and serial number When downloading a Shearwater Petrel using the predator backend, the firmware version and serial number are different compared to those reported by the petrel backend. This is caused by a difference in the encoding of the data. In the predator data format, the firmware version appears to be BCD encoded, and the serial number is stored as a big endian integer. --- src/shearwater_predator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shearwater_predator.c b/src/shearwater_predator.c index 7975b8f..505dd85 100644 --- a/src/shearwater_predator.c +++ b/src/shearwater_predator.c @@ -156,8 +156,8 @@ shearwater_predator_device_foreach (dc_device_t *abstract, dc_dive_callback_t ca unsigned char *data = dc_buffer_get_data (buffer); dc_event_devinfo_t devinfo; devinfo.model = data[0x2000D]; - devinfo.firmware = data[0x2000A]; - devinfo.serial = array_uint32_le (data + 0x20002); + devinfo.firmware = bcd2dec (data[0x2000A]); + devinfo.serial = array_uint32_be (data + 0x20002); device_event_emit (abstract, DC_EVENT_DEVINFO, &devinfo); rc = shearwater_predator_extract_dives (abstract, data, SZ_MEMORY, callback, userdata);