From 6a051a8e0ba6b16001c72df0b77697caba2756c4 Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 1 Apr 2016 14:53:01 +0300 Subject: [PATCH] esp8266/uart: Get ctrl-C working now that event-based REPL is disabled. --- esp8266/uart.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/esp8266/uart.c b/esp8266/uart.c index ed5e1d9979..0d180aa55b 100644 --- a/esp8266/uart.c +++ b/esp8266/uart.c @@ -38,6 +38,11 @@ static os_event_t uart_evt_queue[16]; static void uart0_rx_intr_handler(void *para); +void soft_reset(void); +void mp_keyboard_interrupt(void); + +int interrupt_char; + /****************************************************************************** * FunctionName : uart_config * Description : Internal used function @@ -168,7 +173,11 @@ static void uart0_rx_intr_handler(void *para) { while (READ_PERI_REG(UART_STATUS(uart_no)) & (UART_RXFIFO_CNT << UART_RXFIFO_CNT_S)) { uint8 RcvChar = READ_PERI_REG(UART_FIFO(uart_no)) & 0xff; - ringbuf_put(&input_buf, RcvChar); + if (RcvChar == interrupt_char) { + mp_keyboard_interrupt(); + } else { + ringbuf_put(&input_buf, RcvChar); + } } mp_hal_signal_input(); @@ -237,10 +246,6 @@ void ICACHE_FLASH_ATTR uart_reattach() { #include "py/obj.h" #include "lib/utils/pyexec.h" -void soft_reset(void); -void mp_keyboard_interrupt(void); - -int interrupt_char; #if MICROPY_REPL_EVENT_DRIVEN void uart_task_handler(os_event_t *evt) { if (pyexec_repl_active) {