Skip to content

Commit

Permalink
usb: provide typedefs for all the function callbacks.
Browse files Browse the repository at this point in the history
This makes it easier to read for most people, and makes it substantially
easier to review changes in the function signatures themselves at a
later date.
  • Loading branch information
kuldeepdhaka authored and karlp committed Jul 29, 2015
1 parent b1e495f commit 4b89272
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 22 deletions.
20 changes: 14 additions & 6 deletions include/libopencm3/usb/usbd.h
Expand Up @@ -75,10 +75,19 @@ extern void usbd_register_resume_callback(usbd_device *usbd_dev,
extern void usbd_register_sof_callback(usbd_device *usbd_dev,
void (*callback)(void));

typedef int (*usbd_control_complete_callback)(usbd_device *usbd_dev,
struct usb_setup_data *req);

typedef int (*usbd_control_callback)(usbd_device *usbd_dev,
struct usb_setup_data *req, uint8_t **buf, uint16_t *len,
void (**complete)(usbd_device *usbd_dev,
struct usb_setup_data *req));
usbd_control_complete_callback *complete);

typedef void (*usbd_set_config_callback)(usbd_device *usbd_dev, uint16_t wValue);

typedef void (*usbd_set_altsetting_callback)(usbd_device *usbd_dev,
uint16_t wIndex, uint16_t wValue);

typedef void (*usbd_endpoint_callback)(usbd_device *usbd_dev, uint8_t ep);

/* <usb_control.c> */
extern int usbd_register_control_callback(usbd_device *usbd_dev, uint8_t type,
Expand All @@ -87,18 +96,17 @@ extern int usbd_register_control_callback(usbd_device *usbd_dev, uint8_t type,

/* <usb_standard.c> */
extern int usbd_register_set_config_callback(usbd_device *usbd_dev,
void (*callback)(usbd_device *usbd_dev, uint16_t wValue));
usbd_set_config_callback callback);

extern void usbd_register_set_altsetting_callback(usbd_device *usbd_dev,
void (*callback)(usbd_device *usbd_dev, uint16_t wIndex, uint16_t wValue));
usbd_set_altsetting_callback callback);

/* Functions to be provided by the hardware abstraction layer */
extern void usbd_poll(usbd_device *usbd_dev);
extern void usbd_disconnect(usbd_device *usbd_dev, bool disconnected);

extern void usbd_ep_setup(usbd_device *usbd_dev, uint8_t addr, uint8_t type,
uint16_t max_size,
void (*callback)(usbd_device *usbd_dev, uint8_t ep));
uint16_t max_size, usbd_endpoint_callback callback);

extern uint16_t usbd_ep_write_packet(usbd_device *usbd_dev, uint8_t addr,
const void *buf, uint16_t len);
Expand Down
3 changes: 1 addition & 2 deletions lib/usb/usb.c
Expand Up @@ -143,8 +143,7 @@ void usbd_disconnect(usbd_device *usbd_dev, bool disconnected)
}

void usbd_ep_setup(usbd_device *usbd_dev, uint8_t addr, uint8_t type,
uint16_t max_size,
void (*callback)(usbd_device *usbd_dev, uint8_t ep))
uint16_t max_size, usbd_endpoint_callback callback)
{
usbd_dev->driver->ep_setup(usbd_dev, addr, type, max_size, callback);
}
Expand Down
2 changes: 1 addition & 1 deletion lib/usb/usb_msc.c
Expand Up @@ -708,7 +708,7 @@ static void msc_data_tx_cb(usbd_device *usbd_dev, uint8_t ep)
*/
static int msc_control_request(usbd_device *usbd_dev,
struct usb_setup_data *req, uint8_t **buf, uint16_t *len,
void (**complete)(usbd_device *usbd_dev, struct usb_setup_data *req))
usbd_control_complete_callback *complete)
{
(void)complete;
(void)usbd_dev;
Expand Down
14 changes: 5 additions & 9 deletions lib/usb/usb_private.h
Expand Up @@ -73,8 +73,7 @@ struct _usbd_device {
struct usb_setup_data req __attribute__((aligned(4)));
uint8_t *ctrl_buf;
uint16_t ctrl_len;
void (*complete)(usbd_device *usbd_dev,
struct usb_setup_data *req);
usbd_control_complete_callback complete;
} control_state;

struct user_control_callback {
Expand All @@ -83,14 +82,12 @@ struct _usbd_device {
uint8_t type_mask;
} user_control_callback[MAX_USER_CONTROL_CALLBACK];

void (*user_callback_ctr[8][3])(usbd_device *usbd_dev, uint8_t ea);
usbd_endpoint_callback user_callback_ctr[8][3];

/* User callback function for some standard USB function hooks */
void (*user_callback_set_config[MAX_USER_SET_CONFIG_CALLBACK])
(usbd_device *usbd_dev, uint16_t wValue);
usbd_set_config_callback user_callback_set_config[MAX_USER_SET_CONFIG_CALLBACK];

void (*user_callback_set_altsetting)(usbd_device *usbd_dev,
uint16_t wIndex, uint16_t wValue);
usbd_set_altsetting_callback user_callback_set_altsetting;

const struct _usbd_driver *driver;

Expand Down Expand Up @@ -144,8 +141,7 @@ struct _usbd_driver {
usbd_device *(*init)(void);
void (*set_address)(usbd_device *usbd_dev, uint8_t addr);
void (*ep_setup)(usbd_device *usbd_dev, uint8_t addr, uint8_t type,
uint16_t max_size,
void (*cb)(usbd_device *usbd_dev, uint8_t ep));
uint16_t max_size, usbd_endpoint_callback cb);
void (*ep_reset)(usbd_device *usbd_dev);
void (*ep_stall_set)(usbd_device *usbd_dev, uint8_t addr,
uint8_t stall);
Expand Down
6 changes: 2 additions & 4 deletions lib/usb/usb_standard.c
Expand Up @@ -40,8 +40,7 @@ LGPL License Terms @ref lgpl_license
#include "usb_private.h"

int usbd_register_set_config_callback(usbd_device *usbd_dev,
void (*callback)(usbd_device *usbd_dev,
uint16_t wValue))
usbd_set_config_callback callback)
{
int i;

Expand All @@ -57,8 +56,7 @@ int usbd_register_set_config_callback(usbd_device *usbd_dev,
}

void usbd_register_set_altsetting_callback(usbd_device *usbd_dev,
void (*callback)(usbd_device *usbd_dev,
uint16_t wIndex, uint16_t wValue))
usbd_set_altsetting_callback callback)
{
usbd_dev->user_callback_set_altsetting = callback;
}
Expand Down

0 comments on commit 4b89272

Please sign in to comment.