Expand description
§SBF - Septentrio Binary Format Parser
Parse Septentrio Binary Format (SBF) streams from GNSS receivers.
§Features
- Read SBF blocks from any
Readsource - Decode measurement, PVT, nav, status, SBAS, INS, and event blocks
- Decode
Meas3epochs with the statefulMeas3Decoder - Keep unknown blocks as raw payloads
- Parse-only API
§Quick Start
use std::fs::File;
use sbf_tools::{SbfReader, SbfBlock};
let file = File::open("data.sbf").unwrap();
let reader = SbfReader::new(file);
for result in reader {
match result {
Ok(block) => match block {
SbfBlock::PvtGeodetic(pvt) => {
if let (Some(lat), Some(lon)) = (pvt.latitude_deg(), pvt.longitude_deg()) {
println!("Position: {:.6}°, {:.6}°", lat, lon);
}
}
SbfBlock::Dop(dop) => {
println!("PDOP: {:.2}, HDOP: {:.2}", dop.pdop(), dop.hdop());
}
_ => {}
},
Err(e) => eprintln!("Error: {}", e),
}
}See README.md and the examples under examples/ for block counting and Meas3 decoding.
Re-exports§
pub use blocks::block_ids;pub use blocks::block_name;pub use blocks::fallback_name;pub use blocks::BaseVectorCartBlock;pub use blocks::BaseVectorGeodBlock;pub use blocks::BdsAlmBlock;pub use blocks::BdsRawB1cBlock;pub use blocks::BdsRawB2aBlock;pub use blocks::BdsRawB2bBlock;pub use blocks::BdsUtcBlock;pub use blocks::ChannelStatusBlock;pub use blocks::CosmosStatusBlock;pub use blocks::DiskData;pub use blocks::DiskStatusBlock;pub use blocks::DopBlock;pub use blocks::DynDnsStatusBlock;pub use blocks::EncapsulatedOutputBlock;pub use blocks::EndOfPvtBlock;pub use blocks::ExtEventAttEulerBlock;pub use blocks::ExtEventBaseVectGeodBlock;pub use blocks::GalAuthStatusBlock;pub use blocks::GeoRawL5Block;pub use blocks::GisActionBlock;pub use blocks::GisDatabaseStatus;pub use blocks::GisStatusBlock;pub use blocks::IrnssRawBlock;pub use blocks::LBandBeamInfo;pub use blocks::LBandBeamsBlock;pub use blocks::Meas3BlockSet;pub use blocks::Meas3Cn0HiResBlock;pub use blocks::Meas3DecodedEpoch;pub use blocks::Meas3Decoder;pub use blocks::Meas3DopplerBlock;pub use blocks::Meas3Measurement;pub use blocks::Meas3MpBlock;pub use blocks::Meas3PpBlock;pub use blocks::Meas3RangesBlock;pub use blocks::Meas3Satellite;pub use blocks::MeasEpochBlock;pub use blocks::NtripClientStatusBlock;pub use blocks::NtripConnectionSlot;pub use blocks::NtripServerStatusBlock;pub use blocks::P2ppSession;pub use blocks::P2ppStatusBlock;pub use blocks::PosCartBlock;pub use blocks::PosCovCartesianBlock;pub use blocks::PosCovGeodeticBlock;pub use blocks::PosLocalBlock;pub use blocks::PosProjectedBlock;pub use blocks::PvtCartesianBlock;pub use blocks::PvtGeodeticBlock;pub use blocks::PvtSupportABlock;pub use blocks::QzsAlmBlock;pub use blocks::ReceiverStatusBlock;pub use blocks::ReceiverTimeBlock;pub use blocks::RfBandEntry;pub use blocks::RfStatusBlock;pub use blocks::RtcmDatumBlock;pub use blocks::RxMessageBlock;pub use blocks::SatVisibilityBlock;pub use blocks::SatVisibilityInfo;pub use blocks::SatelliteMeasurement;pub use blocks::SbfBlock;pub use blocks::VelCovCartesianBlock;pub use blocks::VelCovGeodeticBlock;pub use crc::calculate_block_crc;pub use crc::crc16_ccitt;pub use crc::validate_block;pub use error::SbfError;pub use error::SbfResult;pub use header::SbfHeader;pub use header::SBF_SYNC;pub use reader::ReaderStats;pub use reader::SbfReadExt;pub use reader::SbfReader;pub use types::Constellation;pub use types::PvtError;pub use types::PvtMode;pub use types::SatelliteId;pub use types::SignalType;