diff options
author | root <root@artemis.panaceas.org> | 2017-01-17 14:36:52 +0000 |
---|---|---|
committer | root <root@artemis.panaceas.org> | 2017-01-17 14:36:52 +0000 |
commit | d61078a5cb38804e9eda28565a662485f3f59b55 (patch) | |
tree | 15783b46ade76622ec6122d3fcea4d7f4ff0ae71 /app/usb.c | |
parent | eddda61c598452ff2981b4f08d23258f448b3d0d (diff) | |
download | stm32_usb_kvm-master.tar.gz stm32_usb_kvm-master.tar.bz2 stm32_usb_kvm-master.zip |
Diffstat (limited to 'app/usb.c')
-rw-r--r-- | app/usb.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -75,6 +75,7 @@ static const char *usb_strings[] = { usbd_device *usbd_dev; +int usb_time_since_sof = 0; int usb_is_suspended = 0; @@ -153,6 +154,7 @@ usb_control_request (usbd_device * usbd_dev, struct usb_setup_data *req, } + void usb_set_config (usbd_device * usbd_dev, uint16_t wValue) { @@ -180,6 +182,33 @@ usb_set_config (usbd_device * usbd_dev, uint16_t wValue) } +static void +usb_sof (void) +{ + usb_time_since_sof = 0; +} + +void +usb_tick (void) +{ + if (usb_is_suspended) + { + usb_time_since_sof = 0; + return; + } + + usb_time_since_sof++; + + if (usb_time_since_sof > 1000) + { + usb_time_since_sof = 0; + _usbd_reset (usbd_dev); + } + + +} + + /* Buffer to be used for control requests. */ static uint8_t usbd_control_buffer[128]; @@ -194,6 +223,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); } |