mbed library sources
Fork of mbed-src by
Revision 400:3234c374c245, committed 2014-11-15
- Comitter:
- BigDotStu
- Date:
- Sat Nov 15 19:39:06 2014 +0000
- Parent:
- 399:7c3047f858e1
- Commit message:
- Added serial IRQ getc to HAL
Changed in this revision
diff -r 7c3047f858e1 -r 3234c374c245 api/SerialBase.h --- a/api/SerialBase.h Wed Nov 12 14:15:07 2014 +0000 +++ b/api/SerialBase.h Sat Nov 15 19:39:06 2014 +0000 @@ -125,6 +125,7 @@ } int _base_getc(); + int _base_getc_irq(); int _base_putc(int c); serial_t _serial;
diff -r 7c3047f858e1 -r 3234c374c245 common/SerialBase.cpp --- a/common/SerialBase.cpp Wed Nov 12 14:15:07 2014 +0000 +++ b/common/SerialBase.cpp Sat Nov 15 19:39:06 2014 +0000 @@ -61,6 +61,10 @@ return serial_getc(&_serial); } +int SerialBase::_base_getc_irq() { + return serial_getc_irq(&_serial); +} + int SerialBase::_base_putc(int c) { serial_putc(&_serial, c); return c;
diff -r 7c3047f858e1 -r 3234c374c245 hal/serial_api.h --- a/hal/serial_api.h Wed Nov 12 14:15:07 2014 +0000 +++ b/hal/serial_api.h Sat Nov 15 19:39:06 2014 +0000 @@ -57,6 +57,7 @@ void serial_irq_set (serial_t *obj, SerialIrq irq, uint32_t enable); int serial_getc (serial_t *obj); +int serial_getc_irq (serial_t *obj); void serial_putc (serial_t *obj, int c); int serial_readable (serial_t *obj); int serial_writable (serial_t *obj);
diff -r 7c3047f858e1 -r 3234c374c245 targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/serial_api.c --- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/serial_api.c Wed Nov 12 14:15:07 2014 +0000 +++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/serial_api.c Sat Nov 15 19:39:06 2014 +0000 @@ -189,6 +189,13 @@ return data; } +int serial_getc_irq(serial_t *obj) { + uint8_t data; + uint32_t uart_addrs[] = UART_BASE_ADDRS; + UART_HAL_Getchar(uart_addrs[obj->index], &data); + + return data; +} void serial_putc(serial_t *obj, int c) { while (!serial_writable(obj)); uint32_t uart_addrs[] = UART_BASE_ADDRS;
diff -r 7c3047f858e1 -r 3234c374c245 targets/hal/TARGET_NXP/TARGET_LPC176X/serial_api.c --- a/targets/hal/TARGET_NXP/TARGET_LPC176X/serial_api.c Wed Nov 12 14:15:07 2014 +0000 +++ b/targets/hal/TARGET_NXP/TARGET_LPC176X/serial_api.c Sat Nov 15 19:39:06 2014 +0000 @@ -354,6 +354,16 @@ return data; } +int serial_getc_irq(serial_t *obj) { + uint32_t IRR = obj->uart->IIR; + int data = obj->uart->RBR; + if (NC != uart_data[obj->index].sw_rts.pin) { + gpio_write(&uart_data[obj->index].sw_rts, 0); + obj->uart->IER |= 1 << RxIrq; + } + return data; +} + void serial_putc(serial_t *obj, int c) { while (!serial_writable(obj)); obj->uart->THR = c;