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)/protocol/*.c)
 | 
				
			||||||
	SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
 | 
						SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
 | 
				
			||||||
	SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
 | 
						SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
 | 
				
			||||||
	OPT_DEFS += -DUSE_SERIAL_LINK
 | 
						OPT_DEFS += -DSERIAL_LINK_ENABLE
 | 
				
			||||||
	VAPTH += $(SERIAL_PATH)
 | 
						VAPTH += $(SERIAL_PATH)
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -49,6 +49,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			|||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
#   include "rgblight.h"
 | 
					#   include "rgblight.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SERIAL_LINK_ENABLE
 | 
				
			||||||
 | 
					#   include "serial_link/system/serial_link.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef MATRIX_HAS_GHOST
 | 
					#ifdef MATRIX_HAS_GHOST
 | 
				
			||||||
static bool has_ghost_in_row(uint8_t row)
 | 
					static bool has_ghost_in_row(uint8_t row)
 | 
				
			||||||
@ -167,11 +170,15 @@ MATRIX_LOOP_END:
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef SERIAL_MOUSE_ENABLE
 | 
					#ifdef SERIAL_MOUSE_ENABLE
 | 
				
			||||||
        serial_mouse_task();
 | 
					    serial_mouse_task();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef ADB_MOUSE_ENABLE
 | 
					#ifdef ADB_MOUSE_ENABLE
 | 
				
			||||||
        adb_mouse_task();
 | 
					    adb_mouse_task();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SERIAL_LINK_ENABLE
 | 
				
			||||||
 | 
						serial_link_update();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // update LED
 | 
					    // update LED
 | 
				
			||||||
 | 
				
			|||||||
@ -35,6 +35,9 @@
 | 
				
			|||||||
#ifdef SLEEP_LED_ENABLE
 | 
					#ifdef SLEEP_LED_ENABLE
 | 
				
			||||||
#include "sleep_led.h"
 | 
					#include "sleep_led.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SERIAL_LINK_ENABLE
 | 
				
			||||||
 | 
					#include "serial_link/system/serial_link.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#include "suspend.h"
 | 
					#include "suspend.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -98,9 +101,27 @@ int main(void) {
 | 
				
			|||||||
  /* init printf */
 | 
					  /* init printf */
 | 
				
			||||||
  init_printf(NULL,sendchar_pf);
 | 
					  init_printf(NULL,sendchar_pf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Wait until the USB is active */
 | 
					#ifdef SERIAL_LINK_ENABLE
 | 
				
			||||||
  while(USB_DRIVER.state != USB_ACTIVE)
 | 
					  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);
 | 
					    chThdSleepMilliseconds(50);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Do need to wait here!
 | 
					  /* Do need to wait here!
 | 
				
			||||||
   * Otherwise the next print might start a transfer on console EP
 | 
					   * Otherwise the next print might start a transfer on console EP
 | 
				
			||||||
@ -113,7 +134,7 @@ int main(void) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /* init TMK modules */
 | 
					  /* init TMK modules */
 | 
				
			||||||
  keyboard_init();
 | 
					  keyboard_init();
 | 
				
			||||||
  host_set_driver(&chibios_driver);
 | 
					  host_set_driver(driver);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef SLEEP_LED_ENABLE
 | 
					#ifdef SLEEP_LED_ENABLE
 | 
				
			||||||
  sleep_led_init();
 | 
					  sleep_led_init();
 | 
				
			||||||
@ -128,6 +149,9 @@ int main(void) {
 | 
				
			|||||||
      print("[s]");
 | 
					      print("[s]");
 | 
				
			||||||
      while(USB_DRIVER.state == USB_SUSPENDED) {
 | 
					      while(USB_DRIVER.state == USB_SUSPENDED) {
 | 
				
			||||||
        /* Do this in the suspended state */
 | 
					        /* Do this in the suspended state */
 | 
				
			||||||
 | 
					#ifdef SERIAL_LINK_ENABLE
 | 
				
			||||||
 | 
					        serial_link_update();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
        suspend_power_down(); // on AVR this deep sleeps for 15ms
 | 
					        suspend_power_down(); // on AVR this deep sleeps for 15ms
 | 
				
			||||||
        /* Remote wakeup */
 | 
					        /* Remote wakeup */
 | 
				
			||||||
        if((USB_DRIVER.status & 2) && suspend_wakeup_condition()) {
 | 
					        if((USB_DRIVER.status & 2) && suspend_wakeup_condition()) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user