mirror of
https://github.com/firewalkwithm3/qmk_firmware.git
synced 2024-11-22 03:21:48 +08:00
Refactor vusb to protocol use pre/post task (#14944)
This commit is contained in:
parent
4bbfecae90
commit
63dd131d81
|
@ -25,22 +25,9 @@ void protocol_pre_task(void);
|
|||
void protocol_post_task(void);
|
||||
|
||||
// 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();
|
||||
|
||||
void protocol_keyboard_task(void) __attribute__((weak));
|
||||
void protocol_keyboard_task(void) {
|
||||
keyboard_task();
|
||||
|
||||
protocol_post_task();
|
||||
}
|
||||
|
||||
/** \brief Main
|
||||
|
@ -53,11 +40,25 @@ int main(void) {
|
|||
protocol_setup();
|
||||
keyboard_setup();
|
||||
|
||||
protocol_init();
|
||||
protocol_pre_init();
|
||||
keyboard_init();
|
||||
protocol_post_init();
|
||||
|
||||
/* Main loop */
|
||||
while (true) {
|
||||
protocol_task();
|
||||
protocol_pre_task();
|
||||
protocol_keyboard_task();
|
||||
protocol_post_task();
|
||||
|
||||
#ifdef RAW_ENABLE
|
||||
void raw_hid_task(void);
|
||||
raw_hid_task();
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
void console_task(void);
|
||||
console_task();
|
||||
#endif
|
||||
|
||||
#ifdef QUANTUM_PAINTER_ENABLE
|
||||
// Run Quantum Painter task
|
||||
|
|
|
@ -70,13 +70,6 @@ host_driver_t chibios_driver = {keyboard_leds, send_keyboard, send_nkro, send_mo
|
|||
void virtser_task(void);
|
||||
#endif
|
||||
|
||||
#ifdef RAW_ENABLE
|
||||
void raw_hid_task(void);
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
void console_task(void);
|
||||
#endif
|
||||
#ifdef MIDI_ENABLE
|
||||
void midi_ep_task(void);
|
||||
#endif
|
||||
|
@ -209,17 +202,11 @@ void protocol_pre_task(void) {
|
|||
}
|
||||
|
||||
void protocol_post_task(void) {
|
||||
#ifdef CONSOLE_ENABLE
|
||||
console_task();
|
||||
#endif
|
||||
#ifdef MIDI_ENABLE
|
||||
midi_ep_task();
|
||||
#endif
|
||||
#ifdef VIRTSER_ENABLE
|
||||
virtser_task();
|
||||
#endif
|
||||
#ifdef RAW_ENABLE
|
||||
raw_hid_task();
|
||||
#endif
|
||||
usb_idle_task();
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@ __attribute__((weak)) void raw_hid_receive(uint8_t *data, uint8_t length) {
|
|||
*
|
||||
* FIXME: Needs doc
|
||||
*/
|
||||
static void raw_hid_task(void) {
|
||||
void raw_hid_task(void) {
|
||||
// Create a temporary buffer to hold the read in data from the host
|
||||
uint8_t data[RAW_EPSIZE];
|
||||
bool data_read = false;
|
||||
|
@ -865,10 +865,6 @@ void protocol_post_task(void) {
|
|||
CDC_Device_USBTask(&cdc_device);
|
||||
#endif
|
||||
|
||||
#ifdef RAW_ENABLE
|
||||
raw_hid_task();
|
||||
#endif
|
||||
|
||||
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
|
||||
USB_USBTask();
|
||||
#endif
|
||||
|
|
|
@ -31,14 +31,6 @@
|
|||
# include "sleep_led.h"
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
void console_task(void);
|
||||
#endif
|
||||
|
||||
#ifdef RAW_ENABLE
|
||||
void raw_hid_task(void);
|
||||
#endif
|
||||
|
||||
/* This is from main.c of USBaspLoader */
|
||||
static void initForUsbConnectivity(void) {
|
||||
uint8_t i = 0;
|
||||
|
@ -136,7 +128,7 @@ static inline bool should_do_suspend(void) {
|
|||
return vusb_suspended;
|
||||
}
|
||||
|
||||
void protocol_task(void) {
|
||||
void protocol_pre_task(void) {
|
||||
#if !defined(NO_USB_STARTUP_CHECK)
|
||||
if (should_do_suspend()) {
|
||||
dprintln("suspending keyboard");
|
||||
|
@ -159,7 +151,9 @@ void protocol_task(void) {
|
|||
vusb_wakeup();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void protocol_keyboard_task(void) {
|
||||
usbPoll();
|
||||
|
||||
// TODO: configuration process is inconsistent. it sometime fails.
|
||||
|
@ -167,20 +161,8 @@ void protocol_task(void) {
|
|||
if (usbConfiguration && usbInterruptIsReady()) {
|
||||
keyboard_task();
|
||||
}
|
||||
|
||||
#ifdef RAW_ENABLE
|
||||
usbPoll();
|
||||
|
||||
if (usbConfiguration && usbInterruptIsReady4()) {
|
||||
raw_hid_task();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE_ENABLE
|
||||
usbPoll();
|
||||
|
||||
if (usbConfiguration && usbInterruptIsReady3()) {
|
||||
console_task();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void protocol_post_task(void) {
|
||||
// do nothing
|
||||
}
|
||||
|
|
|
@ -162,6 +162,12 @@ __attribute__((weak)) void raw_hid_receive(uint8_t *data, uint8_t length) {
|
|||
}
|
||||
|
||||
void raw_hid_task(void) {
|
||||
usbPoll();
|
||||
|
||||
if (!usbConfiguration || !usbInterruptIsReady4()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (raw_output_received_bytes == RAW_BUFFER_SIZE) {
|
||||
raw_hid_receive(raw_output_buffer, RAW_BUFFER_SIZE);
|
||||
raw_output_received_bytes = 0;
|
||||
|
@ -182,7 +188,9 @@ int8_t sendchar(uint8_t c) {
|
|||
}
|
||||
|
||||
void console_task(void) {
|
||||
if (!usbConfiguration) {
|
||||
usbPoll();
|
||||
|
||||
if (!usbConfiguration || !usbInterruptIsReady3()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue