X-Git-Url: https://code.octet-stream.net/m17rt/blobdiff_plain/54fc21708c9121409560731f90b91e59699f4ddc..refs/heads/master:/m17app/src/error.rs diff --git a/m17app/src/error.rs b/m17app/src/error.rs index aeb58a5..e820eae 100644 --- a/m17app/src/error.rs +++ b/m17app/src/error.rs @@ -2,7 +2,7 @@ use std::{fmt::Display, path::PathBuf}; use thiserror::Error; -/// Errors originating from the M17 Rust Toolkit core +/// Errors from the M17 Rust Toolkit #[derive(Debug, Error)] pub enum M17Error { #[error("given callsign contains at least one character invalid in M17: {0}")] @@ -11,15 +11,6 @@ pub enum M17Error { #[error("given callsign is {0} characters long; maximum is 9")] CallsignTooLong(usize), - #[error("error during soundcard initialisation")] - SoundcardInit, - - #[error("unable to locate sound card '{0}' - is it in use?")] - SoundcardNotFound(String), - - #[error("unable to set up RTL-SDR receiver")] - RtlSdrInit, - #[error( "provided packet payload is too large: provided {provided} bytes, capacity {capacity}" )] @@ -39,10 +30,17 @@ pub enum M17Error { #[error("adapter error for id {0}: {1}")] Adapter(usize, #[source] AdapterError), + + #[error("soundmodem component error: {0}")] + Soundmodem(#[source] SoundmodemError), } +/// Arbitrary error type returned from adapters, which may be user-implemented pub type AdapterError = Box; +/// Arbitrary error type returned from soundmodem components, which may be user-implemented +pub type SoundmodemError = Box; + /// Iterator over potentially multiple errors #[derive(Debug, Error)] pub struct M17Errors(pub(crate) Vec); @@ -56,6 +54,13 @@ impl Iterator for M17Errors { impl Display for M17Errors { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{:?}", self.0) + let mut displays = vec![]; + for e in &self.0 { + displays.push(e.to_string()); + } + write!(f, "[{}]", displays.join(", ")) } } + +#[derive(Debug, Error)] +pub enum M17SoundmodemError {}