]> git.friedersdorff.com Git - max/tmk_keyboard.git/commitdiff
lufa: Startup and suspend loop can be disabled
authortmk <hasu@tmk-kbd.com>
Tue, 7 May 2019 02:09:25 +0000 (11:09 +0900)
committertmk <hasu@tmk-kbd.com>
Fri, 10 May 2019 00:44:59 +0000 (09:44 +0900)
Startup wait loop is originally intended to start keyboard task loop and
after console output endpoint becomes available. But now that console
output is buffered when it is not available and you don't have to wait
for it to be ready. You can disable the startup wait loop by defining
NO_WAIT_FOR_USB_CONFIGURED in config.h

Suspend loop is used for power saving by making tasks stop while
USB bus is under suspend status. But this may cause problem on some
devices like converter that must keep doing its task to retain
communication with keyboard. The suspend loop can block its task for
around 15-17ms. You can disable the suspend loop  by defining
NO_USB_SUSPEND_LOOP in config.h.

tmk_core/protocol/lufa/lufa.c

index aecaa050af52572fd2c56c7b06b14b7211d19610..ce15ec7359fa579d8b4ab758ccfcbb40853cd2fa 100644 (file)
@@ -654,6 +654,7 @@ int main(void)
 
     keyboard_init();
 
+#ifndef NO_USB_STARTUP_WAIT_LOOP
     /* wait for USB startup */
     while (USB_DeviceState != DEVICE_STATE_Configured) {
 #if defined(INTERRUPT_CONTROL_ENDPOINT)
@@ -663,14 +664,17 @@ int main(void)
 #endif
     }
     print("\nUSB configured.\n");
+#endif
 
     hook_late_init();
 
     print("\nKeyboard start.\n");
     while (1) {
+#ifndef NO_USB_SUSPEND_LOOP
         while (USB_DeviceState == DEVICE_STATE_Suspended) {
             hook_usb_suspend_loop();
         }
+#endif
 
         keyboard_task();