aboutsummaryrefslogtreecommitdiff
path: root/examples/nrf52840/src
diff options
context:
space:
mode:
authoralexmoon <[email protected]>2023-02-07 14:19:51 -0500
committeralexmoon <[email protected]>2023-02-07 14:24:35 -0500
commitaa21aebb0b321a2085571e5be5fffcea4703584d (patch)
tree9b45fb26d9a32b806931fcc6d379af00f4ffec21 /examples/nrf52840/src
parent9f9230ae7abb545822e59c6f06cabb721b63e0a1 (diff)
Lazily encode UTF16 values and add docs
Diffstat (limited to 'examples/nrf52840/src')
-rw-r--r--examples/nrf52840/src/bin/usb_serial_winusb.rs25
1 files changed, 8 insertions, 17 deletions
diff --git a/examples/nrf52840/src/bin/usb_serial_winusb.rs b/examples/nrf52840/src/bin/usb_serial_winusb.rs
index 443379a07..f4b828de6 100644
--- a/examples/nrf52840/src/bin/usb_serial_winusb.rs
+++ b/examples/nrf52840/src/bin/usb_serial_winusb.rs
@@ -7,7 +7,7 @@ use core::mem;
7use defmt::{info, panic}; 7use defmt::{info, panic};
8use embassy_executor::Spawner; 8use embassy_executor::Spawner;
9use embassy_futures::join::join; 9use embassy_futures::join::join;
10use embassy_nrf::usb::{Driver, Instance, PowerUsb, UsbSupply}; 10use embassy_nrf::usb::{Driver, HardwareVbusDetect, Instance, VbusDetect};
11use embassy_nrf::{interrupt, pac}; 11use embassy_nrf::{interrupt, pac};
12use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; 12use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
13use embassy_usb::driver::EndpointError; 13use embassy_usb::driver::EndpointError;
@@ -15,17 +15,8 @@ use embassy_usb::msos::{self, windows_version};
15use embassy_usb::{Builder, Config}; 15use embassy_usb::{Builder, Config};
16use {defmt_rtt as _, panic_probe as _}; 16use {defmt_rtt as _, panic_probe as _};
17 17
18const DEVICE_INTERFACE_GUIDS: &[u16] = { 18// This is a randomly generated GUID to allow clients on Windows to find our device
19 // Can't use defmt::panic in constant expressions (inside u16str!) 19const DEVICE_INTERFACE_GUIDS: &[&str] = &["{EAA9A5DC-30BA-44BC-9232-606CDC875321}"];
20 macro_rules! panic {
21 ($($x:tt)*) => {
22 {
23 ::core::panic!($($x)*);
24 }
25 };
26 }
27 msos::u16str!("{EAA9A5DC-30BA-44BC-9232-606CDC875321}\0\0").as_slice()
28};
29 20
30#[embassy_executor::main] 21#[embassy_executor::main]
31async fn main(_spawner: Spawner) { 22async fn main(_spawner: Spawner) {
@@ -39,7 +30,7 @@ async fn main(_spawner: Spawner) {
39 // Create the driver, from the HAL. 30 // Create the driver, from the HAL.
40 let irq = interrupt::take!(USBD); 31 let irq = interrupt::take!(USBD);
41 let power_irq = interrupt::take!(POWER_CLOCK); 32 let power_irq = interrupt::take!(POWER_CLOCK);
42 let driver = Driver::new(p.USBD, irq, PowerUsb::new(power_irq)); 33 let driver = Driver::new(p.USBD, irq, HardwareVbusDetect::new(power_irq));
43 34
44 // Create embassy-usb Config 35 // Create embassy-usb Config
45 let mut config = Config::new(0xc0de, 0xcafe); 36 let mut config = Config::new(0xc0de, 0xcafe);
@@ -89,9 +80,9 @@ async fn main(_spawner: Spawner) {
89 msos_writer.configuration(0); 80 msos_writer.configuration(0);
90 msos_writer.function(0); 81 msos_writer.function(0);
91 msos_writer.function_feature(msos::CompatibleIdFeatureDescriptor::new("WINUSB", "")); 82 msos_writer.function_feature(msos::CompatibleIdFeatureDescriptor::new("WINUSB", ""));
92 msos_writer.function_feature(msos::RegistryPropertyFeatureDescriptor::new_multi_string( 83 msos_writer.function_feature(msos::RegistryPropertyFeatureDescriptor::new(
93 msos::RegistryPropertyFeatureDescriptor::DEVICE_INTERFACE_GUIDS_NAME, 84 "DeviceInterfaceGUIDs",
94 DEVICE_INTERFACE_GUIDS, 85 msos::PropertyData::RegMultiSz(DEVICE_INTERFACE_GUIDS),
95 )); 86 ));
96 87
97 // Build the builder. 88 // Build the builder.
@@ -126,7 +117,7 @@ impl From<EndpointError> for Disconnected {
126 } 117 }
127} 118}
128 119
129async fn echo<'d, T: Instance + 'd, P: UsbSupply + 'd>( 120async fn echo<'d, T: Instance + 'd, P: VbusDetect + 'd>(
130 class: &mut CdcAcmClass<'d, Driver<'d, T, P>>, 121 class: &mut CdcAcmClass<'d, Driver<'d, T, P>>,
131) -> Result<(), Disconnected> { 122) -> Result<(), Disconnected> {
132 let mut buf = [0; 64]; 123 let mut buf = [0; 64];