From ba96b3092df958befad27cb5b6f0ebd2d39caf68 Mon Sep 17 00:00:00 2001 From: Nick Shore Date: Tue, 28 Jan 2020 08:17:28 +0100 Subject: [PATCH] Fix the vtpro datetime parsing For the BCD encoded day field (range 1-31), two bits are sufficient to represent the upper digit (range 0-3). The purpose of the highest bit is unknown, but it's certainly not part of the day field, and needs to be masked off. --- src/oceanic_vtpro_parser.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oceanic_vtpro_parser.c b/src/oceanic_vtpro_parser.c index 894b626..d09b2f9 100644 --- a/src/oceanic_vtpro_parser.c +++ b/src/oceanic_vtpro_parser.c @@ -129,7 +129,7 @@ oceanic_vtpro_parser_get_datetime (dc_parser_t *abstract, dc_datetime_t *datetim else datetime->year = bcd2dec (((p[32 + 3] & 0xC0) >> 2) + ((p[32 + 2] & 0xF0) >> 4)) + 2000; datetime->month = (p[4] & 0xF0) >> 4; - datetime->day = bcd2dec (p[3]); + datetime->day = bcd2dec (p[3] & 0x7F); datetime->hour = bcd2dec (p[1] & 0x7F); pm = p[1] & 0x80; }