Skip to content

Heinrichs Weikamp: Add Placeholder for GPS Coordinates on OSTC5 #87

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: Subsurface-DS9
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions src/hw_ostc_parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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 = array_uint32_le(data + offset); // Longitude
coordinate_value_t lat;
lat.intval = 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) {
Expand Down
Loading