pub struct GnssData {
pub time: Option<String>,
pub latitude: Option<f64>,
pub longitude: Option<f64>,
pub fix_quality: Option<u8>,
pub num_satellites: Option<u8>,
pub altitude: Option<f64>,
pub speed_knots: Option<f64>,
pub track_angle: Option<f64>,
pub date: Option<String>,
pub systems: HashMap<&'static str, GnssSystemData>,
pub fused_position: Option<FusedPosition>,
}Expand description
Main GNSS data structure holding parsed information and fused position.
Fields§
§time: Option<String>UTC time from NMEA sentence
latitude: Option<f64>Latitude in decimal degrees
longitude: Option<f64>Longitude in decimal degrees
fix_quality: Option<u8>Fix quality indicator
num_satellites: Option<u8>Number of satellites used for fix
altitude: Option<f64>Altitude above mean sea level in meters
speed_knots: Option<f64>Speed over ground in knots
track_angle: Option<f64>Track angle in degrees
date: Option<String>Date in DDMMYY format
systems: HashMap<&'static str, GnssSystemData>Data for each GNSS system
fused_position: Option<FusedPosition>Fused position calculated from available systems
Implementations§
Source§impl GnssData
impl GnssData
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new GnssData instance with all supported GNSS systems initialized.
§Example
use nema_parser::gnss_multignss_parser::GnssData;
let gnss = GnssData::new();Sourcepub fn feed_nmea(&mut self, sentence: &str)
pub fn feed_nmea(&mut self, sentence: &str)
Feeds a single NMEA sentence to the parser and updates internal state.
§Arguments
sentence- A string slice containing the NMEA sentence.
§Example
use nema_parser::gnss_multignss_parser::GnssData;
let mut gnss = GnssData::new();
gnss.feed_nmea("$GNGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47");Sourcepub fn calculate_fused_position(&mut self)
pub fn calculate_fused_position(&mut self)
Calculates a fused position from all available GNSS systems using weighted averaging.
The fused position is stored in self.fused_position.
§Example
use nema_parser::gnss_multignss_parser::GnssData;
let mut gnss = GnssData::new();
gnss.calculate_fused_position();
if let Some(fused) = &gnss.fused_position {
println!("Fused position: {}, {}", fused.latitude, fused.longitude);
}Sourcepub fn calculate_advanced_fused_position(&mut self)
pub fn calculate_advanced_fused_position(&mut self)
Calculates an advanced fused position using a Kalman-like filtering approach.
The fused position is stored in self.fused_position.