core: Add hook_usb_startup_wait_loop

This commit is contained in:
tmk 2019-05-08 11:44:56 +09:00
parent 00bba0fdb5
commit f3e498590c
4 changed files with 25 additions and 0 deletions

View file

@ -21,6 +21,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "keyboard.h" #include "keyboard.h"
#include "led.h" #include "led.h"
#ifdef __cplusplus
extern "C" {
#endif
/* ------------------------------------- /* -------------------------------------
* Protocol hooks * Protocol hooks
* ------------------------------------- */ * ------------------------------------- */
@ -47,6 +51,10 @@ void hook_usb_suspend_loop(void);
* the "normal" indicator LED status by default. */ * the "normal" indicator LED status by default. */
void hook_usb_wakeup(void); 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 * Keyboard hooks
@ -76,5 +84,8 @@ void hook_keyboard_leds_change(uint8_t led_status);
/* Default behaviour: do nothing. */ /* Default behaviour: do nothing. */
void hook_bootmagic(void); void hook_bootmagic(void);
#ifdef __cplusplus
}
#endif
#endif /* _HOOKS_H_ */ #endif /* _HOOKS_H_ */

View file

@ -5,9 +5,17 @@
#include <stdbool.h> #include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
void suspend_idle(uint8_t timeout); void suspend_idle(uint8_t timeout);
void suspend_power_down(void); void suspend_power_down(void);
bool suspend_wakeup_condition(void); bool suspend_wakeup_condition(void);
void suspend_wakeup_init(void); void suspend_wakeup_init(void);
#ifdef __cplusplus
}
#endif
#endif #endif

View 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_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_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_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_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_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. `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.

View file

@ -662,6 +662,7 @@ int main(void)
#else #else
USB_USBTask(); USB_USBTask();
#endif #endif
hook_usb_startup_wait_loop();
} }
print("\nUSB configured.\n"); print("\nUSB configured.\n");
#endif #endif
@ -739,3 +740,6 @@ void hook_usb_wakeup(void)
// Calling long task here can prevent USB state transition // Calling long task here can prevent USB state transition
} }
__attribute__((weak))
void hook_usb_startup_wait_loop(void) {}