From 1b76f88e7a04e6accbfd1caab325a7dfd4717ef8 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Thu, 29 Sep 2016 10:18:06 -0700
Subject: [PATCH] zephyr/zephyr_getchar: Add support for Ctrl+C handling.

Patch on top of upstream Zephyr console helpers.
---
 zephyr/src/zephyr_getchar.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/zephyr/src/zephyr_getchar.c b/zephyr/src/zephyr_getchar.c
index 3a1898a60..89e3e0efb 100644
--- a/zephyr/src/zephyr_getchar.c
+++ b/zephyr/src/zephyr_getchar.c
@@ -20,6 +20,9 @@
 #include <misc/printk.h>
 #include "zephyr_getchar.h"
 
+extern int mp_interrupt_char;
+void mp_keyboard_interrupt(void);
+
 static struct nano_sem uart_sem;
 #define UART_BUFSIZE 256
 static uint8_t uart_ringbuf[UART_BUFSIZE];
@@ -32,8 +35,13 @@ static int console_irq_input_hook(struct device *dev, uint8_t ch)
         printk("UART buffer overflow - char dropped\n");
         return 1;
     }
-    uart_ringbuf[i_put] = ch;
-    i_put = i_next;
+    if (ch == mp_interrupt_char) {
+        mp_keyboard_interrupt();
+        return 1;
+    } else {
+        uart_ringbuf[i_put] = ch;
+        i_put = i_next;
+    }
     //printk("%x\n", ch);
     nano_isr_sem_give(&uart_sem);
     return 1;
-- 
GitLab