mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Uemis downloader: recover if dive info is completely missing
I user had a Uemis that had a dive log entry for a certain internal id but no dive info for it. This appeared to be one of those dreaded dives when the Uemis decides to start a dive at the end of a flight and then stays in dive mode until it runs out of battery. Anyway, if we see a number above and a number below, just give up and move on. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
779a70629b
commit
fc1b8db17f
1 changed files with 9 additions and 1 deletions
|
@ -1119,6 +1119,8 @@ static bool get_matching_dive(int idx, char *newmax, int *uemis_mem_status, stru
|
||||||
char log_file_no_to_find[20];
|
char log_file_no_to_find[20];
|
||||||
char dive_to_read_buf[10];
|
char dive_to_read_buf[10];
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
bool found_below = false;
|
||||||
|
bool found_above = false;
|
||||||
int deleted_files = 0;
|
int deleted_files = 0;
|
||||||
|
|
||||||
snprintf(log_file_no_to_find, sizeof(log_file_no_to_find), "logfilenr{int{%d", dive->dc.diveid);
|
snprintf(log_file_no_to_find, sizeof(log_file_no_to_find), "logfilenr{int{%d", dive->dc.diveid);
|
||||||
|
@ -1176,13 +1178,19 @@ static bool get_matching_dive(int idx, char *newmax, int *uemis_mem_status, stru
|
||||||
char *logfilenr = strstr(mbuf, "logfilenr");
|
char *logfilenr = strstr(mbuf, "logfilenr");
|
||||||
if (logfilenr) {
|
if (logfilenr) {
|
||||||
sscanf(logfilenr, "logfilenr{int{%u", &nr_found);
|
sscanf(logfilenr, "logfilenr{int{%u", &nr_found);
|
||||||
if (nr_found >= dive->dc.diveid)
|
if (nr_found >= dive->dc.diveid) {
|
||||||
|
found_above = true;
|
||||||
dive_to_read = dive_to_read - 2;
|
dive_to_read = dive_to_read - 2;
|
||||||
|
} else {
|
||||||
|
found_below = true;
|
||||||
|
}
|
||||||
if (dive_to_read < -1)
|
if (dive_to_read < -1)
|
||||||
dive_to_read = -1;
|
dive_to_read = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (found_above && found_below)
|
||||||
|
break;
|
||||||
dive_to_read++;
|
dive_to_read++;
|
||||||
} else {
|
} else {
|
||||||
/* At this point the memory of the UEMIS is full, let's cleanup all divelog files were
|
/* At this point the memory of the UEMIS is full, let's cleanup all divelog files were
|
||||||
|
|
Loading…
Add table
Reference in a new issue