M quantum/main.c => quantum/main.c +12 -3
@@ 19,11 19,21 @@
void platform_setup(void);
void protocol_setup(void);
-void protocol_init(void);
+void protocol_pre_init(void);
+void protocol_post_init(void);
void protocol_pre_task(void);
void protocol_post_task(void);
-// Bodge as refactoring vusb sucks....
+// Bodge as refactoring this area sucks....
+void protocol_init(void) __attribute__((weak));
+void protocol_init(void) {
+ protocol_pre_init();
+
+ keyboard_init();
+
+ protocol_post_init();
+}
+
void protocol_task(void) __attribute__((weak));
void protocol_task(void) {
protocol_pre_task();
@@ 44,7 54,6 @@ int main(void) {
keyboard_setup();
protocol_init();
- keyboard_init();
/* Main loop */
while (true) {
M tmk_core/protocol/chibios/chibios.c => tmk_core/protocol/chibios/chibios.c +3 -3
@@ 140,7 140,7 @@ void protocol_setup(void) {
// chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
}
-void protocol_init(void) {
+void protocol_pre_init(void) {
/* Init USB */
usb_event_queue_init();
init_usb_driver(&USB_DRIVER);
@@ 173,10 173,10 @@ void protocol_init(void) {
wait_ms(50);
print("USB configured.\n");
-
- host_set_driver(driver);
}
+void protocol_post_init(void) { host_set_driver(driver); }
+
void protocol_pre_task(void) {
usb_event_queue_task();
M tmk_core/protocol/lufa/lufa.c => tmk_core/protocol/lufa/lufa.c +3 -3
@@ 1072,7 1072,7 @@ void protocol_setup(void) {
usb_device_state_init();
}
-void protocol_init(void) {
+void protocol_pre_init(void) {
setup_usb();
sei();
@@ 1094,10 1094,10 @@ void protocol_init(void) {
#else
USB_USBTask();
#endif
-
- host_set_driver(&lufa_driver);
}
+void protocol_post_init(void) { host_set_driver(&lufa_driver); }
+
void protocol_pre_task(void) {
#if !defined(NO_USB_STARTUP_CHECK)
if (USB_DeviceState == DEVICE_STATE_Suspended) {
M tmk_core/protocol/vusb/protocol.c => tmk_core/protocol/vusb/protocol.c +3 -2
@@ 113,12 113,13 @@ void protocol_setup(void) {
#endif
}
-void protocol_init(void) {
+void protocol_pre_init(void) {
setup_usb();
sei();
+}
+void protocol_post_init(void) {
host_set_driver(vusb_driver());
-
wait_ms(50);
}