Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Note: Work in progress, feel free to contribute.
gdl90
This crate provides types and structures for handling GDL90 messages.
It uses Rust crates such as binrw and modular-bitfield to efficiently represent and manipulate these message types.
What is GDL90?
GDL 90 is designed to transmit, receive and decode Automatic Dependent Surveillance-Broadcast (ADS-B) messages via onboard datalink. It broadcasts your aircraft's position, velocity, projected track, altitude and flight identification to other equipped aircraft in your vicinity, as well as to ground-based transceivers maintained by the FAA.
Many ADS-B transponders (such as uAvionix ping20Si) use this protocol for their I/O interfaces. With this crate, you can easily integrate one of those in your rusty system.
You can find the full specification here.
Usage
[]
= "0.1.0"
use Cursor;
use Gdl90DatalinkMessage;
use Gdl90Message;
// hardcoded, but you should read this from transponder
let parsed = read_raw.unwrap;
dbg!;
match parsed.message_data
Result:
&parsed = Gdl90Message {
message_data: Heartbeat {
status_byte_1: HeartbeatStatusByte1 {
uat_initialized: true,
ratcs: false,
gps_batt_low: false,
addr_type: false,
ident: false,
maint_reqd: false,
gps_pos_valid: true,
},
status_byte_2: HeartbeatStatusByte2 {
utc_ok: true,
csa_not_available: false,
csa_requested: true,
timestamp_msb: false,
},
uat_timestamp: 53467,
message_counts: 520,
},
frame_check_seq: 35763,
}
TODO:
- Add more strong typying structures, no raw bits like
B4
, ... - Add and test remaining messages.
- Try removing
bitfield
s as maximum as possible, replacing it with custom types, usingbinrw
directives and magic macros.