diff options
| author | alexmoon <[email protected]> | 2022-04-02 16:35:03 -0400 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2022-04-06 05:38:11 +0200 |
| commit | 2ce435dc341c0238392df5dab5db9b80db167117 (patch) | |
| tree | 19e64218922a67601540261749af81d2d1d0aac4 /embassy-usb/src/lib.rs | |
| parent | 99f95a33c30b08359fcd72123fea01f4de0903ec (diff) | |
Add basic device state handling for endpoints.
Diffstat (limited to 'embassy-usb/src/lib.rs')
| -rw-r--r-- | embassy-usb/src/lib.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/embassy-usb/src/lib.rs b/embassy-usb/src/lib.rs index d2d3e5e0a..cf8d12539 100644 --- a/embassy-usb/src/lib.rs +++ b/embassy-usb/src/lib.rs | |||
| @@ -162,18 +162,21 @@ impl<'d, D: Driver<'d>> UsbDevice<'d, D> { | |||
| 162 | self.remote_wakeup_enabled = true; | 162 | self.remote_wakeup_enabled = true; |
| 163 | self.control.accept(stage) | 163 | self.control.accept(stage) |
| 164 | } | 164 | } |
| 165 | (Request::SET_ADDRESS, 1..=127) => { | 165 | (Request::SET_ADDRESS, addr @ 1..=127) => { |
| 166 | self.pending_address = req.value as u8; | 166 | self.pending_address = addr as u8; |
| 167 | self.bus.set_device_address(self.pending_address); | ||
| 167 | self.control.accept(stage) | 168 | self.control.accept(stage) |
| 168 | } | 169 | } |
| 169 | (Request::SET_CONFIGURATION, CONFIGURATION_VALUE_U16) => { | 170 | (Request::SET_CONFIGURATION, CONFIGURATION_VALUE_U16) => { |
| 170 | self.device_state = UsbDeviceState::Configured; | 171 | self.device_state = UsbDeviceState::Configured; |
| 172 | self.bus.set_configured(true); | ||
| 171 | self.control.accept(stage) | 173 | self.control.accept(stage) |
| 172 | } | 174 | } |
| 173 | (Request::SET_CONFIGURATION, CONFIGURATION_NONE_U16) => match self.device_state { | 175 | (Request::SET_CONFIGURATION, CONFIGURATION_NONE_U16) => match self.device_state { |
| 174 | UsbDeviceState::Default => self.control.accept(stage), | 176 | UsbDeviceState::Default => self.control.accept(stage), |
| 175 | _ => { | 177 | _ => { |
| 176 | self.device_state = UsbDeviceState::Addressed; | 178 | self.device_state = UsbDeviceState::Addressed; |
| 179 | self.bus.set_configured(false); | ||
| 177 | self.control.accept(stage) | 180 | self.control.accept(stage) |
| 178 | } | 181 | } |
| 179 | }, | 182 | }, |
