diff options
| author | Matt Ickstadt <[email protected]> | 2023-01-12 14:59:25 -0600 |
|---|---|---|
| committer | alexmoon <[email protected]> | 2023-02-07 14:24:35 -0500 |
| commit | f5ff3c4ac31c79cedf077f559dbd5685886399cc (patch) | |
| tree | 6f8b76bd443453fde4e01a8f366e45cfb9edb9da /embassy-usb/src/builder.rs | |
| parent | a7fa7d0de2fa7b8fab889879b6003df8427c6841 (diff) | |
usb: add support for MS OS Descriptors
Diffstat (limited to 'embassy-usb/src/builder.rs')
| -rw-r--r-- | embassy-usb/src/builder.rs | 15 |
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 | ||
| 135 | impl<'d, D: Driver<'d>> Builder<'d, D> { | 136 | impl<'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. |
