docs: embassy-rp rustdoc and refactoring

This commit is contained in:
Ulf Lilleengen
2023-12-19 10:11:19 +01:00
parent 08e9a4d84a
commit e45e3e76b5
10 changed files with 253 additions and 26 deletions

View File

@ -20,7 +20,9 @@ pub(crate) mod sealed {
}
}
/// USB peripheral instance.
pub trait Instance: sealed::Instance + 'static {
/// Interrupt for this peripheral.
type Interrupt: interrupt::typelevel::Interrupt;
}
@ -96,6 +98,7 @@ impl EndpointData {
}
}
/// RP2040 USB driver handle.
pub struct Driver<'d, T: Instance> {
phantom: PhantomData<&'d mut T>,
ep_in: [EndpointData; EP_COUNT],
@ -104,6 +107,7 @@ pub struct Driver<'d, T: Instance> {
}
impl<'d, T: Instance> Driver<'d, T> {
/// Create a new USB driver.
pub fn new(_usb: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>>) -> Self {
T::Interrupt::unpend();
unsafe { T::Interrupt::enable() };
@ -240,6 +244,7 @@ impl<'d, T: Instance> Driver<'d, T> {
}
}
/// USB interrupt handler.
pub struct InterruptHandler<T: Instance> {
_uart: PhantomData<T>,
}
@ -342,6 +347,7 @@ impl<'d, T: Instance> driver::Driver<'d> for Driver<'d, T> {
}
}
/// Type representing the RP USB bus.
pub struct Bus<'d, T: Instance> {
phantom: PhantomData<&'d mut T>,
ep_out: [EndpointData; EP_COUNT],
@ -461,6 +467,7 @@ trait Dir {
fn waker(i: usize) -> &'static AtomicWaker;
}
/// Type for In direction.
pub enum In {}
impl Dir for In {
fn dir() -> Direction {
@ -473,6 +480,7 @@ impl Dir for In {
}
}
/// Type for Out direction.
pub enum Out {}
impl Dir for Out {
fn dir() -> Direction {
@ -485,6 +493,7 @@ impl Dir for Out {
}
}
/// Endpoint for RP USB driver.
pub struct Endpoint<'d, T: Instance, D> {
_phantom: PhantomData<(&'d mut T, D)>,
info: EndpointInfo,
@ -616,6 +625,7 @@ impl<'d, T: Instance> driver::EndpointIn for Endpoint<'d, T, In> {
}
}
/// Control pipe for RP USB driver.
pub struct ControlPipe<'d, T: Instance> {
_phantom: PhantomData<&'d mut T>,
max_packet_size: u16,