summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/dpfp.c14
-rw-r--r--libfpusb/fpusb.h16
-rw-r--r--libfpusb/fpusbi.h9
-rw-r--r--libfpusb/io.c19
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("");