mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-22 00:16:41 +06:00
Enable serial_link support for ChibiOS
This commit is contained in:
parent
a7e3e4e652
commit
4b45deb652
2
Makefile
2
Makefile
|
@ -208,7 +208,7 @@ ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
|
|||
SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c)
|
||||
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
|
||||
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
|
||||
OPT_DEFS += -DUSE_SERIAL_LINK
|
||||
OPT_DEFS += -DSERIAL_LINK_ENABLE
|
||||
VAPTH += $(SERIAL_PATH)
|
||||
endif
|
||||
|
||||
|
|
|
@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#ifdef RGBLIGHT_ENABLE
|
||||
# include "rgblight.h"
|
||||
#endif
|
||||
#ifdef SERIAL_LINK_ENABLE
|
||||
# include "serial_link/system/serial_link.h"
|
||||
#endif
|
||||
|
||||
#ifdef MATRIX_HAS_GHOST
|
||||
static bool has_ghost_in_row(uint8_t row)
|
||||
|
@ -167,11 +170,15 @@ MATRIX_LOOP_END:
|
|||
#endif
|
||||
|
||||
#ifdef SERIAL_MOUSE_ENABLE
|
||||
serial_mouse_task();
|
||||
serial_mouse_task();
|
||||
#endif
|
||||
|
||||
#ifdef ADB_MOUSE_ENABLE
|
||||
adb_mouse_task();
|
||||
adb_mouse_task();
|
||||
#endif
|
||||
|
||||
#ifdef SERIAL_LINK_ENABLE
|
||||
serial_link_update();
|
||||
#endif
|
||||
|
||||
// update LED
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
#ifdef SLEEP_LED_ENABLE
|
||||
#include "sleep_led.h"
|
||||
#endif
|
||||
#ifdef SERIAL_LINK_ENABLE
|
||||
#include "serial_link/system/serial_link.h"
|
||||
#endif
|
||||
#include "suspend.h"
|
||||
|
||||
|
||||
|
@ -98,9 +101,27 @@ int main(void) {
|
|||
/* init printf */
|
||||
init_printf(NULL,sendchar_pf);
|
||||
|
||||
/* Wait until the USB is active */
|
||||
while(USB_DRIVER.state != USB_ACTIVE)
|
||||
#ifdef SERIAL_LINK_ENABLE
|
||||
init_serial_link();
|
||||
#endif
|
||||
|
||||
host_driver_t* driver = NULL;
|
||||
|
||||
/* Wait until the USB or serial link is active */
|
||||
while (true) {
|
||||
if(USB_DRIVER.state == USB_ACTIVE) {
|
||||
driver = &chibios_driver;
|
||||
break;
|
||||
}
|
||||
#ifdef SERIAL_LINK_ENABLE
|
||||
if(is_serial_link_connected()) {
|
||||
driver = get_serial_link_driver();
|
||||
break;
|
||||
}
|
||||
serial_link_update();
|
||||
#endif
|
||||
chThdSleepMilliseconds(50);
|
||||
}
|
||||
|
||||
/* Do need to wait here!
|
||||
* Otherwise the next print might start a transfer on console EP
|
||||
|
@ -113,7 +134,7 @@ int main(void) {
|
|||
|
||||
/* init TMK modules */
|
||||
keyboard_init();
|
||||
host_set_driver(&chibios_driver);
|
||||
host_set_driver(driver);
|
||||
|
||||
#ifdef SLEEP_LED_ENABLE
|
||||
sleep_led_init();
|
||||
|
@ -128,6 +149,9 @@ int main(void) {
|
|||
print("[s]");
|
||||
while(USB_DRIVER.state == USB_SUSPENDED) {
|
||||
/* Do this in the suspended state */
|
||||
#ifdef SERIAL_LINK_ENABLE
|
||||
serial_link_update();
|
||||
#endif
|
||||
suspend_power_down(); // on AVR this deep sleeps for 15ms
|
||||
/* Remote wakeup */
|
||||
if((USB_DRIVER.status & 2) && suspend_wakeup_condition()) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user