diff --git a/protobuf_definitions/message_formats.proto b/protobuf_definitions/message_formats.proto index 32b3ea61..bb61fb3f 100644 --- a/protobuf_definitions/message_formats.proto +++ b/protobuf_definitions/message_formats.proto @@ -1261,6 +1261,68 @@ message NavigationSensorStatus { LatLongPosition global_position = 8; // Global position from sensor. } +// Position fix mode reported by the NMEA GSA sentence. +enum GnssFixMode { + GNSS_FIX_MODE_UNSPECIFIED = 0; // No GSA sentence has been received. + GNSS_FIX_MODE_NO_FIX = 1; // The receiver has no position fix. + GNSS_FIX_MODE_2D = 2; // Horizontal fix only, no usable altitude. + GNSS_FIX_MODE_3D = 3; // Full three dimensional fix. +} + +// GNSS constellation a satellite belongs to. +enum GnssConstellation { + GNSS_CONSTELLATION_UNSPECIFIED = 0; // Unspecified. + GNSS_CONSTELLATION_GPS = 1; // GPS. + GNSS_CONSTELLATION_GLONASS = 2; // GLONASS. + GNSS_CONSTELLATION_GALILEO = 3; // Galileo. + GNSS_CONSTELLATION_BEIDOU = 4; // BeiDou. +} + +// Satellite tracked by the Blueye GNSS receiver. +message GnssSatellite { + GnssConstellation constellation = 1; // Constellation the satellite belongs to. + uint32 satellite_id = 2; // Satellite id within the constellation. + uint32 snr = 3; // Carrier to noise ratio (dB-Hz). + int32 elevation = 4; // Elevation above the horizon (°, 0..90), or -1 when the receiver did not report it. + int32 azimuth = 5; // Azimuth clockwise from true north (°, 0..359), or -1 when the receiver did not report it. + bool used_in_fix = 6; // Whether GSA lists the satellite as used in the fix. Only meaningful if is_used_in_fix_valid. +} + +// Status of the onboard Blueye GNSS receiver and its driver. +message GnssStatus { + bool receiver_connected = 1; // True when the receiver is connected and producing NMEA sentences. + uint32 fix_quality = 2; // NMEA GGA fix quality indicator (0 = no fix). + bool is_valid = 3; // True when the receiver reports a usable position fix. + uint32 satellites_used = 4; // Number of satellites used in the position fix. + uint32 satellites_tracked = 5; // Satellites in the satellites list: those with a signal, seen within the last 30 s. + uint32 satellites_in_view = 17; // Satellites the receiver reports in view, summed over the constellations. + bool is_used_in_fix_valid = 20; // True when GSA could be attributed to a constellation, making used_in_fix usable. + GnssFixMode fix_mode = 21; // Fix mode from GSA (2D/3D). + float hdop = 6; // Horizontal dilution of precision. + float pdop = 22; // Position (3D) dilution of precision, from GSA. + float vdop = 23; // Vertical dilution of precision, from GSA. + LatLongPosition global_position = 7; // Reported global position. + float altitude = 24; // Altitude above mean sea level (m), from GGA. + float stddev_latitude = 8; // Standard deviation of the latitude (m). Meaningless unless is_accuracy_valid. + float stddev_longitude = 9; // Standard deviation of the longitude (m). Meaningless unless is_accuracy_valid. + float stddev_altitude = 25; // Standard deviation of the altitude (m). Meaningless unless is_accuracy_valid. + float stddev_semi_major = 26; // Semi-major axis of the horizontal error ellipse (m). + float stddev_semi_minor = 27; // Semi-minor axis of the horizontal error ellipse (m). + float error_ellipse_orientation = 28; // Orientation of the semi-major axis, clockwise from true north (°). + float range_rms = 29; // RMS of the range residuals (m), from GST. + bool is_accuracy_valid = 18; // True once the receiver has reported a GST sentence to derive the deviations from. + float course_over_ground = 10; // Course over ground (°). Meaningless unless is_course_valid. + bool is_course_valid = 19; // True when the fix is valid and the receiver actually reported a course. + float speed_over_ground = 11; // Speed over ground (m/s). + float differential_age = 30; // Age of the differential corrections (s), or -1 without DGPS/RTK. + int32 differential_station = 31; // Id of the station supplying the differential corrections, or -1 when absent. + uint32 baud_rate = 12; // Serial baud rate in use (bit/s). + uint32 reconnect_count = 13; // Times the driver has reconnected to the receiver since boot. + uint32 receive_error_count = 14; // Receive errors seen by the driver since boot. + float time_since_last_sentence = 15; // Time since the last NMEA sentence was received (s). + repeated GnssSatellite satellites = 16; // Satellites currently tracked with signal strength. +} + // Status for guest port devices that can be attached and detached. enum GuestPortDetachStatus { GUEST_PORT_DETACH_STATUS_UNSPECIFIED = 0; // Unspecified (Default for non-detachable devices). diff --git a/protobuf_definitions/telemetry.proto b/protobuf_definitions/telemetry.proto index db8dc0db..ccd5496c 100644 --- a/protobuf_definitions/telemetry.proto +++ b/protobuf_definitions/telemetry.proto @@ -97,6 +97,11 @@ message PilotGPSPositionTel { LatLongPosition position = 1; // The GPS position of the pilot. } +// Status of the onboard Blueye GNSS receiver and its driver. +message GnssStatusTel { + GnssStatus gnss_status = 1; // Status of the Blueye GNSS receiver. +} + // Record state from the drone. message RecordStateTel { RecordState record_state = 1; // Record state.