use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("ReSpeaker device not found (expected {vid:04x}:{pid:04x})")]
NotFound { vid: u16, pid: u16 },
#[error(
"permission denied opening ReSpeaker USB device; try sudo or install a udev rule for 2886:0018"
)]
Access,
#[error("unknown DSP parameter `{0}`")]
UnknownParameter(String),
#[error("parameter `{0}` is read-only")]
ReadOnly(String),
#[error("invalid parameter value: {0}")]
InvalidValue(String),
#[error("USB error: {0}")]
Usb(#[from] rusb::Error),
#[error("{0}")]
Message(String),
}