diff options
| author | alexmoon <[email protected]> | 2023-02-07 14:19:51 -0500 |
|---|---|---|
| committer | alexmoon <[email protected]> | 2023-02-07 14:24:35 -0500 |
| commit | aa21aebb0b321a2085571e5be5fffcea4703584d (patch) | |
| tree | 9b45fb26d9a32b806931fcc6d379af00f4ffec21 /examples/nrf52840/src | |
| parent | 9f9230ae7abb545822e59c6f06cabb721b63e0a1 (diff) | |
Lazily encode UTF16 values and add docs
Diffstat (limited to 'examples/nrf52840/src')
| -rw-r--r-- | examples/nrf52840/src/bin/usb_serial_winusb.rs | 25 |
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; | |||
| 7 | use defmt::{info, panic}; | 7 | use defmt::{info, panic}; |
| 8 | use embassy_executor::Spawner; | 8 | use embassy_executor::Spawner; |
| 9 | use embassy_futures::join::join; | 9 | use embassy_futures::join::join; |
| 10 | use embassy_nrf::usb::{Driver, Instance, PowerUsb, UsbSupply}; | 10 | use embassy_nrf::usb::{Driver, HardwareVbusDetect, Instance, VbusDetect}; |
| 11 | use embassy_nrf::{interrupt, pac}; | 11 | use embassy_nrf::{interrupt, pac}; |
| 12 | use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; | 12 | use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; |
| 13 | use embassy_usb::driver::EndpointError; | 13 | use embassy_usb::driver::EndpointError; |
| @@ -15,17 +15,8 @@ use embassy_usb::msos::{self, windows_version}; | |||
| 15 | use embassy_usb::{Builder, Config}; | 15 | use embassy_usb::{Builder, Config}; |
| 16 | use {defmt_rtt as _, panic_probe as _}; | 16 | use {defmt_rtt as _, panic_probe as _}; |
| 17 | 17 | ||
| 18 | const 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!) | 19 | const 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] |
| 31 | async fn main(_spawner: Spawner) { | 22 | async 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 | ||
| 129 | async fn echo<'d, T: Instance + 'd, P: UsbSupply + 'd>( | 120 | async 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]; |
