From 79b13fb4a9f8c1e7d4158b19870a396b05144061 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Wed, 9 Sep 2015 17:04:59 +0900
Subject: Cancellation fixes

---
 example-cdc/usb-cdc.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'example-cdc')

diff --git a/example-cdc/usb-cdc.c b/example-cdc/usb-cdc.c
index 310e454..52871c2 100644
--- a/example-cdc/usb-cdc.c
+++ b/example-cdc/usb-cdc.c
@@ -173,9 +173,17 @@ usb_cb_device_reset (void)
 
   /* Initialize Endpoint 0 */
   usb_lld_setup_endpoint (ENDP0, EP_CONTROL, 0, ENDP0_RXADDR, ENDP0_TXADDR, 64);
+
+  chopstx_mutex_lock (&usb_mtx);
+  connected = 0;
+  bDeviceState = ATTACHED;
+  chopstx_cond_signal (&cnd_usb);
+  chopstx_mutex_unlock (&usb_mtx);
 }
 
 
+#define CDC_CTRL_DTR            0x0001
+
 void
 usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no, uint16_t value)
 {
@@ -186,7 +194,7 @@ usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no, uint16_t value)
     {
       /* Open/close the connection.  */
       chopstx_mutex_lock (&usb_mtx);
-      connected = (value != 0)? 1 : 0;
+      connected = ((value & CDC_CTRL_DTR) != 0)? 1 : 0;
       chopstx_cond_signal (&cnd_usb);
       chopstx_mutex_unlock (&usb_mtx);
     }
-- 
cgit v1.2.3