use crate::limit::FrequencyLimitError;
use core::error::Error;
use core::fmt::{Display, Formatter};
#[derive(Debug)]
pub enum SpectrumAnalyzerError {
TooFewSamples,
NaNValuesNotSupported,
InfinityValuesNotSupported,
InvalidFrequencyLimit(FrequencyLimitError),
SamplesLengthNotAPowerOfTwo,
ScalingError(f32 , f32 ),
}
impl Display for SpectrumAnalyzerError {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
match self {
Self::TooFewSamples => write!(f, "Too few samples!"),
Self::NaNValuesNotSupported => {
write!(f, "NaN values are not supported!")
}
Self::InfinityValuesNotSupported => {
write!(f, "Infinity values are not supported!")
}
Self::InvalidFrequencyLimit(e) => {
write!(f, "Invalid frequency limit: {e}")
}
Self::SamplesLengthNotAPowerOfTwo => {
write!(f, "Samples length must be a power of two!")
}
Self::ScalingError(a, b) => write!(f, "Scaling error: {a} -> {b}"),
}
}
}
impl Error for SpectrumAnalyzerError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
match self {
Self::InvalidFrequencyLimit(e) => Some(e),
_ => None,
}
}
}