diff options
-rw-r--r-- | examples/dpfp.c | 14 | ||||
-rw-r--r-- | libfpusb/fpusb.h | 16 | ||||
-rw-r--r-- | libfpusb/fpusbi.h | 9 | ||||
-rw-r--r-- | libfpusb/io.c | 19 |
4 files changed, 29 insertions, 29 deletions
diff --git a/examples/dpfp.c b/examples/dpfp.c index bc883c6..fe1445c 100644 --- a/examples/dpfp.c +++ b/examples/dpfp.c @@ -205,8 +205,8 @@ static int set_mode(unsigned char data) } static void cb_mode_changed(struct fpusb_dev_handle *_devh, - struct fpusb_urb_handle *urbh, struct fpusb_ctrl_msg *msg, - enum fp_urb_cb_status status, unsigned char *data, int actual_length, + struct fpusb_urb_handle *urbh, enum fp_urb_cb_status status, + struct usb_ctrl_setup *setup, unsigned char *data, int actual_length, void *user_data) { if (status != FP_URB_COMPLETED) { @@ -336,10 +336,10 @@ static int next_state(void) } static void cb_irq(fpusb_dev_handle *_devh, fpusb_urb_handle *urbh, - struct fpusb_bulk_msg *msg, enum fp_urb_cb_status status, - int actual_length, void *user_data) + enum fp_urb_cb_status status, unsigned char endpoint, int rqlength, + unsigned char *data, int actual_length, void *user_data) { - unsigned char irqtype = msg->data[0]; + unsigned char irqtype = data[0]; if (status != FP_URB_COMPLETED) { fprintf(stderr, "irq URB status %d?\n", status); @@ -375,8 +375,8 @@ static void cb_irq(fpusb_dev_handle *_devh, fpusb_urb_handle *urbh, } static void cb_img(fpusb_dev_handle *_devh, fpusb_urb_handle *urbh, - struct fpusb_bulk_msg *msg, enum fp_urb_cb_status status, - int actual_length, void *user_data) + enum fp_urb_cb_status status, unsigned char endpoint, int rqlength, + unsigned char *data, int actual_length, void *user_data) { if (status != FP_URB_COMPLETED) { fprintf(stderr, "img URB status %d?\n", status); diff --git a/libfpusb/fpusb.h b/libfpusb/fpusb.h index 0d54be5..abcb6c9 100644 --- a/libfpusb/fpusb.h +++ b/libfpusb/fpusb.h @@ -165,6 +165,16 @@ struct usb_config_descriptor { int extralen; }; +/* off-the-wire structures */ + +struct usb_ctrl_setup { + uint8_t bRequestType; + uint8_t bRequest; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} __attribute__((packed)); + /* fpusb */ struct fpusb_dev; @@ -193,7 +203,7 @@ struct fpusb_ctrl_msg { }; typedef void (*fpusb_ctrl_cb_fn)(fpusb_dev_handle *devh, fpusb_urb_handle *urbh, - struct fpusb_ctrl_msg *msg, enum fp_urb_cb_status status, + enum fp_urb_cb_status status, struct usb_ctrl_setup *setup, unsigned char *data, int actual_length, void *user_data); struct fpusb_bulk_msg { @@ -203,8 +213,8 @@ struct fpusb_bulk_msg { }; typedef void (*fpusb_bulk_cb_fn)(fpusb_dev_handle *devh, fpusb_urb_handle *urbh, - struct fpusb_bulk_msg *msg, enum fp_urb_cb_status status, - int actual_length, void *user_data); + enum fp_urb_cb_status status, unsigned char endpoint, + int rqlength, unsigned char *data, int actual_length, void *user_data); int fpusb_init(int signum); void fpusb_exit(void); diff --git a/libfpusb/fpusbi.h b/libfpusb/fpusbi.h index ea5a24a..4c9f9d2 100644 --- a/libfpusb/fpusbi.h +++ b/libfpusb/fpusbi.h @@ -175,7 +175,6 @@ struct fpusb_urb_handle { timer_t timer; unsigned char urb_type; unsigned char endpoint; - void *msg; int transfer_len; int transferred; unsigned char *buffer; @@ -186,14 +185,6 @@ struct fpusb_urb_handle { /* bus structures */ -struct usb_ctrl_setup { - uint8_t bRequestType; - uint8_t bRequest; - uint16_t wValue; - uint16_t wIndex; - uint16_t wLength; -} __attribute__((packed)); - /* All standard descriptors have these 2 fields in common */ struct usb_descriptor_header { uint8_t bLength; diff --git a/libfpusb/io.c b/libfpusb/io.c index 88a83e8..f5949ea 100644 --- a/libfpusb/io.c +++ b/libfpusb/io.c @@ -240,7 +240,6 @@ API_EXPORTED struct fpusb_urb_handle *fpusb_submit_ctrl_msg( memcpy(urbdata + sizeof(struct usb_ctrl_setup), msg->data, msg->length); urbh->urb_type = USB_URB_TYPE_CONTROL; - urbh->msg = msg; urbh->buffer = urbdata; urbh->transfer_len = urbdata_length; @@ -275,7 +274,6 @@ static struct fpusb_urb_handle *submit_bulk_msg(struct fpusb_dev_handle *devh, urbh->callback = callback; urbh->user_data = user_data; urbh->flags |= FPUSB_URBH_DATA_BELONGS_TO_USER; - urbh->msg = msg; urbh->endpoint = msg->endpoint; urbh->urb_type = urbtype; urbh->buffer = msg->data; @@ -352,15 +350,15 @@ int handle_transfer_completion(struct fpusb_dev_handle *devh, if (urb->type == USB_URB_TYPE_CONTROL) { fpusb_ctrl_cb_fn callback = urbh->callback; if (callback) - callback(devh, urbh, urbh->msg, status, + callback(devh, urbh, status, urb->buffer, urb->buffer + sizeof(struct usb_ctrl_setup), urbh->transferred, urbh->user_data); } else if (urb->type == USB_URB_TYPE_BULK || urb->type == USB_URB_TYPE_INTERRUPT) { fpusb_bulk_cb_fn callback = urbh->callback; if (callback) - callback(devh, urbh, urbh->msg, status, urbh->transferred, - urbh->user_data); + callback(devh, urbh, status, urbh->endpoint, urbh->transfer_len, + urbh->buffer, urbh->transferred, urbh->user_data); } return 0; } @@ -570,8 +568,8 @@ struct sync_ctrl_handle { }; static void ctrl_msg_cb(struct fpusb_dev_handle *devh, - struct fpusb_urb_handle *urbh, struct fpusb_ctrl_msg *msg, - enum fp_urb_cb_status status, unsigned char *data, int actual_length, + struct fpusb_urb_handle *urbh, enum fp_urb_cb_status status, + struct usb_ctrl_setup *setup, unsigned char *data, int actual_length, void *user_data) { struct sync_ctrl_handle *ctrlh = (struct sync_ctrl_handle *) user_data; @@ -579,7 +577,7 @@ static void ctrl_msg_cb(struct fpusb_dev_handle *devh, if (status == FP_URB_COMPLETED) { /* copy results into user-defined buffer */ - if (msg->requesttype & USB_ENDPOINT_IN) + if (setup->bRequestType & USB_ENDPOINT_IN) memcpy(ctrlh->data, data, actual_length); } @@ -628,8 +626,9 @@ struct sync_bulk_handle { }; static void bulk_msg_cb(struct fpusb_dev_handle *devh, - struct fpusb_urb_handle *urbh, struct fpusb_bulk_msg *msg, - enum fp_urb_cb_status status, int actual_length, void *user_data) + struct fpusb_urb_handle *urbh, enum fp_urb_cb_status status, + unsigned char endpoint, int rqlength, unsigned char *data, + int actual_length, void *user_data) { struct sync_bulk_handle *bulkh = (struct sync_bulk_handle *) user_data; fp_dbg(""); |