From 43443ee9ba206b0963c49123bd03c250ed8e7b26 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 7 Jun 2015 01:33:33 +0100 Subject: finished! --- app/usb.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'app/usb.c') diff --git a/app/usb.c b/app/usb.c index 659a491..8dd38c6 100644 --- a/app/usb.c +++ b/app/usb.c @@ -61,19 +61,26 @@ usbd_device *usbd_dev; static int -usb_control_request (usbd_device * usbd_dev, struct usb_setup_data *req, +usb_control_class_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)) { + if (keyboard_control_request(usbd_dev,req,buf,len,complete)) return 1; + if (dfu_control_request(usbd_dev,req,buf,len,complete)) return 1; + +return 0; +} +static int +usb_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)) +{ (void) complete; (void) usbd_dev; - if ((req->bmRequestType != 0x81) || - (req->bRequest != USB_REQ_GET_DESCRIPTOR) || (req->wValue != 0x2200)) - return 0; - switch (req->wIndex) { case 0: @@ -83,6 +90,10 @@ usb_control_request (usbd_device * usbd_dev, struct usb_setup_data *req, consumer_get_descriptor (buf, len); return 1; } + + *len = 0; + return 0; + *len = 0; return 0; @@ -95,19 +106,19 @@ usb_set_config (usbd_device * usbd_dev, uint16_t wValue) (void) wValue; (void) usbd_dev; - usbd_ep_setup (usbd_dev, 0x81, USB_ENDPOINT_ATTR_INTERRUPT, 4, NULL); - usbd_ep_setup (usbd_dev, 0x82, USB_ENDPOINT_ATTR_INTERRUPT, 4, NULL); + usbd_ep_setup (usbd_dev, KEYBOARD_EP, USB_ENDPOINT_ATTR_INTERRUPT, KEYBOARD_EP_TXN_SIZE, NULL); + usbd_ep_setup (usbd_dev, CONSUMER_EP, USB_ENDPOINT_ATTR_INTERRUPT, CONSUMER_EP_TXN_SIZE, NULL); usbd_register_control_callback (usbd_dev, - USB_REQ_TYPE_STANDARD | - USB_REQ_TYPE_INTERFACE, + USB_REQ_TYPE_STANDARD | USB_REQ_TYPE_INTERFACE, USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, usb_control_request); usbd_register_control_callback (usbd_dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE, USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, - dfu_control_request); + usb_control_class_request); + } /* Buffer to be used for control requests. */ -- cgit v1.2.3