From 6a051a8e0ba6b16001c72df0b77697caba2756c4 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
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 ed5e1d997..0d180aa55 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) {
-- 
GitLab