summaryrefslogtreecommitdiffstatshomepage
path: root/zephyr
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-09-29 10:18:06 -0700
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-10-10 23:02:36 +0300
commit1b76f88e7a04e6accbfd1caab325a7dfd4717ef8 (patch)
treee08fb3fc856909e6de7ba284b6cc2408d5958bcc /zephyr
parentaa7828f822391f2b44224e81af27d29a26a9ccb6 (diff)
downloadmicropython-1b76f88e7a04e6accbfd1caab325a7dfd4717ef8.tar.gz
micropython-1b76f88e7a04e6accbfd1caab325a7dfd4717ef8.zip
zephyr/zephyr_getchar: Add support for Ctrl+C handling.
Patch on top of upstream Zephyr console helpers.
Diffstat (limited to 'zephyr')
-rw-r--r--zephyr/src/zephyr_getchar.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/zephyr/src/zephyr_getchar.c b/zephyr/src/zephyr_getchar.c
index 3a1898a607..89e3e0efbc 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;