#[cfg(feature = "embassy-usb-0_3-server")]
pub mod embassy_usb_v0_3;
#[cfg(feature = "embassy-usb-0_4-server")]
pub mod embassy_usb_v0_4;
#[cfg(feature = "embassy-usb-0_5-server")]
pub mod embassy_usb_v0_5;
#[cfg(feature = "embedded-io-async-0_6-server")]
pub mod embedded_io_async_v0_6;
#[cfg(feature = "test-utils")]
pub mod test_channels;
#[cfg(any(
feature = "embassy-usb-0_3-server",
feature = "embassy-usb-0_4-server",
feature = "embassy-usb-0_5-server",
feature = "embedded-io-async-0_6-server",
))]
pub(crate) mod embassy_shared {
use crate::server::WireSpawn;
use embassy_executor::{SpawnError, SpawnToken, Spawner};
#[derive(Clone)]
pub struct EmbassyWireSpawn {
pub spawner: Spawner,
}
impl From<Spawner> for EmbassyWireSpawn {
fn from(value: Spawner) -> Self {
Self { spawner: value }
}
}
impl WireSpawn for EmbassyWireSpawn {
type Error = SpawnError;
type Info = Spawner;
fn info(&self) -> &Self::Info {
&self.spawner
}
}
pub fn embassy_spawn<Sp, S: Sized>(sp: &Sp, tok: SpawnToken<S>) -> Result<(), Sp::Error>
where
Sp: WireSpawn<Error = SpawnError, Info = Spawner>,
{
let info = sp.info();
info.spawn(tok)
}
}