#[cfg(all(not(doc), not(feature = "host"), target_os = "none"))]
use crate::audio_player;
#[cfg(all(
not(doc),
not(feature = "host"),
target_os = "none",
esp_pdma_family
))]
audio_player! {
pub AudioPlayerGenerated {
data_pin: GPIO2,
bit_clock_pin: GPIO3,
word_select_pin: GPIO4,
sample_rate_hz: crate::audio_player::VOICE_22050_HZ,
dma: DMA_I2S0,
}
}
#[cfg(all(
not(doc),
not(feature = "host"),
target_os = "none",
esp_gdma_family
))]
audio_player! {
pub AudioPlayerGenerated {
data_pin: GPIO2,
bit_clock_pin: GPIO3,
word_select_pin: GPIO4,
sample_rate_hz: crate::audio_player::VOICE_22050_HZ,
dma: DMA_CH0,
}
}
#[cfg(doc)]
pub struct AudioPlayerGenerated;
#[cfg(doc)]
pub type AudioPlayerGeneratedPlayable = dyn Playable<VOICE_22050_HZ>;
#[cfg(doc)]
use crate::audio_player::{AtEnd, AudioPlayer, Playable, Volume, VOICE_22050_HZ};
#[cfg(doc)]
use crate::Result;
#[cfg(doc)]
impl AudioPlayerGenerated {
pub const SAMPLE_RATE_HZ: u32 = VOICE_22050_HZ;
pub const MAX_CLIPS: usize = 16;
pub const INITIAL_VOLUME: Volume = Volume::MAX;
pub const MAX_VOLUME: Volume = Volume::MAX;
pub fn new(
data_pin: impl Sized,
bit_clock_pin: impl Sized,
word_select_pin: impl Sized,
i2s: impl Sized,
dma: impl Sized,
spawner: embassy_executor::Spawner,
) -> Result<&'static Self> {
static INSTANCE: AudioPlayerGenerated = AudioPlayerGenerated;
let _ = (data_pin, bit_clock_pin, word_select_pin, i2s, dma, spawner);
Ok(&INSTANCE)
}
}
#[cfg(doc)]
impl AudioPlayer<VOICE_22050_HZ> for AudioPlayerGenerated {
const SAMPLE_RATE_HZ: u32 = VOICE_22050_HZ;
const MAX_CLIPS: usize = 16;
const INITIAL_VOLUME: Volume = Volume::MAX;
const MAX_VOLUME: Volume = Volume::MAX;
fn play<I>(&self, audio_clips: I, at_end: AtEnd)
where
I: IntoIterator<Item = &'static dyn Playable<VOICE_22050_HZ>>,
{
let _ = (audio_clips, at_end);
}
fn stop(&self) {}
async fn wait_until_stopped(&self) {}
fn set_volume(&self, volume: Volume) {
let _ = volume;
}
fn volume(&self) -> Volume {
Volume::MAX
}
}