aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-04-16 01:55:21 +0000
committerGitHub <[email protected]>2022-04-16 01:55:21 +0000
commit1c9adec3c59da48f8084c29b4ece083100a703e3 (patch)
tree848a28f4a2dfcad860073360c36f0e4ad7a52088 /examples
parent3a90a8eb4a5ef61aef034025ac882255c94260dc (diff)
parentf35bde684acb736fd4d5b709833b8c2a47146fa8 (diff)
Merge #721
721: USB HID: simplify API r=Dirbaio a=Dirbaio Following the discussion from #720 and [matrix](https://matrix.to/#/!YoLPkieCYHGzdjUhOK:matrix.org/$PcPr8E_JbodEPuUUKI2PzIC9sx7nF3y0kV2T5O4UWj8?via=matrix.org&via=converser.eu&via=braun-odw.eu), this is a second take on simplifying the HID API. Split into a separate PR so it can be reviewed separately. See individual commit messages for details. cc `@alexmoon` Co-authored-by: Dario Nieuwenhuis <[email protected]>
Diffstat (limited to 'examples')
-rw-r--r--examples/nrf/src/bin/usb_hid_keyboard.rs27
-rw-r--r--examples/nrf/src/bin/usb_hid_mouse.rs22
2 files changed, 24 insertions, 25 deletions
diff --git a/examples/nrf/src/bin/usb_hid_keyboard.rs b/examples/nrf/src/bin/usb_hid_keyboard.rs
index 5f03f5126..a2d78b08e 100644
--- a/examples/nrf/src/bin/usb_hid_keyboard.rs
+++ b/examples/nrf/src/bin/usb_hid_keyboard.rs
@@ -18,7 +18,7 @@ use embassy_nrf::usb::Driver;
18use embassy_nrf::Peripherals; 18use embassy_nrf::Peripherals;
19use embassy_usb::control::OutResponse; 19use embassy_usb::control::OutResponse;
20use embassy_usb::{Config, DeviceStateHandler, UsbDeviceBuilder}; 20use embassy_usb::{Config, DeviceStateHandler, UsbDeviceBuilder};
21use embassy_usb_hid::{HidClass, ReportId, RequestHandler, State}; 21use embassy_usb_hid::{HidReaderWriter, ReportId, RequestHandler, State};
22use futures::future::join; 22use futures::future::join;
23use usbd_hid::descriptor::{KeyboardReport, SerializedDescriptor}; 23use usbd_hid::descriptor::{KeyboardReport, SerializedDescriptor};
24 24
@@ -75,7 +75,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
75 let request_handler = MyRequestHandler {}; 75 let request_handler = MyRequestHandler {};
76 let device_state_handler = MyDeviceStateHandler::new(); 76 let device_state_handler = MyDeviceStateHandler::new();
77 77
78 let mut state = State::<8, 1>::new(); 78 let mut state = State::new();
79 79
80 let mut builder = UsbDeviceBuilder::new( 80 let mut builder = UsbDeviceBuilder::new(
81 driver, 81 driver,
@@ -88,14 +88,13 @@ async fn main(_spawner: Spawner, p: Peripherals) {
88 ); 88 );
89 89
90 // Create classes on the builder. 90 // Create classes on the builder.
91 let hid = HidClass::with_output_ep( 91 let config = embassy_usb_hid::Config {
92 &mut builder, 92 report_descriptor: KeyboardReport::desc(),
93 &mut state, 93 request_handler: Some(&request_handler),
94 KeyboardReport::desc(), 94 poll_ms: 60,
95 Some(&request_handler), 95 max_packet_size: 64,
96 60, 96 };
97 64, 97 let hid = HidReaderWriter::<_, 1, 8>::new(&mut builder, &mut state, config);
98 );
99 98
100 // Build the builder. 99 // Build the builder.
101 let mut usb = builder.build(); 100 let mut usb = builder.build();
@@ -135,7 +134,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
135 134
136 let mut button = Input::new(p.P0_11.degrade(), Pull::Up); 135 let mut button = Input::new(p.P0_11.degrade(), Pull::Up);
137 136
138 let (mut hid_in, hid_out) = hid.split(); 137 let (reader, mut writer) = hid.split();
139 138
140 // Do stuff with the class! 139 // Do stuff with the class!
141 let in_fut = async { 140 let in_fut = async {
@@ -153,7 +152,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
153 modifier: 0, 152 modifier: 0,
154 reserved: 0, 153 reserved: 0,
155 }; 154 };
156 match hid_in.serialize(&report).await { 155 match writer.write_serialize(&report).await {
157 Ok(()) => {} 156 Ok(()) => {}
158 Err(e) => warn!("Failed to send report: {:?}", e), 157 Err(e) => warn!("Failed to send report: {:?}", e),
159 }; 158 };
@@ -167,7 +166,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
167 modifier: 0, 166 modifier: 0,
168 reserved: 0, 167 reserved: 0,
169 }; 168 };
170 match hid_in.serialize(&report).await { 169 match writer.write_serialize(&report).await {
171 Ok(()) => {} 170 Ok(()) => {}
172 Err(e) => warn!("Failed to send report: {:?}", e), 171 Err(e) => warn!("Failed to send report: {:?}", e),
173 }; 172 };
@@ -175,7 +174,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
175 }; 174 };
176 175
177 let out_fut = async { 176 let out_fut = async {
178 hid_out.run(false, &request_handler).await; 177 reader.run(false, &request_handler).await;
179 }; 178 };
180 179
181 let power_irq = interrupt::take!(POWER_CLOCK); 180 let power_irq = interrupt::take!(POWER_CLOCK);
diff --git a/examples/nrf/src/bin/usb_hid_mouse.rs b/examples/nrf/src/bin/usb_hid_mouse.rs
index fe27e76fb..1e98dd1ae 100644
--- a/examples/nrf/src/bin/usb_hid_mouse.rs
+++ b/examples/nrf/src/bin/usb_hid_mouse.rs
@@ -13,7 +13,7 @@ use embassy_nrf::usb::Driver;
13use embassy_nrf::Peripherals; 13use embassy_nrf::Peripherals;
14use embassy_usb::control::OutResponse; 14use embassy_usb::control::OutResponse;
15use embassy_usb::{Config, UsbDeviceBuilder}; 15use embassy_usb::{Config, UsbDeviceBuilder};
16use embassy_usb_hid::{HidClass, ReportId, RequestHandler, State}; 16use embassy_usb_hid::{HidWriter, ReportId, RequestHandler, State};
17use futures::future::join; 17use futures::future::join;
18use usbd_hid::descriptor::{MouseReport, SerializedDescriptor}; 18use usbd_hid::descriptor::{MouseReport, SerializedDescriptor};
19 19
@@ -52,7 +52,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
52 let mut control_buf = [0; 16]; 52 let mut control_buf = [0; 16];
53 let request_handler = MyRequestHandler {}; 53 let request_handler = MyRequestHandler {};
54 54
55 let mut control = State::<5, 0>::new(); 55 let mut state = State::new();
56 56
57 let mut builder = UsbDeviceBuilder::new( 57 let mut builder = UsbDeviceBuilder::new(
58 driver, 58 driver,
@@ -65,14 +65,14 @@ async fn main(_spawner: Spawner, p: Peripherals) {
65 ); 65 );
66 66
67 // Create classes on the builder. 67 // Create classes on the builder.
68 let mut hid = HidClass::new( 68 let config = embassy_usb_hid::Config {
69 &mut builder, 69 report_descriptor: MouseReport::desc(),
70 &mut control, 70 request_handler: Some(&request_handler),
71 MouseReport::desc(), 71 poll_ms: 60,
72 Some(&request_handler), 72 max_packet_size: 8,
73 60, 73 };
74 8, 74
75 ); 75 let mut writer = HidWriter::<_, 5>::new(&mut builder, &mut state, config);
76 76
77 // Build the builder. 77 // Build the builder.
78 let mut usb = builder.build(); 78 let mut usb = builder.build();
@@ -94,7 +94,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
94 wheel: 0, 94 wheel: 0,
95 pan: 0, 95 pan: 0,
96 }; 96 };
97 match hid.input().serialize(&report).await { 97 match writer.write_serialize(&report).await {
98 Ok(()) => {} 98 Ok(()) => {}
99 Err(e) => warn!("Failed to send report: {:?}", e), 99 Err(e) => warn!("Failed to send report: {:?}", e),
100 } 100 }