/*
 * Copyright (c) 2017 Linaro Limited.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr.h>
#include <drivers/uart.h>
#include <drivers/console/console.h>
#include <drivers/console/uart_console.h>

/* While app processes one input line, Zephyr will have another line
 * buffer to accumulate more console input.
 */
static struct console_input line_bufs[2];

static K_FIFO_DEFINE(free_queue);
static K_FIFO_DEFINE(used_queue);

char *console_getline(void)
{
	static struct console_input *cmd;

	/* Recycle cmd buffer returned previous time */
	if (cmd != NULL) {
		k_fifo_put(&free_queue, cmd);
	}

	cmd = k_fifo_get(&used_queue, K_FOREVER);
	return cmd->line;
}

void console_getline_init(void)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(line_bufs); i++) {
		k_fifo_put(&free_queue, &line_bufs[i]);
	}

	/* Zephyr UART handler takes an empty buffer from free_queue,
	 * stores UART input in it until EOL, and then puts it into
	 * used_queue.
	 */
	uart_register_input(&free_queue, &used_queue, NULL);
}
