usb-hid: Simplify API.
- Renamed structs to HidReaderWriter, HidReader, HidWriter. - Removed unused const generics on `State`. - Simplified generics on `HidReaderWriter`. The class type previously was `HidClass<D, Driver<'d, USBD>, ReportReader<'d, Driver<'d, USBD>, OUT_N>, IN_N>` It's now `HidClass<D, Driver<'d, USBD>, IN_N, OUT_N>`. Note that the driver type `Driver<'d, USBD>` is no longer repeated. - Constructors are now: `HidWriter::new()` for IN-only, `HidReaderWriter::new()` for IN+OUT. No complicated bounds. - HidReaderWriter has all the methods from HidReader, HidWriter.
This commit is contained in:
@ -18,7 +18,7 @@ use embassy_nrf::usb::Driver;
|
||||
use embassy_nrf::Peripherals;
|
||||
use embassy_usb::control::OutResponse;
|
||||
use embassy_usb::{Config, DeviceStateHandler, UsbDeviceBuilder};
|
||||
use embassy_usb_hid::{HidClass, ReportId, RequestHandler, State};
|
||||
use embassy_usb_hid::{HidReaderWriter, ReportId, RequestHandler, State};
|
||||
use futures::future::join;
|
||||
use usbd_hid::descriptor::{KeyboardReport, SerializedDescriptor};
|
||||
|
||||
@ -75,7 +75,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
let request_handler = MyRequestHandler {};
|
||||
let device_state_handler = MyDeviceStateHandler::new();
|
||||
|
||||
let mut state = State::<8, 1>::new();
|
||||
let mut state = State::new();
|
||||
|
||||
let mut builder = UsbDeviceBuilder::new(
|
||||
driver,
|
||||
@ -88,7 +88,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
);
|
||||
|
||||
// Create classes on the builder.
|
||||
let hid = HidClass::with_output_ep(
|
||||
let hid = HidReaderWriter::<_, 1, 8>::new(
|
||||
&mut builder,
|
||||
&mut state,
|
||||
KeyboardReport::desc(),
|
||||
@ -135,7 +135,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
|
||||
let mut button = Input::new(p.P0_11.degrade(), Pull::Up);
|
||||
|
||||
let (mut hid_in, hid_out) = hid.split();
|
||||
let (reader, mut writer) = hid.split();
|
||||
|
||||
// Do stuff with the class!
|
||||
let in_fut = async {
|
||||
@ -153,7 +153,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
modifier: 0,
|
||||
reserved: 0,
|
||||
};
|
||||
match hid_in.serialize(&report).await {
|
||||
match writer.write_serialize(&report).await {
|
||||
Ok(()) => {}
|
||||
Err(e) => warn!("Failed to send report: {:?}", e),
|
||||
};
|
||||
@ -167,7 +167,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
modifier: 0,
|
||||
reserved: 0,
|
||||
};
|
||||
match hid_in.serialize(&report).await {
|
||||
match writer.write_serialize(&report).await {
|
||||
Ok(()) => {}
|
||||
Err(e) => warn!("Failed to send report: {:?}", e),
|
||||
};
|
||||
@ -175,7 +175,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
};
|
||||
|
||||
let out_fut = async {
|
||||
hid_out.run(false, &request_handler).await;
|
||||
reader.run(false, &request_handler).await;
|
||||
};
|
||||
|
||||
let power_irq = interrupt::take!(POWER_CLOCK);
|
||||
|
@ -13,7 +13,7 @@ use embassy_nrf::usb::Driver;
|
||||
use embassy_nrf::Peripherals;
|
||||
use embassy_usb::control::OutResponse;
|
||||
use embassy_usb::{Config, UsbDeviceBuilder};
|
||||
use embassy_usb_hid::{HidClass, ReportId, RequestHandler, State};
|
||||
use embassy_usb_hid::{HidWriter, ReportId, RequestHandler, State};
|
||||
use futures::future::join;
|
||||
use usbd_hid::descriptor::{MouseReport, SerializedDescriptor};
|
||||
|
||||
@ -52,7 +52,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
let mut control_buf = [0; 16];
|
||||
let request_handler = MyRequestHandler {};
|
||||
|
||||
let mut control = State::<5, 0>::new();
|
||||
let mut control = State::new();
|
||||
|
||||
let mut builder = UsbDeviceBuilder::new(
|
||||
driver,
|
||||
@ -65,7 +65,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
);
|
||||
|
||||
// Create classes on the builder.
|
||||
let mut hid = HidClass::new(
|
||||
let mut writer = HidWriter::<_, 5>::new(
|
||||
&mut builder,
|
||||
&mut control,
|
||||
MouseReport::desc(),
|
||||
@ -94,7 +94,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
|
||||
wheel: 0,
|
||||
pan: 0,
|
||||
};
|
||||
match hid.input().serialize(&report).await {
|
||||
match writer.write_serialize(&report).await {
|
||||
Ok(()) => {}
|
||||
Err(e) => warn!("Failed to send report: {:?}", e),
|
||||
}
|
||||
|
Reference in New Issue
Block a user