pub trait Device {
// Required methods
fn name(&self) -> &str;
fn id(&self) -> &str;
fn start(&mut self) -> Result<()>;
fn stop(&mut self) -> Result<()>;
fn configure(&mut self, options: &Variant) -> Result<()>;
fn control(&mut self, action: &Variant) -> Result<()>;
fn running(&self) -> bool;
fn formats(&self) -> Result<Variant>;
}