Make usb_serial examples work on windows

Windows shows `error 10` when using CDC ACM on non composite devices.
Workaround is to use IADS:
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
This commit is contained in:
Timo Kröger 2022-05-12 07:59:33 +02:00
parent 69e0f9f0fe
commit 2a7afe4262
2 changed files with 14 additions and 0 deletions

View File

@ -43,6 +43,13 @@ async fn main(_spawner: Spawner, p: Peripherals) {
config.max_power = 100; config.max_power = 100;
config.max_packet_size_0 = 64; config.max_packet_size_0 = 64;
// Required for windows compatiblity.
// https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
config.device_class = 0xEF;
config.device_sub_class = 0x02;
config.device_protocol = 0x01;
config.composite_with_iads = true;
// Create embassy-usb DeviceBuilder using the driver and config. // Create embassy-usb DeviceBuilder using the driver and config.
// It needs some buffers for building the descriptors. // It needs some buffers for building the descriptors.
let mut device_descriptor = [0; 256]; let mut device_descriptor = [0; 256];

View File

@ -60,6 +60,13 @@ async fn main(spawner: Spawner, p: Peripherals) {
config.max_power = 100; config.max_power = 100;
config.max_packet_size_0 = 64; config.max_packet_size_0 = 64;
// Required for windows compatiblity.
// https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
config.device_class = 0xEF;
config.device_sub_class = 0x02;
config.device_protocol = 0x01;
config.composite_with_iads = true;
struct Resources { struct Resources {
device_descriptor: [u8; 256], device_descriptor: [u8; 256],
config_descriptor: [u8; 256], config_descriptor: [u8; 256],