]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Enable serial_link support for ChibiOS
authorFred Sundvik <fsundvik@gmail.com>
Wed, 6 Jul 2016 12:22:34 +0000 (15:22 +0300)
committerFred Sundvik <fsundvik@gmail.com>
Wed, 6 Jul 2016 13:06:53 +0000 (16:06 +0300)
Makefile
tmk_core/common/keyboard.c
tmk_core/protocol/chibios/main.c

index 79f9e8b42ce3e7fabfd2f1204e19a9b3efa95174..cfbe0e994d76cf97f76137746e1e69c101b3dc22 100644 (file)
--- a/Makefile
+++ b/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
 
index 81df8eb73bf535594ce5d19cd68e81eab4a6514d..3a1262a9f9a8493be9fdb98d030c722f79a4a546 100644 (file)
@@ -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
index 54bb6a8f556aa8a0df0b6a04253679a4d8b77236..aeb11752f4286d73d3fd6c018fbc5c91ecec1955 100644 (file)
@@ -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()) {