From 9b7ca037939208171ce4df6884de6147615e7027 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 | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c index 7d8df435..704fe42f 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); @@ -1213,13 +1218,20 @@ hw_ostc_parser_internal_foreach (hw_ostc_parser_t *parser, dc_sample_callback_t length -= 2; } - // GNSS position + // GNSS position update (placeholder for now) if (events & 0x0400) { if (length < 8) { - ERROR (abstract->context, "Buffer overflow detected!"); + 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; } From edb85729150ce885a1e307959e0a07109fd224ba 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 704fe42f..e32ecbbf 100644 --- a/src/hw_ostc_parser.c +++ b/src/hw_ostc_parser.c @@ -1226,9 +1226,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);