Oceanic: fix up dive truncation issues

This fixes the dive truncation that happened with long dives due to the
removal of extra padding (commit a2100843b9cf: "Remove extra padding
from the end of the profile").  It turns out the rest of the profile was
in bits 13-15 (with bit 12 being something else).
This commit is contained in:
Janice McLaughlin 2018-10-02 16:03:36 -07:00 committed by Jef Driesen
parent e04a7fb33d
commit 04c367fd06

View File

@ -499,7 +499,10 @@ oceanic_common_device_profile (dc_device_t *abstract, dc_event_progress_t *progr
// The logbook entry contains the total number of pages containing
// profile data, excluding the footer page. Limit the profile size
// to this size.
unsigned int npages = (array_uint16_le (profiles + offset + 12) & 0x0FFF) + 1;
unsigned int value = array_uint16_le (profiles + offset + 12);
unsigned int value_hi = value & 0xE000;
unsigned int value_lo = value & 0x0FFF;
unsigned int npages = ((value_hi >> 1) | value_lo) + 1;
unsigned int length = npages * PAGESIZE;
if (rb_entry_size > length) {
rb_entry_size = length;