Remove channel and make run future cancelable

This commit is contained in:
alexmoon
2022-04-13 13:09:08 -04:00
parent 1d875fab2d
commit ff7c6b350e
6 changed files with 129 additions and 196 deletions

View File

@ -11,7 +11,6 @@ use core::mem::MaybeUninit;
use core::ops::Range;
use core::sync::atomic::{AtomicUsize, Ordering};
use embassy::blocking_mutex::raw::RawMutex;
use embassy::time::Duration;
use embassy_usb::driver::EndpointOut;
use embassy_usb::{
@ -89,8 +88,8 @@ impl<'d, D: Driver<'d>, const IN_N: usize> HidClass<'d, D, (), IN_N> {
/// high performance uses, and a value of 255 is good for best-effort usecases.
///
/// This allocates an IN endpoint only.
pub fn new<M: RawMutex, const OUT_N: usize>(
builder: &mut UsbDeviceBuilder<'d, D, M>,
pub fn new<const OUT_N: usize>(
builder: &mut UsbDeviceBuilder<'d, D>,
state: &'d mut State<'d, IN_N, OUT_N>,
report_descriptor: &'static [u8],
request_handler: Option<&'d dyn RequestHandler>,
@ -133,8 +132,8 @@ impl<'d, D: Driver<'d>, const IN_N: usize, const OUT_N: usize>
/// high performance uses, and a value of 255 is good for best-effort usecases.
///
/// This allocates two endpoints (IN and OUT).
pub fn with_output_ep<M: RawMutex>(
builder: &mut UsbDeviceBuilder<'d, D, M>,
pub fn with_output_ep(
builder: &mut UsbDeviceBuilder<'d, D>,
state: &'d mut State<'d, IN_N, OUT_N>,
report_descriptor: &'static [u8],
request_handler: Option<&'d dyn RequestHandler>,
@ -393,9 +392,9 @@ impl<'a> Control<'a> {
}
}
fn build<'d, D: Driver<'d>, M: RawMutex>(
fn build<'d, D: Driver<'d>>(
&'d mut self,
builder: &mut UsbDeviceBuilder<'d, D, M>,
builder: &mut UsbDeviceBuilder<'d, D>,
ep_out: Option<&D::EndpointOut>,
ep_in: &D::EndpointIn,
) {