]> git.friedersdorff.com Git - max/tmk_keyboard.git/commitdiff
core: Add hook_usb_startup_wait_loop
authortmk <hasu@tmk-kbd.com>
Wed, 8 May 2019 02:44:56 +0000 (11:44 +0900)
committertmk <hasu@tmk-kbd.com>
Wed, 29 May 2019 05:50:56 +0000 (14:50 +0900)
tmk_core/common/hook.h
tmk_core/common/suspend.h
tmk_core/doc/hook.txt
tmk_core/protocol/lufa/lufa.c

index 56fe567774099f9160898031971831866e79e51f..140e2779af701a4d3721491c757078b5260c625e 100644 (file)
@@ -21,6 +21,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "keyboard.h"
 #include "led.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* -------------------------------------
  * Protocol hooks
  * ------------------------------------- */
@@ -47,6 +51,10 @@ void hook_usb_suspend_loop(void);
  * the "normal" indicator LED status by default. */
 void hook_usb_wakeup(void);
 
+/* Called repeatedly until getting to CONFIGURED state */
+/* Default behaviour: do nothing. */
+void hook_usb_startup_wait_loop(void);
+
 
 /* -------------------------------------
  * Keyboard hooks
@@ -76,5 +84,8 @@ void hook_keyboard_leds_change(uint8_t led_status);
 /* Default behaviour: do nothing. */
 void hook_bootmagic(void);
 
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* _HOOKS_H_ */
index 80617a824447db8ec709e9c0062d9bd6fe8955a1..f0a668cfe91d29441e9ccba494baed59f14b1d45 100644 (file)
@@ -5,9 +5,17 @@
 #include <stdbool.h>
 
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void suspend_idle(uint8_t timeout);
 void suspend_power_down(void);
 bool suspend_wakeup_condition(void);
 void suspend_wakeup_init(void);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
index 1689034e939b9099e95abf6a800cbf3048b164a9..acd77ccebd7423fedc81ce806264d4963cb3cff8 100644 (file)
@@ -9,6 +9,8 @@ Hook function                   | Timing
 `hook_early_init(void)`         | Early in the boot process, before the matrix is initialized and before a connection is made with the host. Thus, this hook has access to very few parameters, but it is a good place to define any custom parameters needed by other early processes.
 `hook_late_init(void)`          | Near the end of the boot process, after Boot Magic has run and LEDs have been initialized.
 `hook_bootmagic(void)`          | During the Boot Magic window, after EEPROM and Bootloader checks are made, but before any other built-in Boot Magic checks are made.
+`hook_usb_startup_wait_loop(void)` | Continuously, until the device gets ready and into USB configured state.
+
 `hook_usb_wakeup(void)`         | When the device wakes up from USB suspend state.
 `hook_usb_suspend_entry(void)`  | When the device enters USB suspend state.
 `hook_usb_suspend_loop(void)`   | Continuously, while the device is in USB suspend state. *Default action:* power down and periodically check the matrix, causing wakeup if needed.
index ce15ec7359fa579d8b4ab758ccfcbb40853cd2fa..9dadd5728d477fa56a247055651753f2e16a71ea 100644 (file)
@@ -662,6 +662,7 @@ int main(void)
 #else
         USB_USBTask();
 #endif
+        hook_usb_startup_wait_loop();
     }
     print("\nUSB configured.\n");
 #endif
@@ -739,3 +740,6 @@ void hook_usb_wakeup(void)
 
     // Calling long task here can prevent USB state transition
 }
+
+__attribute__((weak))
+void hook_usb_startup_wait_loop(void) {}