From 5f7686fd5e10b9bdd7f898424bc653690958b826 Mon Sep 17 00:00:00 2001 From: Michael Keller Date: Tue, 17 Jun 2025 00:35:46 +1200 Subject: [PATCH 1/2] Heinrichs Weikamp: Add Placeholder for GPS Coordinates on OSTC5 Add a placeholder for the yet to be added GPS coordinates on OSTC5. This fixes the misalignment of the parsed data when the log was generated by firmware with GPS support. Signed-off-by: Michael Keller --- src/hw_ostc_parser.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c index 160e5d1b..05859ab6 100644 --- a/src/hw_ostc_parser.c +++ b/src/hw_ostc_parser.c @@ -153,6 +153,11 @@ typedef struct hw_ostc_parser_t { bool scrubber_warning_reported; } hw_ostc_parser_t; +typedef union { + unsigned int intval; + float floatval; +} coordinate_value_t; + static dc_status_t hw_ostc_parser_get_datetime (dc_parser_t *abstract, dc_datetime_t *datetime); static dc_status_t hw_ostc_parser_get_field (dc_parser_t *abstract, dc_field_type_t type, unsigned int flags, void *value); static dc_status_t hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t callback, void *userdata); @@ -1203,6 +1208,24 @@ hw_ostc_parser_internal_foreach (hw_ostc_parser_t *parser, dc_sample_callback_t length -= 2; } + // GNSS position update (placeholder for now) + if (events & 0x0400) { + if (length < 8) { + ERROR (abstract->context, "Buffer underflow detected!"); + return DC_STATUS_DATAFORMAT; + } + + coordinate_value_t lon; + lon.intval = (float)array_uint32_le(data + offset); // Longitude + coordinate_value_t lat; + lat.intval = (float)array_uint32_le(data + offset + 4); // Latitude + + INFO(abstract->context, "Received GPS coordinates %f / %f", lat.floatval, lon.floatval); + + offset += 8; + length -= 8; + } + // Scrubber state update if (events & 0x0800) { if (length < 2) { From c6bc43eb479a8cd902e43be39125dffc0b755869 Mon Sep 17 00:00:00 2001 From: Michael Keller Date: Tue, 17 Jun 2025 01:17:21 +1200 Subject: [PATCH 2/2] Update src/hw_ostc_parser.c Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Michael Keller --- src/hw_ostc_parser.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c index 05859ab6..4727c7a3 100644 --- a/src/hw_ostc_parser.c +++ b/src/hw_ostc_parser.c @@ -1216,9 +1216,9 @@ hw_ostc_parser_internal_foreach (hw_ostc_parser_t *parser, dc_sample_callback_t } coordinate_value_t lon; - lon.intval = (float)array_uint32_le(data + offset); // Longitude + lon.intval = array_uint32_le(data + offset); // Longitude coordinate_value_t lat; - lat.intval = (float)array_uint32_le(data + offset + 4); // Latitude + lat.intval = array_uint32_le(data + offset + 4); // Latitude INFO(abstract->context, "Received GPS coordinates %f / %f", lat.floatval, lon.floatval);