summaryrefslogtreecommitdiffstats
path: root/app/usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/usb.c')
-rw-r--r--app/usb.c44
1 files changed, 38 insertions, 6 deletions
diff --git a/app/usb.c b/app/usb.c
index 2dfac76..d464ea4 100644
--- a/app/usb.c
+++ b/app/usb.c
@@ -21,7 +21,7 @@ const struct usb_device_descriptor dev = {
const struct usb_interface ifaces[] = {
{
.num_altsetting = 1,
- .altsetting = &crypto_iface,
+ .altsetting = &keyboard_iface,
},
{
.num_altsetting = 1,
@@ -47,7 +47,8 @@ static const char *usb_strings[] = {
"bootpad",
"bootpad",
"composite",
- "bootpad",
+ "bootpad keyboard",
+ "bootpad control",
"bootpad dfu device",
};
@@ -57,6 +58,34 @@ usbd_device *usbd_dev;
int usb_is_suspended = 0;
+int usb_running =0;
+
+static int time_since_sof;
+
+
+
+void usb_tick(void)
+{
+#ifndef SLIM
+char buf[16];
+#endif
+
+time_since_sof++;
+
+if (time_since_sof>100) usb_running=0;
+
+#ifndef SLIM
+sprintf(buf,"%d",time_since_sof);
+lcd_write(buf,0,0);
+#endif
+
+}
+
+static void usb_sof(void)
+{
+usb_running=1;
+time_since_sof=0;
+}
static void
usb_suspended (void)
@@ -107,14 +136,16 @@ usb_control_request (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))
+
+ if ((req->bmRequestType !=
+ (USB_REQ_TYPE_IN | USB_REQ_TYPE_STANDARD | USB_REQ_TYPE_INTERFACE))
+ || (req->bRequest != USB_REQ_GET_DESCRIPTOR) || (req->wValue != 0x2200))
return 0;
switch (req->wIndex)
{
case 0:
- crypto_get_descriptor (buf, len);
+ keyboard_get_descriptor (buf, len);
return 1;
}
@@ -144,7 +175,7 @@ usb_set_config (usbd_device * usbd_dev, uint16_t wValue)
usbd_register_control_callback (usbd_dev,
- USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_INTERFACE,
+ USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_DEVICE,
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT,
vendor_control_request);
@@ -164,6 +195,7 @@ usb_init (void)
usbd_register_set_config_callback (usbd_dev, usb_set_config);
usbd_register_suspend_callback (usbd_dev, usb_suspended);
usbd_register_resume_callback (usbd_dev, usb_resumed);
+ usbd_register_sof_callback(usbd_dev, usb_sof);
}