Skip to content
Merged
Show file tree
Hide file tree
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
4 changes: 2 additions & 2 deletions src/decoder/adsb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ mod surveillance_status;
mod version;
mod vertical_rate;

pub use icao::icao;
pub use icao::get_icao;

pub(crate) use acas::threat_encounter;
pub(crate) use ais::ais;
pub(crate) use altitude::{altitude, altitude_delta, altitude_gnss};
pub(crate) use ground_movement::ground_movement;
pub(crate) use icao::icao_wtc;
pub(crate) use icao::get_wake_turbulence_category;
pub(crate) use position::{cpr, cpr_location};
pub(crate) use squawk::squawk;
pub(crate) use surveillance_status::surveillance_status;
Expand Down
25 changes: 15 additions & 10 deletions src/decoder/adsb/icao.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ use crate::decoder::get_crc;
/// # Examples
///
/// ```
/// use squitterator::{get_message, get_downlink_format, icao};
/// use squitterator::{get_message, get_downlink_format, get_icao};
/// if let Some(message) = get_message("A0001838300000000000007ADA59") {
/// if let Some(df) = get_downlink_format(&message) {
/// if let Some(icao_address) = icao(&message, df) {
/// if let Some(icao_address) = get_icao(&message, df) {
/// assert_eq!(icao_address, 7453696);
/// }
/// }
/// }
pub fn icao(message: &[u32], df: u32) -> Option<u32> {
pub fn get_icao(message: &[u32], df: u32) -> Option<u32> {
match df {
0 | 4 | 5 | 16 | 20 | 21 => {
let len = (message.len() * 4) as u32;
Expand All @@ -45,7 +45,7 @@ pub fn icao(message: &[u32], df: u32) -> Option<u32> {
///
/// The calculated Wake Turbulence Category (WTC) as a character.
///
pub(crate) fn icao_wtc(vc: &(u32, u32)) -> Option<char> {
pub(crate) fn get_wake_turbulence_category(vc: &(u32, u32)) -> Option<char> {
match vc {
(4, 1) => Some('L'),
(4, 2) => Some('S'),
Expand All @@ -59,7 +59,7 @@ pub(crate) fn icao_wtc(vc: &(u32, u32)) -> Option<char> {

#[cfg(test)]
mod tests {
use crate::decoder::{get_downlink_format, get_message, icao};
use crate::decoder::{get_downlink_format, get_icao, get_message};

#[test]
fn test_icao() {
Expand All @@ -81,7 +81,7 @@ mod tests {
for (squitter, value) in squitters.iter() {
if let Some(message) = get_message(squitter) {
if let Some(df) = get_downlink_format(&message) {
if let Some(result) = icao(&message, df) {
if let Some(result) = get_icao(&message, df) {
assert_eq!(result, *value, "Squitter: {} ICAO:{:X}", squitter, result);
}
}
Expand All @@ -90,7 +90,7 @@ mod tests {
}

#[test]
fn test_icao_wtc() {
fn test_get_wake_turbulence_category() {
let vcs = [
((4, 1), 'L'),
((4, 2), 'S'),
Expand All @@ -101,18 +101,23 @@ mod tests {
];

for (vc, value) in vcs.iter() {
if let Some(result) = crate::decoder::icao_wtc(vc) {
if let Some(result) = crate::decoder::get_wake_turbulence_category(vc) {
assert_eq!(result, *value, "VC: {:?}", vc);
}
}
}

#[test]
fn test_icao_wtc_none() {
fn test_get_wake_turbulence_category_none() {
let vcs = [(4, 0), (4, 6)];

for vc in vcs.iter() {
assert_eq!(crate::decoder::icao_wtc(vc), None, "VC: {:?}", vc);
assert_eq!(
crate::decoder::get_wake_turbulence_category(vc),
None,
"VC: {:?}",
vc
);
}
}
}
10 changes: 5 additions & 5 deletions src/decoder/downlink/dfs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@ impl DF {
}

impl Downlink for DF {
fn from_get_message(message: &[u32]) -> Result<Self, &str> {
fn from_message(message: &[u32]) -> Result<Self, &str> {
match get_downlink_format(message) {
Some(value) => {
let dl = match value {
0..=16 => DF::SRT(Srt::from_get_message(message)?),
17 => DF::EXT(Ext::from_get_message(message)?),
20 | 21 => DF::MDS(Mds::from_get_message(message)?),
0..=16 => DF::SRT(Srt::from_message(message)?),
17 => DF::EXT(Ext::from_message(message)?),
20 | 21 => DF::MDS(Mds::from_message(message)?),
_ => DF::SRT(Srt::new()),
};
Ok(dl)
Expand All @@ -82,7 +82,7 @@ impl Downlink for DF {
}

pub trait Downlink: Sized {
fn from_get_message(message: &[u32]) -> Result<Self, &str>;
fn from_message(message: &[u32]) -> Result<Self, &str>;
fn update(&mut self, message: &[u32]);
fn icao(&self) -> Option<u32>;
}
4 changes: 2 additions & 2 deletions src/decoder/downlink/extended/update.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ impl Ext {
}

impl decoder::Downlink for Ext {
fn from_get_message(message: &[u32]) -> Result<Self, &str> {
fn from_message(message: &[u32]) -> Result<Self, &str> {
let mut dl = Ext::new();
dl.update(message);
Ok(dl)
Expand All @@ -64,7 +64,7 @@ impl decoder::Downlink for Ext {
fn update(&mut self, message: &[u32]) {
if let Some(df) = decoder::get_downlink_format(message) {
self.df = Some(df);
self.icao = decoder::icao(message, df);
self.icao = decoder::get_icao(message, df);
self.capability = decoder::get_capability(message);
self.message_type = decoder::get_message_type(message);
match self.message_type.0 {
Expand Down
4 changes: 2 additions & 2 deletions src/decoder/downlink/mode_s.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ impl Display for Mds {
}

impl decoder::Downlink for Mds {
fn from_get_message(message: &[u32]) -> Result<Self, &str> {
fn from_message(message: &[u32]) -> Result<Self, &str> {
let mut dl = Mds::new();
dl.update(message);
Ok(dl)
Expand All @@ -102,7 +102,7 @@ impl decoder::Downlink for Mds {
fn update(&mut self, message: &[u32]) {
if let Some(df) = decoder::get_downlink_format(message) {
self.df = Some(df);
self.icao = decoder::icao(message, df);
self.icao = decoder::get_icao(message, df);
self.altitude = decoder::altitude(message, df);
}

Expand Down
4 changes: 2 additions & 2 deletions src/decoder/downlink/short.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ impl Display for Srt {
}

impl decoder::Downlink for Srt {
fn from_get_message(message: &[u32]) -> Result<Self, &str> {
fn from_message(message: &[u32]) -> Result<Self, &str> {
let mut dl = Srt::new();
dl.update(message);
Ok(dl)
Expand All @@ -68,7 +68,7 @@ impl decoder::Downlink for Srt {
fn update(&mut self, message: &[u32]) {
if let Some(df) = decoder::get_downlink_format(message) {
self.df = Some(df);
self.icao = decoder::icao(message, df);
self.icao = decoder::get_icao(message, df);
match df {
4 => {
self.altitude = decoder::altitude(message, df);
Expand Down
2 changes: 1 addition & 1 deletion src/decoder/plane.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ impl Plane {
}
}

pub fn from_get_message(message: &[u32], df: u32, icao: u32, relaxed: bool) -> Self {
pub fn from_message(message: &[u32], df: u32, icao: u32, relaxed: bool) -> Self {
let mut plane = Plane::new();
plane.icao = icao;
(_, plane.reg) = super::icao_to_country(icao);
Expand Down
2 changes: 1 addition & 1 deletion src/decoder/plane/simple_display.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ impl SimpleDisplay for Plane {
} else {
write!(f, " ")?;
}
if let Some(w) = decoder::icao_wtc(&self.category) {
if let Some(w) = decoder::get_wake_turbulence_category(&self.category) {
write!(f, "{} ", w)?;
} else {
write!(f, " ")?;
Expand Down
4 changes: 2 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ mod reader;

pub use arguments::Args;
pub use decoder::{
get_downlink_format, get_message, icao, set_observer_coords_from_str, DisplayFlags, Downlink,
Legend, LegendHeaders, Plane, Planes, UpdateFromDownlink, DF,
get_downlink_format, get_icao, get_message, set_observer_coords_from_str, DisplayFlags,
Downlink, Legend, LegendHeaders, Plane, Planes, UpdateFromDownlink, DF,
};
pub use errors::AppResult;
pub use logger::initialize_logger;
Expand Down
18 changes: 11 additions & 7 deletions src/reader.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::{
get_downlink_format, get_message, icao, AppCounters, Args, DisplayFlags, Downlink, Legend,
get_downlink_format, get_icao, get_message, AppCounters, Args, DisplayFlags, Downlink, Legend,
LegendHeaders, Planes, DF,
};
use log::{debug, error, info};
Expand All @@ -21,10 +21,7 @@ fn read_lines<R: BufRead>(reader: R, args: &Args, planes: &mut Planes) -> Result
let display_flags = DisplayFlags::from_arg_str(&args.display.concat());

if !display_flags.quiet() {
clear_screen();

let legend = Legend::from_display_flags(&display_flags);
legend.print_legend();
display_legend(&display_flags);
}

let headers = LegendHeaders::from_display_flags(&display_flags);
Expand All @@ -42,7 +39,7 @@ fn read_lines<R: BufRead>(reader: R, args: &Args, planes: &mut Planes) -> Result

debug!("DF:{}, L:{}", df, &line);

let Some(icao) = icao(&message, df) else {
let Some(icao) = get_icao(&message, df) else {
continue;
};

Expand All @@ -63,7 +60,7 @@ fn read_lines<R: BufRead>(reader: R, args: &Args, planes: &mut Planes) -> Result
}

let now = chrono::Utc::now();
if let Ok(downlink) = DF::from_get_message(&message) {
if let Ok(downlink) = DF::from_message(&message) {
if let Some(ref downlink_error_log_file) = downlink_error_log_file {
downlink.log(downlink_error_log_file)?;
}
Expand All @@ -78,6 +75,13 @@ fn read_lines<R: BufRead>(reader: R, args: &Args, planes: &mut Planes) -> Result
Ok(())
}

fn display_legend(display_flags: &DisplayFlags) {
clear_screen();

let legend = Legend::from_display_flags(display_flags);
legend.print_legend();
}

fn display_planes(
args: &Args,
planes: &mut Planes,
Expand Down