zephyr/subsys/console/getchar.c
Paul Sokolovsky 0925411356 tty: Remove buffer params from tty_init()
Let's have more orthogonal and cleaner API, where buffers are
configured by tty_set_rx_buf/tty_set_tx_buf, and only them. It
means that newly initialized tty starts in unbuffered mode, which
is somewhat a sidestep from a main usecase behind tty, which is
buffered operation, but again, having a cleaner API (and good
docs, explaining users how it should be and what they should do)
prevails.

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
2018-12-20 12:21:49 +01:00

58 lines
1.1 KiB
C

/*
* Copyright (c) 2017 Linaro Limited.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr.h>
#include <device.h>
#include <console.h>
#include <tty.h>
static struct tty_serial console_serial;
static u8_t console_rxbuf[CONFIG_CONSOLE_GETCHAR_BUFSIZE];
static u8_t console_txbuf[CONFIG_CONSOLE_PUTCHAR_BUFSIZE];
ssize_t console_write(void *dummy, const void *buf, size_t size)
{
ARG_UNUSED(dummy);
return tty_write(&console_serial, buf, size);
}
ssize_t console_read(void *dummy, void *buf, size_t size)
{
ARG_UNUSED(dummy);
return tty_read(&console_serial, buf, size);
}
int console_putchar(char c)
{
return tty_write(&console_serial, &c, 1);
}
int console_getchar(void)
{
u8_t c;
int res;
res = tty_read(&console_serial, &c, 1);
if (res < 0) {
return res;
}
return c;
}
void console_init(void)
{
struct device *uart_dev;
uart_dev = device_get_binding(CONFIG_UART_CONSOLE_ON_DEV_NAME);
tty_init(&console_serial, uart_dev);
tty_set_tx_buf(&console_serial, console_txbuf, sizeof(console_txbuf));
tty_set_rx_buf(&console_serial, console_rxbuf, sizeof(console_rxbuf));
}