aboutsummaryrefslogtreecommitdiff
path: root/embassy-usb/src/lib.rs
diff options
context:
space:
mode:
authoralexmoon <[email protected]>2022-04-02 16:35:03 -0400
committerDario Nieuwenhuis <[email protected]>2022-04-06 05:38:11 +0200
commit2ce435dc341c0238392df5dab5db9b80db167117 (patch)
tree19e64218922a67601540261749af81d2d1d0aac4 /embassy-usb/src/lib.rs
parent99f95a33c30b08359fcd72123fea01f4de0903ec (diff)
Add basic device state handling for endpoints.
Diffstat (limited to 'embassy-usb/src/lib.rs')
-rw-r--r--embassy-usb/src/lib.rs7
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 },