Parse time on only one place in DLF import

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Anton Lundin 2014-12-28 23:38:42 +01:00 committed by Dirk Hohndel
parent e86d298734
commit c5467b0d73

View file

@ -2535,6 +2535,7 @@ int parse_dlf_buffer(unsigned char *buffer, size_t size)
{ {
unsigned char *ptr = buffer; unsigned char *ptr = buffer;
bool event, found; bool event, found;
unsigned int time = 0;
int i; int i;
target_table = &dive_table; target_table = &dive_table;
@ -2545,15 +2546,16 @@ int parse_dlf_buffer(unsigned char *buffer, size_t size)
dive_start(); dive_start();
while (ptr < buffer + size) { while (ptr < buffer + size) {
time = ((ptr[0] >> 4) & 0x0f) +
((ptr[1] << 4) & 0xff0) +
(ptr[2] & 0x0f) * 3600; /* hours */
event = ptr[0] & 0x0f; event = ptr[0] & 0x0f;
if (event == 1) { if (event == 1) {
/* dive event */ /* dive event */
switch(ptr[4]) { switch(ptr[4]) {
case 5: case 5:
event_start(); event_start();
cur_event.time.seconds = ((ptr[0] >> 4) & 0x0f) + cur_event.time.seconds = time;
((ptr[1] << 4) & 0xff0) +
(ptr[2] & 0x0f) * 3600; /* hours */
strcpy(cur_event.name, "gaschange"); strcpy(cur_event.name, "gaschange");
cur_event.type = 25; cur_event.type = 25;
cur_event.value = ptr[6]; cur_event.value = ptr[6];
@ -2573,13 +2575,11 @@ int parse_dlf_buffer(unsigned char *buffer, size_t size)
} }
break; break;
default: default:
fprintf(stderr, "DEBUG (event): %d\n", ptr[4]); fprintf(stderr, "DEBUG (event): %d at time %d\n", ptr[4], time);
} }
} else { } else {
sample_start(); sample_start();
cur_sample->time.seconds = ((ptr[0] >> 4) & 0x0f) + cur_sample->time.seconds = time;
((ptr[1] << 4) & 0xff0) +
(ptr[2] & 0x0f) * 3600; /* hours */
cur_sample->depth.mm = ((ptr[4] & 0xff) + ((ptr[5] << 8) & 0xff00)) * 10; cur_sample->depth.mm = ((ptr[4] & 0xff) + ((ptr[5] << 8) & 0xff00)) * 10;
sample_end(); sample_end();
} }