#[derive(Debug, Clone, Copy, PartialEq)]
pub struct NavigationSolution {
    pub visible_beacons: u8,
    pub dilution_of_precision: f64,
    pub position_error_m: f64,
}

impl NavigationSolution {
    pub fn autonomous_surface_fix() -> Self {
        Self {
            visible_beacons: 4,
            dilution_of_precision: 3.8,
            position_error_m: 45.0,
        }
    }

    pub fn is_robust(&self) -> bool {
        self.visible_beacons >= 4
            && self.dilution_of_precision < 4.0
            && self.position_error_m < 50.0
    }
}
