52 lines
1.1 KiB
Rust
52 lines
1.1 KiB
Rust
#![no_std]
|
|
|
|
pub struct AudioObject {
|
|
// Play one bit per this interval
|
|
playback_speed: u64,
|
|
playback_ring: [u8; 2048],
|
|
paused: bool,
|
|
}
|
|
impl AudioInterface for AudioObject {
|
|
fn pause(&mut self) -> Result<(), AudioErrors> {
|
|
self.paused = true;
|
|
Ok(())
|
|
}
|
|
|
|
fn play() -> Result<(), AudioErrors> {
|
|
todo!();
|
|
Ok(())
|
|
}
|
|
|
|
fn stop() -> Result<(), AudioErrors> {
|
|
todo!();
|
|
Ok(())
|
|
}
|
|
|
|
fn fill_playback_buffer(&mut self, playback_slice: [u8; 128]) -> Result<(), AudioErrors> {
|
|
todo!();
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
pub trait AudioInterface {
|
|
fn pause(&mut self) -> Result<(), AudioErrors>;
|
|
fn play() -> Result<(), AudioErrors>;
|
|
|
|
// Stop will clear the buffer and stop playback
|
|
fn stop() -> Result<(), AudioErrors>;
|
|
|
|
fn fill_playback_buffer(&mut self, playback_slice: [u8; 128]) -> Result<(), AudioErrors>;
|
|
}
|
|
|
|
pub enum AudioErrors {
|
|
EmptyPlaybackBuffer = 1,
|
|
}
|
|
|
|
impl std::Error for AudioErrors {
|
|
fn id(&self) -> u128 {
|
|
match self {
|
|
AudioErrors::EmptyPlaybackBuffer => 1,
|
|
}
|
|
}
|
|
}
|