Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/thirdpin/libopencm3.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib/usb
diff options
context:
space:
mode:
authorKarl Palsson <karlp@tweak.net.au>2015-05-27 01:19:51 +0300
committerKarl Palsson <karlp@tweak.net.au>2018-03-03 01:42:05 +0300
commit54b117c5a5767df8dc114612dfd8e8cb88b72c6b (patch)
treed6ea0a84899171e15a504c1ea1c309f6bd1c4469 /lib/usb
parent93cf76b9d1b96f66b3e05089a758484c22880155 (diff)
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.
Diffstat (limited to 'lib/usb')
-rw-r--r--lib/usb/usb_control.c5
-rw-r--r--lib/usb/usb_msc.c8
-rw-r--r--lib/usb/usb_private.h8
-rw-r--r--lib/usb/usb_standard.c146
4 files changed, 93 insertions, 74 deletions
diff --git a/lib/usb/usb_control.c b/lib/usb/usb_control.c
index 5bd45a35..dce1530f 100644
--- a/lib/usb/usb_control.c
+++ b/lib/usb/usb_control.c
@@ -138,8 +138,9 @@ static int usb_control_recv_chunk(usbd_device *usbd_dev)
return packetsize;
}
-static int usb_control_request_dispatch(usbd_device *usbd_dev,
- struct usb_setup_data *req)
+static enum usbd_request_return_codes
+usb_control_request_dispatch(usbd_device *usbd_dev,
+ struct usb_setup_data *req)
{
int i, result = 0;
struct user_control_callback *cb = usbd_dev->user_control_callback;
diff --git a/lib/usb/usb_msc.c b/lib/usb/usb_msc.c
index 0b8c6133..e26017a5 100644
--- a/lib/usb/usb_msc.c
+++ b/lib/usb/usb_msc.c
@@ -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
* interface.
*/
-static int msc_control_request(usbd_device *usbd_dev,
- struct usb_setup_data *req, uint8_t **buf,
- uint16_t *len,
- usbd_control_complete_callback *complete)
+static enum usbd_request_return_codes
+msc_control_request(usbd_device *usbd_dev,
+ struct usb_setup_data *req, uint8_t **buf, uint16_t *len,
+ usbd_control_complete_callback *complete)
{
(void)complete;
(void)usbd_dev;
diff --git a/lib/usb/usb_private.h b/lib/usb/usb_private.h
index 4a3b9e0b..bec2280a 100644
--- a/lib/usb/usb_private.h
+++ b/lib/usb/usb_private.h
@@ -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_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,
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,
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,
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);
void _usbd_reset(usbd_device *usbd_dev);
diff --git a/lib/usb/usb_standard.c b/lib/usb/usb_standard.c
index d927942f..fbe89d05 100644
--- a/lib/usb/usb_standard.c
+++ b/lib/usb/usb_standard.c
@@ -146,9 +146,10 @@ static int usb_descriptor_index(uint16_t wValue)
return wValue & 0xFF;
}
-static int usb_standard_get_descriptor(usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_get_descriptor(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
int i, array_idx, descr_idx;
struct usb_string_descriptor *sd;
@@ -217,9 +218,10 @@ static int usb_standard_get_descriptor(usbd_device *usbd_dev,
return USBD_REQ_NOTSUPP;
}
-static int usb_standard_set_address(usbd_device *usbd_dev,
- struct usb_setup_data *req, uint8_t **buf,
- uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_set_address(usbd_device *usbd_dev,
+ struct usb_setup_data *req, uint8_t **buf,
+ uint16_t *len)
{
(void)req;
(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. */
if ((req->bmRequestType != 0) || (req->wValue >= 128)) {
- return 0;
+ return USBD_REQ_NOTSUPP;
}
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);
}
- return 1;
+ return USBD_REQ_HANDLED;
}
-static int usb_standard_set_configuration(usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_set_configuration(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
unsigned i;
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,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_get_configuration(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
(void)req;
@@ -321,12 +325,13 @@ static int usb_standard_get_configuration(usbd_device *usbd_dev,
(*buf)[0] = 0;
}
- return 1;
+ return USBD_REQ_HANDLED;
}
-static int usb_standard_set_interface(usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_set_interface(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
const struct usb_config_descriptor *cfx =
&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;
}
-static int usb_standard_get_interface(usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_get_interface(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
uint8_t *cur_altsetting;
const struct usb_config_descriptor *cfx =
@@ -380,9 +386,10 @@ static int usb_standard_get_interface(usbd_device *usbd_dev,
return USBD_REQ_HANDLED;
}
-static int usb_standard_device_get_status(usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_device_get_status(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
(void)usbd_dev;
(void)req;
@@ -395,12 +402,13 @@ static int usb_standard_device_get_status(usbd_device *usbd_dev,
(*buf)[0] = 0;
(*buf)[1] = 0;
- return 1;
+ return USBD_REQ_HANDLED;
}
-static int usb_standard_interface_get_status(usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_interface_get_status(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
(void)usbd_dev;
(void)req;
@@ -412,12 +420,13 @@ static int usb_standard_interface_get_status(usbd_device *usbd_dev,
(*buf)[0] = 0;
(*buf)[1] = 0;
- return 1;
+ return USBD_REQ_HANDLED;
}
-static int usb_standard_endpoint_get_status(usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_endpoint_get_status(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
(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)[1] = 0;
- return 1;
+ return USBD_REQ_HANDLED;
}
-static int usb_standard_endpoint_stall(usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_endpoint_stall(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
(void)buf;
(void)len;
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,
- struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+static enum usbd_request_return_codes
+usb_standard_endpoint_unstall(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len)
{
(void)buf;
(void)len;
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 */
/**@}*/
-int _usbd_standard_request_device(usbd_device *usbd_dev,
- struct usb_setup_data *req, uint8_t **buf,
- uint16_t *len)
+enum usbd_request_return_codes
+_usbd_standard_request_device(usbd_device *usbd_dev,
+ struct usb_setup_data *req, uint8_t **buf,
+ uint16_t *len)
{
- int (*command)(usbd_device *usbd_dev, struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len) = NULL;
+ enum usbd_request_return_codes (*command)(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len) = NULL;
switch (req->bRequest) {
case USB_REQ_CLEAR_FEATURE:
@@ -505,18 +518,20 @@ int _usbd_standard_request_device(usbd_device *usbd_dev,
}
if (!command) {
- return 0;
+ return USBD_REQ_NOTSUPP;
}
return command(usbd_dev, req, buf, len);
}
-int _usbd_standard_request_interface(usbd_device *usbd_dev,
- struct usb_setup_data *req, uint8_t **buf,
- uint16_t *len)
+enum usbd_request_return_codes
+_usbd_standard_request_interface(usbd_device *usbd_dev,
+ struct usb_setup_data *req, uint8_t **buf,
+ uint16_t *len)
{
- int (*command)(usbd_device *usbd_dev, struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len) = NULL;
+ enum usbd_request_return_codes (*command)(usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len) = NULL;
switch (req->bRequest) {
case USB_REQ_CLEAR_FEATURE:
@@ -535,18 +550,20 @@ int _usbd_standard_request_interface(usbd_device *usbd_dev,
}
if (!command) {
- return 0;
+ return USBD_REQ_NOTSUPP;
}
return command(usbd_dev, req, buf, len);
}
-int _usbd_standard_request_endpoint(usbd_device *usbd_dev,
- struct usb_setup_data *req, uint8_t **buf,
- uint16_t *len)
+enum usbd_request_return_codes
+_usbd_standard_request_endpoint(usbd_device *usbd_dev,
+ struct usb_setup_data *req, uint8_t **buf,
+ uint16_t *len)
{
- int (*command) (usbd_device *usbd_dev, struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len) = NULL;
+ enum usbd_request_return_codes (*command) (usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf, uint16_t *len) = NULL;
switch (req->bRequest) {
case USB_REQ_CLEAR_FEATURE:
@@ -572,18 +589,19 @@ int _usbd_standard_request_endpoint(usbd_device *usbd_dev,
}
if (!command) {
- return 0;
+ return USBD_REQ_NOTSUPP;
}
return command(usbd_dev, req, buf, len);
}
-int _usbd_standard_request(usbd_device *usbd_dev, struct usb_setup_data *req,
- uint8_t **buf, uint16_t *len)
+enum usbd_request_return_codes
+_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. */
if ((req->bmRequestType & USB_REQ_TYPE_TYPE) != USB_REQ_TYPE_STANDARD) {
- return 0;
+ return USBD_REQ_NOTSUPP;
}
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:
return _usbd_standard_request_endpoint(usbd_dev, req, buf, len);
default:
- return 0;
+ return USBD_REQ_NOTSUPP;
}
}