From 8a47c4b6649f8437bb60300471400d558426612e Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 17 Oct 2013 12:50:17 +0200 Subject: [PATCH] add TargetClass support Signed-off-by: Felix Fietkau --- main.c | 1 + switch.c | 9 +++++++++ switch.h | 1 + 3 files changed, 11 insertions(+) diff --git a/main.c b/main.c index 859a90a..6cfe3b2 100644 --- a/main.c +++ b/main.c @@ -215,6 +215,7 @@ parse_interface_config(libusb_device *dev, struct usbdev_data *data) alt = &iface->altsetting[0]; data->interface = alt->bInterfaceNumber; + data->dev_class = alt->bInterfaceClass; for (i = 0; i < alt->bNumEndpoints; i++) { const struct libusb_endpoint_descriptor *ep = &alt->endpoint[i]; diff --git a/switch.c b/switch.c index 2c33d9c..b283561 100644 --- a/switch.c +++ b/switch.c @@ -11,6 +11,7 @@ enum { DATA_RELEASE_DELAY, DATA_CONFIG, DATA_ALT, + DATA_DEV_CLASS, __DATA_MAX }; @@ -410,12 +411,17 @@ void handle_switch(struct usbdev_data *data) [DATA_RESPONSE] = { .name = "response", .type = BLOBMSG_TYPE_BOOL }, [DATA_CONFIG] = { .name = "config", .type = BLOBMSG_TYPE_INT32 }, [DATA_ALT] = { .name = "alt", .type = BLOBMSG_TYPE_INT32 }, + [DATA_DEV_CLASS] = { .name = "t_class", .type = BLOBMSG_TYPE_INT32 }, }; struct blob_attr *tb[__DATA_MAX]; int mode = MODE_GENERIC; + int t_class = 0; blobmsg_parse(data_policy, __DATA_MAX, tb, blobmsg_data(data->info), blobmsg_data_len(data->info)); + if (tb[DATA_DEV_CLASS]) + t_class = blobmsg_get_u32(tb[DATA_DEV_CLASS]); + if (tb[DATA_INTERFACE]) data->interface = blobmsg_get_u32(tb[DATA_INTERFACE]); @@ -431,6 +437,9 @@ void handle_switch(struct usbdev_data *data) if (tb[DATA_RESPONSE]) data->need_response = blobmsg_get_bool(tb[DATA_RESPONSE]); + if (t_class > 0 && data->dev_class != t_class) + return; + if (tb[DATA_MODE]) { const char *modestr; int i; diff --git a/switch.h b/switch.h index 97c14f3..e499326 100644 --- a/switch.h +++ b/switch.h @@ -14,6 +14,7 @@ struct usbdev_data { int msg_endpoint; int response_endpoint; int release_delay; + int dev_class; bool need_response; char idstr[10]; -- 2.11.0