diff options
| author | chenyingchun0312 <[email protected]> | 2020-10-27 22:42:12 +0800 |
|---|---|---|
| committer | chenyingchun0312 <[email protected]> | 2020-10-27 22:42:12 +0800 |
| commit | ac5fb52ef709eca399dcd7dc50480eca62d2e8af (patch) | |
| tree | 56b105f0b8f90db474c127b32d5acd4e30df219b /bsp/nrf5x/libraries/drivers | |
| parent | 9cd38972a27a9baf5278d62431c8f6e77b9878b1 (diff) | |
[bsp/nrf52x] support putting characters to ble host and getting characters from
ble host via rtthread finsh console
Signed-off-by: chenyingchun0312 <[email protected]>
Diffstat (limited to 'bsp/nrf5x/libraries/drivers')
| -rw-r--r-- | bsp/nrf5x/libraries/drivers/drv_uart.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/bsp/nrf5x/libraries/drivers/drv_uart.c b/bsp/nrf5x/libraries/drivers/drv_uart.c index 08c7148353..7f7d4ba7d6 100644 --- a/bsp/nrf5x/libraries/drivers/drv_uart.c +++ b/bsp/nrf5x/libraries/drivers/drv_uart.c @@ -165,7 +165,10 @@ static rt_err_t _uart_ctrl(struct rt_serial_device *serial, int cmd, void *arg) return RT_EOK; } - +RT_WEAK int uart_putc_hook(rt_uint8_t *ch) +{ + return -1; +} static int _uart_putc(struct rt_serial_device *serial, char c) { drv_uart_cfg_t *instance = NULL; @@ -180,6 +183,7 @@ static int _uart_putc(struct rt_serial_device *serial, char c) nrf_uart_event_clear(instance->uart.p_reg, NRF_UART_EVENT_TXDRDY); nrf_uart_task_trigger(instance->uart.p_reg, NRF_UART_TASK_STARTTX); nrf_uart_txd_set(instance->uart.p_reg, (uint8_t)c); + uart_putc_hook((rt_uint8_t *)&c); while (!nrf_uart_event_check(instance->uart.p_reg, NRF_UART_EVENT_TXDRDY)) { //wait for TXD send @@ -187,6 +191,11 @@ static int _uart_putc(struct rt_serial_device *serial, char c) return rtn; } +RT_WEAK int uart_getc_hook(rt_uint8_t *ch) +{ + return -1; +}; + static int _uart_getc(struct rt_serial_device *serial) { int ch = -1; @@ -202,7 +211,22 @@ static int _uart_getc(struct rt_serial_device *serial) ch = instance->rx_byte; instance->rx_length--; } - return ch; + + if (-1 != ch) + { + return ch; + } + else + { + if (-1 == uart_getc_hook((rt_uint8_t *)&ch)) + { + return -1; + } + else + { + return ch; + } + } } static struct rt_uart_ops _uart_ops = { |
