diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-09-29 10:18:06 -0700 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-10-10 23:02:36 +0300 |
commit | 1b76f88e7a04e6accbfd1caab325a7dfd4717ef8 (patch) | |
tree | e08fb3fc856909e6de7ba284b6cc2408d5958bcc /zephyr | |
parent | aa7828f822391f2b44224e81af27d29a26a9ccb6 (diff) | |
download | micropython-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.c | 12 |
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; |