pub enum SppError {
InvalidInput {
field: &'static str,
kind: SppInputErrorKind,
},
TooFewSatellites {
used: usize,
required: usize,
},
Singular(SolveError),
DuplicateObservation {
satellite: GnssSatelliteId,
},
EphemerisLost {
satellite: GnssSatelliteId,
},
IonosphereUnsupported {
satellite: GnssSatelliteId,
},
}Expand description
Error from solve.
Variants§
InvalidInput
A public SPP input was malformed, non-finite, or outside its physical domain. Boundary validation rejects this before satellite selection or least-squares evaluation.
Fields
kind: SppInputErrorKindThe validation failure category.
TooFewSatellites
Fewer usable satellites survived rejection than the solve has parameters
(3 + n_systems: three position components plus one receiver clock per
GNSS), so the solve is underdetermined.
Fields
Singular(SolveError)
The trust-region step hit a rank-deficient Jacobian (degenerate geometry).
DuplicateObservation
The same satellite appears in more than one observation. One pseudorange per satellite is required, so the input is rejected rather than silently picking one (which would make the result depend on observation order).
Fields
satellite: GnssSatelliteIdThe satellite that was observed more than once.
EphemerisLost
A satellite that survived the frozen selection had no usable SP3 position/clock at a transmit epoch reached during the solve. Returned instead of panicking; normally precluded by the selection step.
Fields
satellite: GnssSatelliteIdThe satellite whose ephemeris became unavailable during the solve.
IonosphereUnsupported
The ionosphere correction was requested but an observed satellite has no
resolvable carrier frequency, so the L1 Klobuchar delay cannot be scaled
to it. GPS L1, Galileo E1, and BeiDou B1I have fixed carriers; a GLONASS
satellite resolves its per-satellite FDMA carrier from
SolveInputs::glonass_channels, so a GLONASS observation whose channel
is absent from that map – or present but outside the valid FDMA range
[-7, +6] – (rather than GLONASS as a whole) is rejected here rather
than corrected with an undefined or out-of-domain frequency.
Fields
satellite: GnssSatelliteIdThe satellite the ionosphere model does not cover.
Trait Implementations§
Source§impl Error for SppError
impl Error for SppError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<SolveError> for SppError
impl From<SolveError> for SppError
Source§fn from(e: SolveError) -> Self
fn from(e: SolveError) -> Self
Source§impl From<SppError> for SolvePolicyError
impl From<SppError> for SolvePolicyError
Auto Trait Implementations§
impl Freeze for SppError
impl RefUnwindSafe for SppError
impl Send for SppError
impl Sync for SppError
impl Unpin for SppError
impl UnsafeUnpin for SppError
impl UnwindSafe for SppError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.