aboutsummaryrefslogtreecommitdiff
path: root/examples/nrf/src/bin
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2022-03-10 01:10:53 +0100
committerDario Nieuwenhuis <[email protected]>2022-04-06 05:38:11 +0200
commit9a6d11281d33ec687e68b9b28d8489150bafff89 (patch)
tree94dd6506caa234365f98daa7b588c6eb108b7203 /examples/nrf/src/bin
parent0320500f0f14d03aecfe3ee7482a5cf76ec8844c (diff)
Add some comments on the example.
Diffstat (limited to 'examples/nrf/src/bin')
-rw-r--r--examples/nrf/src/bin/usb/main.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/examples/nrf/src/bin/usb/main.rs b/examples/nrf/src/bin/usb/main.rs
index 014ad5c6e..ecbdc3461 100644
--- a/examples/nrf/src/bin/usb/main.rs
+++ b/examples/nrf/src/bin/usb/main.rs
@@ -34,13 +34,18 @@ async fn main(_spawner: Spawner, p: Peripherals) {
34 while !power.usbregstatus.read().vbusdetect().is_vbus_present() {} 34 while !power.usbregstatus.read().vbusdetect().is_vbus_present() {}
35 info!("vbus OK"); 35 info!("vbus OK");
36 36
37 // Create the driver, from the HAL.
37 let irq = interrupt::take!(USBD); 38 let irq = interrupt::take!(USBD);
38 let driver = Driver::new(p.USBD, irq); 39 let driver = Driver::new(p.USBD, irq);
40
41 // Create embassy-usb Config
39 let config = Config::new(0xc0de, 0xcafe); 42 let config = Config::new(0xc0de, 0xcafe);
43
44 // Create embassy-usb DeviceBuilder using the driver and config.
45 // It needs some buffers for building the descriptors.
40 let mut device_descriptor = [0; 256]; 46 let mut device_descriptor = [0; 256];
41 let mut config_descriptor = [0; 256]; 47 let mut config_descriptor = [0; 256];
42 let mut bos_descriptor = [0; 256]; 48 let mut bos_descriptor = [0; 256];
43
44 let mut builder = UsbDeviceBuilder::new( 49 let mut builder = UsbDeviceBuilder::new(
45 driver, 50 driver,
46 config, 51 config,
@@ -49,11 +54,16 @@ async fn main(_spawner: Spawner, p: Peripherals) {
49 &mut bos_descriptor, 54 &mut bos_descriptor,
50 ); 55 );
51 56
57 // Create classes on the builder.
52 let mut class = CdcAcmClass::new(&mut builder, 64); 58 let mut class = CdcAcmClass::new(&mut builder, 64);
53 59
60 // Build the builder.
54 let mut usb = builder.build(); 61 let mut usb = builder.build();
55 62
63 // Run the USB device.
56 let fut1 = usb.run(); 64 let fut1 = usb.run();
65
66 // Do stuff with the classes
57 let fut2 = async { 67 let fut2 = async {
58 let mut buf = [0; 64]; 68 let mut buf = [0; 64];
59 loop { 69 loop {
@@ -72,5 +82,7 @@ async fn main(_spawner: Spawner, p: Peripherals) {
72 } 82 }
73 }; 83 };
74 84
85 // Run everything concurrently.
86 // If we had made everything `'static` above instead, we could do this using separate tasks instead.
75 join3(fut1, fut2, fut3).await; 87 join3(fut1, fut2, fut3).await;
76} 88}