summary refs log tree commit diff
path: root/protocol
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2014-11-20 17:06:46 +0900
committertmk <nobody@nowhere>2014-11-20 17:24:56 +0900
commitc2d830c07c823c48a17c214b093ec1bab989fb6a (patch)
tree388b86cd7bfbf3b78528a498c8e3f39a20fc778f /protocol
parent6c06b9031fd09479d552f9750a3b1cfe259678fd (diff)
USB initialize when plug-in during battery powered
Diffstat (limited to 'protocol')
-rw-r--r--protocol/lufa/lufa.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/protocol/lufa/lufa.c b/protocol/lufa/lufa.c
index 16a602df13..6802f3b631 100644
--- a/protocol/lufa/lufa.c
+++ b/protocol/lufa/lufa.c
@@ -148,10 +148,23 @@ static void Console_Task(void)
 */
 void EVENT_USB_Device_Connect(void)
 {
+    /* For battery powered device */
+    if (!USB_IsInitialized) {
+        USB_Init();
+        USB_Device_EnableSOFEvents();
+    }
 }
 
 void EVENT_USB_Device_Disconnect(void)
 {
+    /* For battery powered device */
+/* TODO: This doesn't work. After several plug in/outs can not be enumerated. 
+    if (USB_IsInitialized) {
+        USB_Disable();  // Disable all interrupts
+	USB_Controller_Enable();
+        USB_INT_Enable(USB_INT_VBUSTI);
+    }
+*/
 }
 
 void EVENT_USB_Device_Reset(void)
@@ -574,7 +587,7 @@ int main(void)
     print("Keyboard start.\n");
     while (1) {
         while (USB_DeviceState == DEVICE_STATE_Suspended) {
-            suspend_power_down();
+            suspend_power_down(WDTO_120MS);
             if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) {
                     USB_Device_SendRemoteWakeup();
             }