From 04f4332c4d795693243e1f1be51ffce59ad66137 Mon Sep 17 00:00:00 2001 From: Astro Date: Fri, 28 Jan 2022 21:43:58 +0100 Subject: [PATCH] beast: remove jitter buffer again --- beast/src/aircrafts.rs | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/beast/src/aircrafts.rs b/beast/src/aircrafts.rs index f6e09a3..6c84f94 100644 --- a/beast/src/aircrafts.rs +++ b/beast/src/aircrafts.rs @@ -6,8 +6,6 @@ use tokio::sync::mpsc::channel; use adsb_deku::ICAO; use super::beast; -const JITTER_WINDOW: usize = 9; - #[derive(Default)] pub struct Entry { pub category: Option<(adsb_deku::adsb::TypeCoding, u8)>, @@ -15,8 +13,7 @@ pub struct Entry { pub altitude: Option, cpr1: Option, cpr2: Option, - // jitter buffer - positions: [Option; JITTER_WINDOW], + position: Option, pub heading: Option, pub speed: Option, pub vertical_rate: Option, @@ -52,12 +49,7 @@ impl Entry { { eprintln!("invalid position: {:?}", pos); } else { - // shift previous positions in jitter buffer - for i in 1..self.positions.len() { - self.positions[i - 1] = self.positions[i].take(); - } - // add position to jitter buffer - self.positions[self.positions.len() - 1] = Some(pos); + self.position = Some(pos); self.seen_pos = Some(Instant::now()); } } @@ -90,27 +82,7 @@ impl Entry { } pub fn position(&self) -> Option<&adsb_deku::cpr::Position> { - let mut prev_lat = self.positions[0].as_ref()?.latitude; - let mut prev_lon = self.positions[0].as_ref()?.longitude; - for i in 1..self.positions.len() { - let lat = self.positions[i].as_ref()?.latitude; - let lon = self.positions[i].as_ref()?.longitude; - if lat < prev_lat - 1.0 || - lat > prev_lat + 1.0 || - lon < prev_lon - 1.0 || - lon > prev_lon + 1.0 - { - // erroneous jitter detected - eprintln!("{:?} error in: {:?}", self.callsign, self.positions.iter().filter_map(|pos| { - pos.as_ref().map(|pos| (pos.latitude as i32, pos.longitude as i32)) - }).collect::>()); - return None; - } - prev_lat = lat; - prev_lon = lon; - } - - self.positions[self.positions.len() - 1].as_ref() + self.position.as_ref() } pub fn flight(&self) -> Option<&str> {