aboutsummaryrefslogtreecommitdiff
path: root/embassy-usb/src/builder.rs
diff options
context:
space:
mode:
authorMatt Ickstadt <[email protected]>2023-01-12 14:59:25 -0600
committeralexmoon <[email protected]>2023-02-07 14:24:35 -0500
commitf5ff3c4ac31c79cedf077f559dbd5685886399cc (patch)
tree6f8b76bd443453fde4e01a8f366e45cfb9edb9da /embassy-usb/src/builder.rs
parenta7fa7d0de2fa7b8fab889879b6003df8427c6841 (diff)
usb: add support for MS OS Descriptors
Diffstat (limited to 'embassy-usb/src/builder.rs')
-rw-r--r--embassy-usb/src/builder.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/embassy-usb/src/builder.rs b/embassy-usb/src/builder.rs
index 41b24fecf..2c42fd64e 100644
--- a/embassy-usb/src/builder.rs
+++ b/embassy-usb/src/builder.rs
@@ -130,6 +130,7 @@ pub struct Builder<'d, D: Driver<'d>> {
130 device_descriptor: DescriptorWriter<'d>, 130 device_descriptor: DescriptorWriter<'d>,
131 config_descriptor: DescriptorWriter<'d>, 131 config_descriptor: DescriptorWriter<'d>,
132 bos_descriptor: BosWriter<'d>, 132 bos_descriptor: BosWriter<'d>,
133 msos_descriptor: Option<crate::msos::MsOsDescriptorSet<'d>>,
133} 134}
134 135
135impl<'d, D: Driver<'d>> Builder<'d, D> { 136impl<'d, D: Driver<'d>> Builder<'d, D> {
@@ -182,6 +183,7 @@ impl<'d, D: Driver<'d>> Builder<'d, D> {
182 device_descriptor, 183 device_descriptor,
183 config_descriptor, 184 config_descriptor,
184 bos_descriptor, 185 bos_descriptor,
186 msos_descriptor: None,
185 } 187 }
186 } 188 }
187 189
@@ -199,6 +201,7 @@ impl<'d, D: Driver<'d>> Builder<'d, D> {
199 self.bos_descriptor.writer.into_buf(), 201 self.bos_descriptor.writer.into_buf(),
200 self.interfaces, 202 self.interfaces,
201 self.control_buf, 203 self.control_buf,
204 self.msos_descriptor,
202 ) 205 )
203 } 206 }
204 207
@@ -234,6 +237,18 @@ impl<'d, D: Driver<'d>> Builder<'d, D> {
234 iface_count_index, 237 iface_count_index,
235 } 238 }
236 } 239 }
240
241 /// Add an MS OS 2.0 Descriptor Set.
242 ///
243 /// Panics if called more than once.
244 pub fn msos_descriptor(&mut self, msos_descriptor: crate::msos::MsOsDescriptorSet<'d>) {
245 if self.msos_descriptor.is_some() {
246 panic!("msos_descriptor already set");
247 }
248 self.msos_descriptor
249 .insert(msos_descriptor)
250 .write_bos_capability(&mut self.bos_descriptor);
251 }
237} 252}
238 253
239/// Function builder. 254/// Function builder.