From 38d6500879204c9dc53acdbedfb7a931db8ae8db Mon Sep 17 00:00:00 2001 From: Lotte Steenbrink Date: Mon, 13 Jul 2020 17:02:13 +0200 Subject: [PATCH] set-address.md: SET_ADDRESS Configuration -> prose --- embedded-workshop-book/src/set-address.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/embedded-workshop-book/src/set-address.md b/embedded-workshop-book/src/set-address.md index fa40aea..b5b94a2 100644 --- a/embedded-workshop-book/src/set-address.md +++ b/embedded-workshop-book/src/set-address.md @@ -2,14 +2,21 @@ > This request should come right after the `GET_DESCRIPTOR Device` request if you're using Linux, or be the first request sent to the device by Mac OS. -Section 9.4.6, Set Address, describes how to handle this request but below you can find a summary: +A SET_ADDRESS request has the following fields as defined by Section 9.4.6 Set Address of the USB spec: + +- `bmrequesttype` is 0b00000000 +- `brequest` is SET_ADDRESS +- `wValue` contains the address to be used for all subsequent accesses +- `wIndex` and `wLength` are 0, there is no `wData` + +It should be handled as follows: - If the device is in the `Default` state, then - - if the requested address was `0` (`None` in the `usb` API) then the device should stay in the `Default` state + - if the requested address stored in `wValue` was `0` (`None` in the `usb` API) then the device should stay in the `Default` state - otherwise the device should move to the `Address` state - If the device is in the `Address` state, then - - if the requested address was `0` (`None` in the `usb` API) then the device should return to the `Default` state + - if the requested address stored in `wValue` was `0` (`None` in the `usb` API) then the device should return to the `Default` state - otherwise the device should remain in the `Address` state but start using the new address - If the device is in the `Configured` state this request results in "unspecified" behavior according to the USB specification. You should stall the endpoint in this case.