beast: remove jitter buffer again
This commit is contained in:
parent
360ced4e7f
commit
04f4332c4d
|
@ -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<u32>,
|
||||
cpr1: Option<adsb_deku::Altitude>,
|
||||
cpr2: Option<adsb_deku::Altitude>,
|
||||
// jitter buffer
|
||||
positions: [Option<adsb_deku::cpr::Position>; JITTER_WINDOW],
|
||||
position: Option<adsb_deku::cpr::Position>,
|
||||
pub heading: Option<f64>,
|
||||
pub speed: Option<f64>,
|
||||
pub vertical_rate: Option<i16>,
|
||||
|
@ -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::<Vec<_>>());
|
||||
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> {
|
||||
|
|
Loading…
Reference in New Issue