aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-usb-logger/src/lib.rs7
-rw-r--r--embassy-usb/src/builder.rs22
-rw-r--r--examples/nrf52840/src/bin/usb_ethernet.rs6
-rw-r--r--examples/nrf52840/src/bin/usb_serial.rs7
-rw-r--r--examples/nrf52840/src/bin/usb_serial_multitask.rs7
-rw-r--r--examples/nrf52840/src/bin/usb_serial_winusb.rs7
-rw-r--r--examples/rp/src/bin/pio_uart.rs7
-rw-r--r--examples/rp/src/bin/usb_ethernet.rs6
-rw-r--r--examples/rp/src/bin/usb_midi.rs7
-rw-r--r--examples/rp/src/bin/usb_raw.rs7
-rw-r--r--examples/rp/src/bin/usb_raw_bulk.rs7
-rw-r--r--examples/rp/src/bin/usb_serial.rs7
-rw-r--r--examples/rp/src/bin/usb_serial_with_logger.rs7
-rw-r--r--examples/rp23/src/bin/pio_uart.rs7
-rw-r--r--examples/stm32f4/src/bin/usb_ethernet.rs6
-rw-r--r--examples/stm32f4/src/bin/usb_hid_keyboard.rs7
-rw-r--r--examples/stm32f4/src/bin/usb_hid_mouse.rs7
-rw-r--r--examples/stm32f4/src/bin/usb_raw.rs7
-rw-r--r--examples/stm32f4/src/bin/usb_serial.rs7
-rw-r--r--examples/stm32f4/src/bin/usb_uac_speaker.rs7
-rw-r--r--examples/stm32f7/src/bin/usb_serial.rs7
-rw-r--r--examples/stm32g4/src/bin/usb_serial.rs5
-rw-r--r--examples/stm32h5/src/bin/usb_serial.rs7
-rw-r--r--examples/stm32h5/src/bin/usb_uac_speaker.rs7
-rw-r--r--examples/stm32h7/src/bin/usb_serial.rs7
-rw-r--r--examples/stm32h7rs/src/bin/usb_serial.rs6
-rw-r--r--examples/stm32l1/src/bin/usb_serial.rs5
-rw-r--r--examples/stm32l4/src/bin/usb_serial.rs7
-rw-r--r--examples/stm32l5/src/bin/usb_ethernet.rs6
-rw-r--r--examples/stm32u5/src/bin/usb_hs_serial.rs7
-rw-r--r--examples/stm32u5/src/bin/usb_serial.rs7
31 files changed, 14 insertions, 209 deletions
diff --git a/embassy-usb-logger/src/lib.rs b/embassy-usb-logger/src/lib.rs
index 29c102f10..de25abce1 100644
--- a/embassy-usb-logger/src/lib.rs
+++ b/embassy-usb-logger/src/lib.rs
@@ -102,13 +102,6 @@ impl<const N: usize, T: ReceiverHandler + Send + Sync> UsbLogger<N, T> {
102 config.max_power = 100; 102 config.max_power = 100;
103 config.max_packet_size_0 = MAX_PACKET_SIZE; 103 config.max_packet_size_0 = MAX_PACKET_SIZE;
104 104
105 // Required for windows compatiblity.
106 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
107 config.device_class = 0xEF;
108 config.device_sub_class = 0x02;
109 config.device_protocol = 0x01;
110 config.composite_with_iads = true;
111
112 let mut builder = Builder::new( 105 let mut builder = Builder::new(
113 driver, 106 driver,
114 config, 107 config,
diff --git a/embassy-usb/src/builder.rs b/embassy-usb/src/builder.rs
index 008a10f72..9a21b9a3b 100644
--- a/embassy-usb/src/builder.rs
+++ b/embassy-usb/src/builder.rs
@@ -34,17 +34,20 @@ pub struct Config<'a> {
34 /// Device class code assigned by USB.org. Set to `0xff` for vendor-specific 34 /// Device class code assigned by USB.org. Set to `0xff` for vendor-specific
35 /// devices that do not conform to any class. 35 /// devices that do not conform to any class.
36 /// 36 ///
37 /// Default: `0x00` (class code specified by interfaces) 37 /// Default: `0xEF`
38 /// See also: `composite_with_iads`
38 pub device_class: u8, 39 pub device_class: u8,
39 40
40 /// Device sub-class code. Depends on class. 41 /// Device sub-class code. Depends on class.
41 /// 42 ///
42 /// Default: `0x00` 43 /// Default: `0x02`
44 /// See also: `composite_with_iads`
43 pub device_sub_class: u8, 45 pub device_sub_class: u8,
44 46
45 /// Device protocol code. Depends on class and sub-class. 47 /// Device protocol code. Depends on class and sub-class.
46 /// 48 ///
47 /// Default: `0x00` 49 /// Default: `0x01`
50 /// See also: `composite_with_iads`
48 pub device_protocol: u8, 51 pub device_protocol: u8,
49 52
50 /// Device release version in BCD. 53 /// Device release version in BCD.
@@ -84,11 +87,14 @@ pub struct Config<'a> {
84 87
85 /// Configures the device as a composite device with interface association descriptors. 88 /// Configures the device as a composite device with interface association descriptors.
86 /// 89 ///
87 /// If set to `true`, the following fields should have the given values: 90 /// If set to `true` (default), the following fields should have the given values:
88 /// 91 ///
89 /// - `device_class` = `0xEF` 92 /// - `device_class` = `0xEF`
90 /// - `device_sub_class` = `0x02` 93 /// - `device_sub_class` = `0x02`
91 /// - `device_protocol` = `0x01` 94 /// - `device_protocol` = `0x01`
95 ///
96 /// If set to `false`, those fields must be set correctly for the classes that will be
97 /// installed on the USB device.
92 pub composite_with_iads: bool, 98 pub composite_with_iads: bool,
93 99
94 /// Whether the device has its own power source. 100 /// Whether the device has its own power source.
@@ -117,9 +123,9 @@ impl<'a> Config<'a> {
117 /// Create default configuration with the provided vid and pid values. 123 /// Create default configuration with the provided vid and pid values.
118 pub const fn new(vid: u16, pid: u16) -> Self { 124 pub const fn new(vid: u16, pid: u16) -> Self {
119 Self { 125 Self {
120 device_class: 0x00, 126 device_class: 0xEF,
121 device_sub_class: 0x00, 127 device_sub_class: 0x02,
122 device_protocol: 0x00, 128 device_protocol: 0x01,
123 max_packet_size_0: 64, 129 max_packet_size_0: 64,
124 vendor_id: vid, 130 vendor_id: vid,
125 product_id: pid, 131 product_id: pid,
@@ -130,7 +136,7 @@ impl<'a> Config<'a> {
130 serial_number: None, 136 serial_number: None,
131 self_powered: false, 137 self_powered: false,
132 supports_remote_wakeup: false, 138 supports_remote_wakeup: false,
133 composite_with_iads: false, 139 composite_with_iads: true,
134 max_power: 100, 140 max_power: 100,
135 } 141 }
136 } 142 }
diff --git a/examples/nrf52840/src/bin/usb_ethernet.rs b/examples/nrf52840/src/bin/usb_ethernet.rs
index 88314b749..49856012d 100644
--- a/examples/nrf52840/src/bin/usb_ethernet.rs
+++ b/examples/nrf52840/src/bin/usb_ethernet.rs
@@ -60,12 +60,6 @@ async fn main(spawner: Spawner) {
60 config.max_power = 100; 60 config.max_power = 100;
61 config.max_packet_size_0 = 64; 61 config.max_packet_size_0 = 64;
62 62
63 // Required for Windows support.
64 config.composite_with_iads = true;
65 config.device_class = 0xEF;
66 config.device_sub_class = 0x02;
67 config.device_protocol = 0x01;
68
69 // Create embassy-usb DeviceBuilder using the driver and config. 63 // Create embassy-usb DeviceBuilder using the driver and config.
70 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new(); 64 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new();
71 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new(); 65 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new();
diff --git a/examples/nrf52840/src/bin/usb_serial.rs b/examples/nrf52840/src/bin/usb_serial.rs
index a534046d9..8d05df791 100644
--- a/examples/nrf52840/src/bin/usb_serial.rs
+++ b/examples/nrf52840/src/bin/usb_serial.rs
@@ -36,13 +36,6 @@ async fn main(_spawner: Spawner) {
36 config.max_power = 100; 36 config.max_power = 100;
37 config.max_packet_size_0 = 64; 37 config.max_packet_size_0 = 64;
38 38
39 // Required for windows compatibility.
40 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
41 config.device_class = 0xEF;
42 config.device_sub_class = 0x02;
43 config.device_protocol = 0x01;
44 config.composite_with_iads = true;
45
46 // Create embassy-usb DeviceBuilder using the driver and config. 39 // Create embassy-usb DeviceBuilder using the driver and config.
47 // It needs some buffers for building the descriptors. 40 // It needs some buffers for building the descriptors.
48 let mut config_descriptor = [0; 256]; 41 let mut config_descriptor = [0; 256];
diff --git a/examples/nrf52840/src/bin/usb_serial_multitask.rs b/examples/nrf52840/src/bin/usb_serial_multitask.rs
index 32fc5e094..5e5b4de35 100644
--- a/examples/nrf52840/src/bin/usb_serial_multitask.rs
+++ b/examples/nrf52840/src/bin/usb_serial_multitask.rs
@@ -53,13 +53,6 @@ async fn main(spawner: Spawner) {
53 config.max_power = 100; 53 config.max_power = 100;
54 config.max_packet_size_0 = 64; 54 config.max_packet_size_0 = 64;
55 55
56 // Required for windows compatibility.
57 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
58 config.device_class = 0xEF;
59 config.device_sub_class = 0x02;
60 config.device_protocol = 0x01;
61 config.composite_with_iads = true;
62
63 static STATE: StaticCell<State> = StaticCell::new(); 56 static STATE: StaticCell<State> = StaticCell::new();
64 let state = STATE.init(State::new()); 57 let state = STATE.init(State::new());
65 58
diff --git a/examples/nrf52840/src/bin/usb_serial_winusb.rs b/examples/nrf52840/src/bin/usb_serial_winusb.rs
index 0352f9c66..8a20ce673 100644
--- a/examples/nrf52840/src/bin/usb_serial_winusb.rs
+++ b/examples/nrf52840/src/bin/usb_serial_winusb.rs
@@ -41,13 +41,6 @@ async fn main(_spawner: Spawner) {
41 config.max_power = 100; 41 config.max_power = 100;
42 config.max_packet_size_0 = 64; 42 config.max_packet_size_0 = 64;
43 43
44 // Required for windows compatibility.
45 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
46 config.device_class = 0xEF;
47 config.device_sub_class = 0x02;
48 config.device_protocol = 0x01;
49 config.composite_with_iads = true;
50
51 // Create embassy-usb DeviceBuilder using the driver and config. 44 // Create embassy-usb DeviceBuilder using the driver and config.
52 // It needs some buffers for building the descriptors. 45 // It needs some buffers for building the descriptors.
53 let mut config_descriptor = [0; 256]; 46 let mut config_descriptor = [0; 256];
diff --git a/examples/rp/src/bin/pio_uart.rs b/examples/rp/src/bin/pio_uart.rs
index aaf2a524f..485c65204 100644
--- a/examples/rp/src/bin/pio_uart.rs
+++ b/examples/rp/src/bin/pio_uart.rs
@@ -49,13 +49,6 @@ async fn main(_spawner: Spawner) {
49 config.max_power = 100; 49 config.max_power = 100;
50 config.max_packet_size_0 = 64; 50 config.max_packet_size_0 = 64;
51 51
52 // Required for windows compatibility.
53 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
54 config.device_class = 0xEF;
55 config.device_sub_class = 0x02;
56 config.device_protocol = 0x01;
57 config.composite_with_iads = true;
58
59 // Create embassy-usb DeviceBuilder using the driver and config. 52 // Create embassy-usb DeviceBuilder using the driver and config.
60 // It needs some buffers for building the descriptors. 53 // It needs some buffers for building the descriptors.
61 let mut config_descriptor = [0; 256]; 54 let mut config_descriptor = [0; 256];
diff --git a/examples/rp/src/bin/usb_ethernet.rs b/examples/rp/src/bin/usb_ethernet.rs
index 9a15125d4..2add20bc6 100644
--- a/examples/rp/src/bin/usb_ethernet.rs
+++ b/examples/rp/src/bin/usb_ethernet.rs
@@ -60,12 +60,6 @@ async fn main(spawner: Spawner) {
60 config.max_power = 100; 60 config.max_power = 100;
61 config.max_packet_size_0 = 64; 61 config.max_packet_size_0 = 64;
62 62
63 // Required for Windows support.
64 config.composite_with_iads = true;
65 config.device_class = 0xEF;
66 config.device_sub_class = 0x02;
67 config.device_protocol = 0x01;
68
69 // Create embassy-usb DeviceBuilder using the driver and config. 63 // Create embassy-usb DeviceBuilder using the driver and config.
70 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new(); 64 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new();
71 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new(); 65 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new();
diff --git a/examples/rp/src/bin/usb_midi.rs b/examples/rp/src/bin/usb_midi.rs
index 11db1b2e1..3b7910f8b 100644
--- a/examples/rp/src/bin/usb_midi.rs
+++ b/examples/rp/src/bin/usb_midi.rs
@@ -37,13 +37,6 @@ async fn main(_spawner: Spawner) {
37 config.max_power = 100; 37 config.max_power = 100;
38 config.max_packet_size_0 = 64; 38 config.max_packet_size_0 = 64;
39 39
40 // Required for windows compatibility.
41 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
42 config.device_class = 0xEF;
43 config.device_sub_class = 0x02;
44 config.device_protocol = 0x01;
45 config.composite_with_iads = true;
46
47 // Create embassy-usb DeviceBuilder using the driver and config. 40 // Create embassy-usb DeviceBuilder using the driver and config.
48 // It needs some buffers for building the descriptors. 41 // It needs some buffers for building the descriptors.
49 let mut config_descriptor = [0; 256]; 42 let mut config_descriptor = [0; 256];
diff --git a/examples/rp/src/bin/usb_raw.rs b/examples/rp/src/bin/usb_raw.rs
index 97e7e0244..5974c04c0 100644
--- a/examples/rp/src/bin/usb_raw.rs
+++ b/examples/rp/src/bin/usb_raw.rs
@@ -84,13 +84,6 @@ async fn main(_spawner: Spawner) {
84 config.max_power = 100; 84 config.max_power = 100;
85 config.max_packet_size_0 = 64; 85 config.max_packet_size_0 = 64;
86 86
87 // // Required for windows compatibility.
88 // // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
89 config.device_class = 0xEF;
90 config.device_sub_class = 0x02;
91 config.device_protocol = 0x01;
92 config.composite_with_iads = true;
93
94 // Create embassy-usb DeviceBuilder using the driver and config. 87 // Create embassy-usb DeviceBuilder using the driver and config.
95 // It needs some buffers for building the descriptors. 88 // It needs some buffers for building the descriptors.
96 let mut config_descriptor = [0; 256]; 89 let mut config_descriptor = [0; 256];
diff --git a/examples/rp/src/bin/usb_raw_bulk.rs b/examples/rp/src/bin/usb_raw_bulk.rs
index 331c3da4c..103269791 100644
--- a/examples/rp/src/bin/usb_raw_bulk.rs
+++ b/examples/rp/src/bin/usb_raw_bulk.rs
@@ -62,13 +62,6 @@ async fn main(_spawner: Spawner) {
62 config.max_power = 100; 62 config.max_power = 100;
63 config.max_packet_size_0 = 64; 63 config.max_packet_size_0 = 64;
64 64
65 // // Required for windows compatibility.
66 // // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
67 config.device_class = 0xEF;
68 config.device_sub_class = 0x02;
69 config.device_protocol = 0x01;
70 config.composite_with_iads = true;
71
72 // Create embassy-usb DeviceBuilder using the driver and config. 65 // Create embassy-usb DeviceBuilder using the driver and config.
73 // It needs some buffers for building the descriptors. 66 // It needs some buffers for building the descriptors.
74 let mut config_descriptor = [0; 256]; 67 let mut config_descriptor = [0; 256];
diff --git a/examples/rp/src/bin/usb_serial.rs b/examples/rp/src/bin/usb_serial.rs
index 4a802994a..5e3f0f378 100644
--- a/examples/rp/src/bin/usb_serial.rs
+++ b/examples/rp/src/bin/usb_serial.rs
@@ -37,13 +37,6 @@ async fn main(spawner: Spawner) {
37 config.serial_number = Some("12345678"); 37 config.serial_number = Some("12345678");
38 config.max_power = 100; 38 config.max_power = 100;
39 config.max_packet_size_0 = 64; 39 config.max_packet_size_0 = 64;
40
41 // Required for windows compatibility.
42 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
43 config.device_class = 0xEF;
44 config.device_sub_class = 0x02;
45 config.device_protocol = 0x01;
46 config.composite_with_iads = true;
47 config 40 config
48 }; 41 };
49 42
diff --git a/examples/rp/src/bin/usb_serial_with_logger.rs b/examples/rp/src/bin/usb_serial_with_logger.rs
index f9cfdef94..ea13a1e27 100644
--- a/examples/rp/src/bin/usb_serial_with_logger.rs
+++ b/examples/rp/src/bin/usb_serial_with_logger.rs
@@ -37,13 +37,6 @@ async fn main(_spawner: Spawner) {
37 config.max_power = 100; 37 config.max_power = 100;
38 config.max_packet_size_0 = 64; 38 config.max_packet_size_0 = 64;
39 39
40 // Required for windows compatibility.
41 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
42 config.device_class = 0xEF;
43 config.device_sub_class = 0x02;
44 config.device_protocol = 0x01;
45 config.composite_with_iads = true;
46
47 // Create embassy-usb DeviceBuilder using the driver and config. 40 // Create embassy-usb DeviceBuilder using the driver and config.
48 // It needs some buffers for building the descriptors. 41 // It needs some buffers for building the descriptors.
49 let mut config_descriptor = [0; 256]; 42 let mut config_descriptor = [0; 256];
diff --git a/examples/rp23/src/bin/pio_uart.rs b/examples/rp23/src/bin/pio_uart.rs
index f8398c22a..672732c5b 100644
--- a/examples/rp23/src/bin/pio_uart.rs
+++ b/examples/rp23/src/bin/pio_uart.rs
@@ -52,13 +52,6 @@ async fn main(_spawner: Spawner) {
52 config.max_power = 100; 52 config.max_power = 100;
53 config.max_packet_size_0 = 64; 53 config.max_packet_size_0 = 64;
54 54
55 // Required for windows compatibility.
56 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
57 config.device_class = 0xEF;
58 config.device_sub_class = 0x02;
59 config.device_protocol = 0x01;
60 config.composite_with_iads = true;
61
62 // Create embassy-usb DeviceBuilder using the driver and config. 55 // Create embassy-usb DeviceBuilder using the driver and config.
63 // It needs some buffers for building the descriptors. 56 // It needs some buffers for building the descriptors.
64 let mut config_descriptor = [0; 256]; 57 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32f4/src/bin/usb_ethernet.rs b/examples/stm32f4/src/bin/usb_ethernet.rs
index a9504ec04..322cb90c7 100644
--- a/examples/stm32f4/src/bin/usb_ethernet.rs
+++ b/examples/stm32f4/src/bin/usb_ethernet.rs
@@ -93,12 +93,6 @@ async fn main(spawner: Spawner) {
93 config.max_power = 100; 93 config.max_power = 100;
94 config.max_packet_size_0 = 64; 94 config.max_packet_size_0 = 64;
95 95
96 // Required for Windows support.
97 config.composite_with_iads = true;
98 config.device_class = 0xEF;
99 config.device_sub_class = 0x02;
100 config.device_protocol = 0x01;
101
102 // Create embassy-usb DeviceBuilder using the driver and config. 96 // Create embassy-usb DeviceBuilder using the driver and config.
103 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new(); 97 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new();
104 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new(); 98 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new();
diff --git a/examples/stm32f4/src/bin/usb_hid_keyboard.rs b/examples/stm32f4/src/bin/usb_hid_keyboard.rs
index 1270995c4..d6b4a9bc9 100644
--- a/examples/stm32f4/src/bin/usb_hid_keyboard.rs
+++ b/examples/stm32f4/src/bin/usb_hid_keyboard.rs
@@ -71,13 +71,6 @@ async fn main(_spawner: Spawner) {
71 config.max_power = 100; 71 config.max_power = 100;
72 config.max_packet_size_0 = 64; 72 config.max_packet_size_0 = 64;
73 73
74 // Required for windows compatibility.
75 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
76 config.device_class = 0xEF;
77 config.device_sub_class = 0x02;
78 config.device_protocol = 0x01;
79 config.composite_with_iads = true;
80
81 // Create embassy-usb DeviceBuilder using the driver and config. 74 // Create embassy-usb DeviceBuilder using the driver and config.
82 // It needs some buffers for building the descriptors. 75 // It needs some buffers for building the descriptors.
83 let mut config_descriptor = [0; 256]; 76 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32f4/src/bin/usb_hid_mouse.rs b/examples/stm32f4/src/bin/usb_hid_mouse.rs
index 45136f965..badb65e98 100644
--- a/examples/stm32f4/src/bin/usb_hid_mouse.rs
+++ b/examples/stm32f4/src/bin/usb_hid_mouse.rs
@@ -66,13 +66,6 @@ async fn main(_spawner: Spawner) {
66 config.product = Some("HID mouse example"); 66 config.product = Some("HID mouse example");
67 config.serial_number = Some("12345678"); 67 config.serial_number = Some("12345678");
68 68
69 // Required for windows compatibility.
70 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
71 config.device_class = 0xEF;
72 config.device_sub_class = 0x02;
73 config.device_protocol = 0x01;
74 config.composite_with_iads = true;
75
76 // Create embassy-usb DeviceBuilder using the driver and config. 69 // Create embassy-usb DeviceBuilder using the driver and config.
77 // It needs some buffers for building the descriptors. 70 // It needs some buffers for building the descriptors.
78 let mut config_descriptor = [0; 256]; 71 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32f4/src/bin/usb_raw.rs b/examples/stm32f4/src/bin/usb_raw.rs
index b2d706208..bbbcc082b 100644
--- a/examples/stm32f4/src/bin/usb_raw.rs
+++ b/examples/stm32f4/src/bin/usb_raw.rs
@@ -119,13 +119,6 @@ async fn main(_spawner: Spawner) {
119 config.product = Some("USB-raw example"); 119 config.product = Some("USB-raw example");
120 config.serial_number = Some("12345678"); 120 config.serial_number = Some("12345678");
121 121
122 // Required for windows compatibility.
123 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
124 config.device_class = 0xEF;
125 config.device_sub_class = 0x02;
126 config.device_protocol = 0x01;
127 config.composite_with_iads = true;
128
129 // Create embassy-usb DeviceBuilder using the driver and config. 122 // Create embassy-usb DeviceBuilder using the driver and config.
130 // It needs some buffers for building the descriptors. 123 // It needs some buffers for building the descriptors.
131 let mut config_descriptor = [0; 256]; 124 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32f4/src/bin/usb_serial.rs b/examples/stm32f4/src/bin/usb_serial.rs
index 328b5effe..e62b2d8d6 100644
--- a/examples/stm32f4/src/bin/usb_serial.rs
+++ b/examples/stm32f4/src/bin/usb_serial.rs
@@ -66,13 +66,6 @@ async fn main(_spawner: Spawner) {
66 config.product = Some("USB-serial example"); 66 config.product = Some("USB-serial example");
67 config.serial_number = Some("12345678"); 67 config.serial_number = Some("12345678");
68 68
69 // Required for windows compatibility.
70 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
71 config.device_class = 0xEF;
72 config.device_sub_class = 0x02;
73 config.device_protocol = 0x01;
74 config.composite_with_iads = true;
75
76 // Create embassy-usb DeviceBuilder using the driver and config. 69 // Create embassy-usb DeviceBuilder using the driver and config.
77 // It needs some buffers for building the descriptors. 70 // It needs some buffers for building the descriptors.
78 let mut config_descriptor = [0; 256]; 71 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32f4/src/bin/usb_uac_speaker.rs b/examples/stm32f4/src/bin/usb_uac_speaker.rs
index e22e07e63..654bec498 100644
--- a/examples/stm32f4/src/bin/usb_uac_speaker.rs
+++ b/examples/stm32f4/src/bin/usb_uac_speaker.rs
@@ -315,13 +315,6 @@ async fn main(spawner: Spawner) {
315 config.product = Some("USB-audio-speaker example"); 315 config.product = Some("USB-audio-speaker example");
316 config.serial_number = Some("12345678"); 316 config.serial_number = Some("12345678");
317 317
318 // Required for windows compatibility.
319 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
320 config.device_class = 0xEF;
321 config.device_sub_class = 0x02;
322 config.device_protocol = 0x01;
323 config.composite_with_iads = true;
324
325 let mut builder = embassy_usb::Builder::new( 318 let mut builder = embassy_usb::Builder::new(
326 usb_driver, 319 usb_driver,
327 config, 320 config,
diff --git a/examples/stm32f7/src/bin/usb_serial.rs b/examples/stm32f7/src/bin/usb_serial.rs
index 1906b28ed..349012888 100644
--- a/examples/stm32f7/src/bin/usb_serial.rs
+++ b/examples/stm32f7/src/bin/usb_serial.rs
@@ -66,13 +66,6 @@ async fn main(_spawner: Spawner) {
66 config.product = Some("USB-serial example"); 66 config.product = Some("USB-serial example");
67 config.serial_number = Some("12345678"); 67 config.serial_number = Some("12345678");
68 68
69 // Required for windows compatibility.
70 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
71 config.device_class = 0xEF;
72 config.device_sub_class = 0x02;
73 config.device_protocol = 0x01;
74 config.composite_with_iads = true;
75
76 // Create embassy-usb DeviceBuilder using the driver and config. 69 // Create embassy-usb DeviceBuilder using the driver and config.
77 // It needs some buffers for building the descriptors. 70 // It needs some buffers for building the descriptors.
78 let mut config_descriptor = [0; 256]; 71 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32g4/src/bin/usb_serial.rs b/examples/stm32g4/src/bin/usb_serial.rs
index ed2ac7fac..9f66f0c53 100644
--- a/examples/stm32g4/src/bin/usb_serial.rs
+++ b/examples/stm32g4/src/bin/usb_serial.rs
@@ -51,11 +51,6 @@ async fn main(_spawner: Spawner) {
51 config.product = Some("USB-Serial Example"); 51 config.product = Some("USB-Serial Example");
52 config.serial_number = Some("123456"); 52 config.serial_number = Some("123456");
53 53
54 config.device_class = 0xEF;
55 config.device_sub_class = 0x02;
56 config.device_protocol = 0x01;
57 config.composite_with_iads = true;
58
59 let mut config_descriptor = [0; 256]; 54 let mut config_descriptor = [0; 256];
60 let mut bos_descriptor = [0; 256]; 55 let mut bos_descriptor = [0; 256];
61 let mut control_buf = [0; 64]; 56 let mut control_buf = [0; 64];
diff --git a/examples/stm32h5/src/bin/usb_serial.rs b/examples/stm32h5/src/bin/usb_serial.rs
index fbcbdb5f9..e8f536133 100644
--- a/examples/stm32h5/src/bin/usb_serial.rs
+++ b/examples/stm32h5/src/bin/usb_serial.rs
@@ -56,13 +56,6 @@ async fn main(_spawner: Spawner) {
56 config.product = Some("USB-serial example"); 56 config.product = Some("USB-serial example");
57 config.serial_number = Some("12345678"); 57 config.serial_number = Some("12345678");
58 58
59 // Required for windows compatibility.
60 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
61 config.device_class = 0xEF;
62 config.device_sub_class = 0x02;
63 config.device_protocol = 0x01;
64 config.composite_with_iads = true;
65
66 // Create embassy-usb DeviceBuilder using the driver and config. 59 // Create embassy-usb DeviceBuilder using the driver and config.
67 // It needs some buffers for building the descriptors. 60 // It needs some buffers for building the descriptors.
68 let mut config_descriptor = [0; 256]; 61 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32h5/src/bin/usb_uac_speaker.rs b/examples/stm32h5/src/bin/usb_uac_speaker.rs
index 8c24fa916..5d007261c 100644
--- a/examples/stm32h5/src/bin/usb_uac_speaker.rs
+++ b/examples/stm32h5/src/bin/usb_uac_speaker.rs
@@ -309,13 +309,6 @@ async fn main(spawner: Spawner) {
309 config.product = Some("USB-audio-speaker example"); 309 config.product = Some("USB-audio-speaker example");
310 config.serial_number = Some("12345678"); 310 config.serial_number = Some("12345678");
311 311
312 // Required for windows compatibility.
313 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
314 config.device_class = 0xEF;
315 config.device_sub_class = 0x02;
316 config.device_protocol = 0x01;
317 config.composite_with_iads = true;
318
319 let mut builder = embassy_usb::Builder::new( 312 let mut builder = embassy_usb::Builder::new(
320 usb_driver, 313 usb_driver,
321 config, 314 config,
diff --git a/examples/stm32h7/src/bin/usb_serial.rs b/examples/stm32h7/src/bin/usb_serial.rs
index 65ae597d4..50bb964da 100644
--- a/examples/stm32h7/src/bin/usb_serial.rs
+++ b/examples/stm32h7/src/bin/usb_serial.rs
@@ -67,13 +67,6 @@ async fn main(_spawner: Spawner) {
67 config.product = Some("USB-serial example"); 67 config.product = Some("USB-serial example");
68 config.serial_number = Some("12345678"); 68 config.serial_number = Some("12345678");
69 69
70 // Required for windows compatibility.
71 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
72 config.device_class = 0xEF;
73 config.device_sub_class = 0x02;
74 config.device_protocol = 0x01;
75 config.composite_with_iads = true;
76
77 // Create embassy-usb DeviceBuilder using the driver and config. 70 // Create embassy-usb DeviceBuilder using the driver and config.
78 // It needs some buffers for building the descriptors. 71 // It needs some buffers for building the descriptors.
79 let mut config_descriptor = [0; 256]; 72 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32h7rs/src/bin/usb_serial.rs b/examples/stm32h7rs/src/bin/usb_serial.rs
index 6773f7843..56a9884af 100644
--- a/examples/stm32h7rs/src/bin/usb_serial.rs
+++ b/examples/stm32h7rs/src/bin/usb_serial.rs
@@ -70,12 +70,6 @@ async fn main(_spawner: Spawner) {
70 config.manufacturer = Some("Embassy"); 70 config.manufacturer = Some("Embassy");
71 config.product = Some("USB-serial example"); 71 config.product = Some("USB-serial example");
72 config.serial_number = Some("12345678"); 72 config.serial_number = Some("12345678");
73 // Required for windows compatibility.
74 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
75 config.device_class = 0xEF;
76 config.device_sub_class = 0x02;
77 config.device_protocol = 0x01;
78 config.composite_with_iads = true;
79 73
80 // Create embassy-usb DeviceBuilder using the driver and config. 74 // Create embassy-usb DeviceBuilder using the driver and config.
81 // It needs some buffers for building the descriptors. 75 // It needs some buffers for building the descriptors.
diff --git a/examples/stm32l1/src/bin/usb_serial.rs b/examples/stm32l1/src/bin/usb_serial.rs
index 837f7fa57..a35f1d7a7 100644
--- a/examples/stm32l1/src/bin/usb_serial.rs
+++ b/examples/stm32l1/src/bin/usb_serial.rs
@@ -41,11 +41,6 @@ async fn main(_spawner: Spawner) {
41 config.product = Some("USB-Serial Example"); 41 config.product = Some("USB-Serial Example");
42 config.serial_number = Some("123456"); 42 config.serial_number = Some("123456");
43 43
44 config.device_class = 0xEF;
45 config.device_sub_class = 0x02;
46 config.device_protocol = 0x01;
47 config.composite_with_iads = true;
48
49 let mut config_descriptor = [0; 256]; 44 let mut config_descriptor = [0; 256];
50 let mut bos_descriptor = [0; 256]; 45 let mut bos_descriptor = [0; 256];
51 let mut control_buf = [0; 64]; 46 let mut control_buf = [0; 64];
diff --git a/examples/stm32l4/src/bin/usb_serial.rs b/examples/stm32l4/src/bin/usb_serial.rs
index c3b1211d8..af90e297e 100644
--- a/examples/stm32l4/src/bin/usb_serial.rs
+++ b/examples/stm32l4/src/bin/usb_serial.rs
@@ -62,13 +62,6 @@ async fn main(_spawner: Spawner) {
62 config.product = Some("USB-serial example"); 62 config.product = Some("USB-serial example");
63 config.serial_number = Some("12345678"); 63 config.serial_number = Some("12345678");
64 64
65 // Required for windows compatibility.
66 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
67 config.device_class = 0xEF;
68 config.device_sub_class = 0x02;
69 config.device_protocol = 0x01;
70 config.composite_with_iads = true;
71
72 // Create embassy-usb DeviceBuilder using the driver and config. 65 // Create embassy-usb DeviceBuilder using the driver and config.
73 // It needs some buffers for building the descriptors. 66 // It needs some buffers for building the descriptors.
74 let mut config_descriptor = [0; 256]; 67 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32l5/src/bin/usb_ethernet.rs b/examples/stm32l5/src/bin/usb_ethernet.rs
index 095d50c73..809ec6ab1 100644
--- a/examples/stm32l5/src/bin/usb_ethernet.rs
+++ b/examples/stm32l5/src/bin/usb_ethernet.rs
@@ -72,12 +72,6 @@ async fn main(spawner: Spawner) {
72 config.max_power = 100; 72 config.max_power = 100;
73 config.max_packet_size_0 = 64; 73 config.max_packet_size_0 = 64;
74 74
75 // Required for Windows support.
76 config.composite_with_iads = true;
77 config.device_class = 0xEF;
78 config.device_sub_class = 0x02;
79 config.device_protocol = 0x01;
80
81 // Create embassy-usb DeviceBuilder using the driver and config. 75 // Create embassy-usb DeviceBuilder using the driver and config.
82 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new(); 76 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new();
83 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new(); 77 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new();
diff --git a/examples/stm32u5/src/bin/usb_hs_serial.rs b/examples/stm32u5/src/bin/usb_hs_serial.rs
index 5549e2cbb..d37e7777b 100644
--- a/examples/stm32u5/src/bin/usb_hs_serial.rs
+++ b/examples/stm32u5/src/bin/usb_hs_serial.rs
@@ -59,13 +59,6 @@ async fn main(_spawner: Spawner) {
59 config.product = Some("USB-serial example"); 59 config.product = Some("USB-serial example");
60 config.serial_number = Some("12345678"); 60 config.serial_number = Some("12345678");
61 61
62 // Required for windows compatibility.
63 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
64 config.device_class = 0xEF;
65 config.device_sub_class = 0x02;
66 config.device_protocol = 0x01;
67 config.composite_with_iads = true;
68
69 // Create embassy-usb DeviceBuilder using the driver and config. 62 // Create embassy-usb DeviceBuilder using the driver and config.
70 // It needs some buffers for building the descriptors. 63 // It needs some buffers for building the descriptors.
71 let mut config_descriptor = [0; 256]; 64 let mut config_descriptor = [0; 256];
diff --git a/examples/stm32u5/src/bin/usb_serial.rs b/examples/stm32u5/src/bin/usb_serial.rs
index 4bb1a6079..ff7f4e5be 100644
--- a/examples/stm32u5/src/bin/usb_serial.rs
+++ b/examples/stm32u5/src/bin/usb_serial.rs
@@ -56,13 +56,6 @@ async fn main(_spawner: Spawner) {
56 config.product = Some("USB-serial example"); 56 config.product = Some("USB-serial example");
57 config.serial_number = Some("12345678"); 57 config.serial_number = Some("12345678");
58 58
59 // Required for windows compatibility.
60 // https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/kconfig/CONFIG_CDC_ACM_IAD.html#help
61 config.device_class = 0xEF;
62 config.device_sub_class = 0x02;
63 config.device_protocol = 0x01;
64 config.composite_with_iads = true;
65
66 // Create embassy-usb DeviceBuilder using the driver and config. 59 // Create embassy-usb DeviceBuilder using the driver and config.
67 // It needs some buffers for building the descriptors. 60 // It needs some buffers for building the descriptors.
68 let mut config_descriptor = [0; 256]; 61 let mut config_descriptor = [0; 256];