Fix usb reset handling.
authorNIIBE Yutaka <gniibe@fsij.org>
Wed, 2 Sep 2015 07:43:27 +0000 (16:43 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Wed, 2 Sep 2015 07:43:27 +0000 (16:43 +0900)
ChangeLog
src/main.c

index 5f16586..f5e0bc9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
 
        * src/main.c (CDC_CTRL_DTR): New.
        (usb_cb_ctrl_write_finish): Distinguish DTR accurately.
+       (usb_cb_device_reset): Notify upper layer.
 
 2015-08-03  Niibe Yutaka  <gniibe@fsij.org>
 
index 9332df8..8ae3959 100644 (file)
@@ -199,16 +199,24 @@ extern int fraucheky_get_descriptor (uint8_t rcp, uint8_t desc_type,
 void
 usb_cb_device_reset (void)
 {
-  /* Set DEVICE as not configured */
+  /* Set DEVICE as not configured */
   usb_lld_set_configuration (0);
 
-  /* Current Feature initialization */
+  /* Current Feature initialization */
   usb_lld_set_feature (vcom_config_desc[7]);
 
   usb_lld_reset ();
 
-  /* Initialize Endpoint 0 */
+  /* Initialize Endpoint 0 */
   usb_lld_setup_endpoint (ENDP0, EP_CONTROL, 0, ENDP0_RXADDR, ENDP0_TXADDR, 64);
+
+  /* Notify upper layer.  */
+  chopstx_mutex_lock (&usb_mtx);
+  bDeviceState = UNCONNECTED;
+  connected = 0;
+  if (!wait_usb_connection)
+    chopstx_cond_signal (&cnd_usb);
+  chopstx_mutex_unlock (&usb_mtx);
 }
 
 extern uint8_t _regnual_start, __heap_end__;