usb: Use enumerated return codes

The enum usbd_request_return_codes has been available for some time.  It
should be used internally, not just by users of this code.
This commit is contained in:
Karl Palsson 2015-05-27 03:49:51 +05:30
parent 93cf76b9d1
commit 54b117c5a5
5 changed files with 95 additions and 75 deletions

View File

@ -107,7 +107,8 @@ extern void usbd_register_sof_callback(usbd_device *usbd_dev,
typedef void (*usbd_control_complete_callback)(usbd_device *usbd_dev, typedef void (*usbd_control_complete_callback)(usbd_device *usbd_dev,
struct usb_setup_data *req); struct usb_setup_data *req);
typedef int (*usbd_control_callback)(usbd_device *usbd_dev, typedef enum usbd_request_return_codes (*usbd_control_callback)(
usbd_device *usbd_dev,
struct usb_setup_data *req, uint8_t **buf, uint16_t *len, struct usb_setup_data *req, uint8_t **buf, uint16_t *len,
usbd_control_complete_callback *complete); usbd_control_complete_callback *complete);

View File

@ -138,8 +138,9 @@ static int usb_control_recv_chunk(usbd_device *usbd_dev)
return packetsize; return packetsize;
} }
static int usb_control_request_dispatch(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req) usb_control_request_dispatch(usbd_device *usbd_dev,
struct usb_setup_data *req)
{ {
int i, result = 0; int i, result = 0;
struct user_control_callback *cb = usbd_dev->user_control_callback; struct user_control_callback *cb = usbd_dev->user_control_callback;

View File

@ -733,10 +733,10 @@ static void msc_data_tx_cb(usbd_device *usbd_dev, uint8_t ep)
/** @brief Handle various control requests related to the msc storage /** @brief Handle various control requests related to the msc storage
* interface. * interface.
*/ */
static int msc_control_request(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, uint8_t **buf, msc_control_request(usbd_device *usbd_dev,
uint16_t *len, struct usb_setup_data *req, uint8_t **buf, uint16_t *len,
usbd_control_complete_callback *complete) usbd_control_complete_callback *complete)
{ {
(void)complete; (void)complete;
(void)usbd_dev; (void)usbd_dev;

View File

@ -123,16 +123,16 @@ void _usbd_control_in(usbd_device *usbd_dev, uint8_t ea);
void _usbd_control_out(usbd_device *usbd_dev, uint8_t ea); void _usbd_control_out(usbd_device *usbd_dev, uint8_t ea);
void _usbd_control_setup(usbd_device *usbd_dev, uint8_t ea); void _usbd_control_setup(usbd_device *usbd_dev, uint8_t ea);
int _usbd_standard_request_device(usbd_device *usbd_dev, enum usbd_request_return_codes _usbd_standard_request_device(usbd_device *usbd_dev,
struct usb_setup_data *req, uint8_t **buf, struct usb_setup_data *req, uint8_t **buf,
uint16_t *len); uint16_t *len);
int _usbd_standard_request_interface(usbd_device *usbd_dev, enum usbd_request_return_codes _usbd_standard_request_interface(usbd_device *usbd_dev,
struct usb_setup_data *req, uint8_t **buf, struct usb_setup_data *req, uint8_t **buf,
uint16_t *len); uint16_t *len);
int _usbd_standard_request_endpoint(usbd_device *usbd_dev, enum usbd_request_return_codes _usbd_standard_request_endpoint(usbd_device *usbd_dev,
struct usb_setup_data *req, uint8_t **buf, struct usb_setup_data *req, uint8_t **buf,
uint16_t *len); uint16_t *len);
int _usbd_standard_request(usbd_device *usbd_dev, struct usb_setup_data *req, enum usbd_request_return_codes _usbd_standard_request(usbd_device *usbd_dev, struct usb_setup_data *req,
uint8_t **buf, uint16_t *len); uint8_t **buf, uint16_t *len);
void _usbd_reset(usbd_device *usbd_dev); void _usbd_reset(usbd_device *usbd_dev);

View File

@ -146,9 +146,10 @@ static int usb_descriptor_index(uint16_t wValue)
return wValue & 0xFF; return wValue & 0xFF;
} }
static int usb_standard_get_descriptor(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_get_descriptor(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
int i, array_idx, descr_idx; int i, array_idx, descr_idx;
struct usb_string_descriptor *sd; struct usb_string_descriptor *sd;
@ -217,9 +218,10 @@ static int usb_standard_get_descriptor(usbd_device *usbd_dev,
return USBD_REQ_NOTSUPP; return USBD_REQ_NOTSUPP;
} }
static int usb_standard_set_address(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, uint8_t **buf, usb_standard_set_address(usbd_device *usbd_dev,
uint16_t *len) struct usb_setup_data *req, uint8_t **buf,
uint16_t *len)
{ {
(void)req; (void)req;
(void)buf; (void)buf;
@ -227,7 +229,7 @@ static int usb_standard_set_address(usbd_device *usbd_dev,
/* The actual address is only latched at the STATUS IN stage. */ /* The actual address is only latched at the STATUS IN stage. */
if ((req->bmRequestType != 0) || (req->wValue >= 128)) { if ((req->bmRequestType != 0) || (req->wValue >= 128)) {
return 0; return USBD_REQ_NOTSUPP;
} }
usbd_dev->current_address = req->wValue; usbd_dev->current_address = req->wValue;
@ -240,12 +242,13 @@ static int usb_standard_set_address(usbd_device *usbd_dev,
usbd_dev->driver->set_address(usbd_dev, req->wValue); usbd_dev->driver->set_address(usbd_dev, req->wValue);
} }
return 1; return USBD_REQ_HANDLED;
} }
static int usb_standard_set_configuration(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_set_configuration(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
unsigned i; unsigned i;
int found_index = -1; int found_index = -1;
@ -301,12 +304,13 @@ static int usb_standard_set_configuration(usbd_device *usbd_dev,
} }
} }
return 1; return USBD_REQ_HANDLED;
} }
static int usb_standard_get_configuration(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_get_configuration(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
(void)req; (void)req;
@ -321,12 +325,13 @@ static int usb_standard_get_configuration(usbd_device *usbd_dev,
(*buf)[0] = 0; (*buf)[0] = 0;
} }
return 1; return USBD_REQ_HANDLED;
} }
static int usb_standard_set_interface(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_set_interface(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
const struct usb_config_descriptor *cfx = const struct usb_config_descriptor *cfx =
&usbd_dev->config[usbd_dev->current_config - 1]; &usbd_dev->config[usbd_dev->current_config - 1];
@ -361,9 +366,10 @@ static int usb_standard_set_interface(usbd_device *usbd_dev,
return USBD_REQ_HANDLED; return USBD_REQ_HANDLED;
} }
static int usb_standard_get_interface(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_get_interface(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
uint8_t *cur_altsetting; uint8_t *cur_altsetting;
const struct usb_config_descriptor *cfx = const struct usb_config_descriptor *cfx =
@ -380,9 +386,10 @@ static int usb_standard_get_interface(usbd_device *usbd_dev,
return USBD_REQ_HANDLED; return USBD_REQ_HANDLED;
} }
static int usb_standard_device_get_status(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_device_get_status(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
(void)usbd_dev; (void)usbd_dev;
(void)req; (void)req;
@ -395,12 +402,13 @@ static int usb_standard_device_get_status(usbd_device *usbd_dev,
(*buf)[0] = 0; (*buf)[0] = 0;
(*buf)[1] = 0; (*buf)[1] = 0;
return 1; return USBD_REQ_HANDLED;
} }
static int usb_standard_interface_get_status(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_interface_get_status(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
(void)usbd_dev; (void)usbd_dev;
(void)req; (void)req;
@ -412,12 +420,13 @@ static int usb_standard_interface_get_status(usbd_device *usbd_dev,
(*buf)[0] = 0; (*buf)[0] = 0;
(*buf)[1] = 0; (*buf)[1] = 0;
return 1; return USBD_REQ_HANDLED;
} }
static int usb_standard_endpoint_get_status(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_endpoint_get_status(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
(void)req; (void)req;
@ -427,42 +436,46 @@ static int usb_standard_endpoint_get_status(usbd_device *usbd_dev,
(*buf)[0] = usbd_ep_stall_get(usbd_dev, req->wIndex) ? 1 : 0; (*buf)[0] = usbd_ep_stall_get(usbd_dev, req->wIndex) ? 1 : 0;
(*buf)[1] = 0; (*buf)[1] = 0;
return 1; return USBD_REQ_HANDLED;
} }
static int usb_standard_endpoint_stall(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_endpoint_stall(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
(void)buf; (void)buf;
(void)len; (void)len;
usbd_ep_stall_set(usbd_dev, req->wIndex, 1); usbd_ep_stall_set(usbd_dev, req->wIndex, 1);
return 1; return USBD_REQ_HANDLED;
} }
static int usb_standard_endpoint_unstall(usbd_device *usbd_dev, static enum usbd_request_return_codes
struct usb_setup_data *req, usb_standard_endpoint_unstall(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
(void)buf; (void)buf;
(void)len; (void)len;
usbd_ep_stall_set(usbd_dev, req->wIndex, 0); usbd_ep_stall_set(usbd_dev, req->wIndex, 0);
return 1; return USBD_REQ_HANDLED;
} }
/* Do not appear to belong to the API, so are omitted from docs */ /* Do not appear to belong to the API, so are omitted from docs */
/**@}*/ /**@}*/
int _usbd_standard_request_device(usbd_device *usbd_dev, enum usbd_request_return_codes
struct usb_setup_data *req, uint8_t **buf, _usbd_standard_request_device(usbd_device *usbd_dev,
uint16_t *len) struct usb_setup_data *req, uint8_t **buf,
uint16_t *len)
{ {
int (*command)(usbd_device *usbd_dev, struct usb_setup_data *req, enum usbd_request_return_codes (*command)(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) = NULL; struct usb_setup_data *req,
uint8_t **buf, uint16_t *len) = NULL;
switch (req->bRequest) { switch (req->bRequest) {
case USB_REQ_CLEAR_FEATURE: case USB_REQ_CLEAR_FEATURE:
@ -505,18 +518,20 @@ int _usbd_standard_request_device(usbd_device *usbd_dev,
} }
if (!command) { if (!command) {
return 0; return USBD_REQ_NOTSUPP;
} }
return command(usbd_dev, req, buf, len); return command(usbd_dev, req, buf, len);
} }
int _usbd_standard_request_interface(usbd_device *usbd_dev, enum usbd_request_return_codes
struct usb_setup_data *req, uint8_t **buf, _usbd_standard_request_interface(usbd_device *usbd_dev,
uint16_t *len) struct usb_setup_data *req, uint8_t **buf,
uint16_t *len)
{ {
int (*command)(usbd_device *usbd_dev, struct usb_setup_data *req, enum usbd_request_return_codes (*command)(usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) = NULL; struct usb_setup_data *req,
uint8_t **buf, uint16_t *len) = NULL;
switch (req->bRequest) { switch (req->bRequest) {
case USB_REQ_CLEAR_FEATURE: case USB_REQ_CLEAR_FEATURE:
@ -535,18 +550,20 @@ int _usbd_standard_request_interface(usbd_device *usbd_dev,
} }
if (!command) { if (!command) {
return 0; return USBD_REQ_NOTSUPP;
} }
return command(usbd_dev, req, buf, len); return command(usbd_dev, req, buf, len);
} }
int _usbd_standard_request_endpoint(usbd_device *usbd_dev, enum usbd_request_return_codes
struct usb_setup_data *req, uint8_t **buf, _usbd_standard_request_endpoint(usbd_device *usbd_dev,
uint16_t *len) struct usb_setup_data *req, uint8_t **buf,
uint16_t *len)
{ {
int (*command) (usbd_device *usbd_dev, struct usb_setup_data *req, enum usbd_request_return_codes (*command) (usbd_device *usbd_dev,
uint8_t **buf, uint16_t *len) = NULL; struct usb_setup_data *req,
uint8_t **buf, uint16_t *len) = NULL;
switch (req->bRequest) { switch (req->bRequest) {
case USB_REQ_CLEAR_FEATURE: case USB_REQ_CLEAR_FEATURE:
@ -572,18 +589,19 @@ int _usbd_standard_request_endpoint(usbd_device *usbd_dev,
} }
if (!command) { if (!command) {
return 0; return USBD_REQ_NOTSUPP;
} }
return command(usbd_dev, req, buf, len); return command(usbd_dev, req, buf, len);
} }
int _usbd_standard_request(usbd_device *usbd_dev, struct usb_setup_data *req, enum usbd_request_return_codes
uint8_t **buf, uint16_t *len) _usbd_standard_request(usbd_device *usbd_dev, struct usb_setup_data *req,
uint8_t **buf, uint16_t *len)
{ {
/* FIXME: Have class/vendor requests as well. */ /* FIXME: Have class/vendor requests as well. */
if ((req->bmRequestType & USB_REQ_TYPE_TYPE) != USB_REQ_TYPE_STANDARD) { if ((req->bmRequestType & USB_REQ_TYPE_TYPE) != USB_REQ_TYPE_STANDARD) {
return 0; return USBD_REQ_NOTSUPP;
} }
switch (req->bmRequestType & USB_REQ_TYPE_RECIPIENT) { switch (req->bmRequestType & USB_REQ_TYPE_RECIPIENT) {
@ -595,7 +613,7 @@ int _usbd_standard_request(usbd_device *usbd_dev, struct usb_setup_data *req,
case USB_REQ_TYPE_ENDPOINT: case USB_REQ_TYPE_ENDPOINT:
return _usbd_standard_request_endpoint(usbd_dev, req, buf, len); return _usbd_standard_request_endpoint(usbd_dev, req, buf, len);
default: default:
return 0; return USBD_REQ_NOTSUPP;
} }
} }