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:
parent
e04a7fb33d
commit
04c367fd06
@ -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
|
// The logbook entry contains the total number of pages containing
|
||||||
// profile data, excluding the footer page. Limit the profile size
|
// profile data, excluding the footer page. Limit the profile size
|
||||||
// to this 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;
|
unsigned int length = npages * PAGESIZE;
|
||||||
if (rb_entry_size > length) {
|
if (rb_entry_size > length) {
|
||||||
rb_entry_size = length;
|
rb_entry_size = length;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user