mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-02 06:22:23 +00:00
Console subsystem is intended to be a layer between console drivers and console clients, like e.g. shell. This change factors out code from shell which dealed with individial console drivers and moves it to console subsystem, under the name console_register_line_input(). To accommodate for this change, older console subsys Kconfig symbol is changed from CONFIG_CONSOLE_PULL to CONFIG_CONSOLE_SUBSYS (CONFIG_CONSOLE is already used by console drivers). This signifies that console subsystem is intended to deal with all of console aspects in Zephyr (existing and new), not just provide some "new" functionality on top of raw console drivers, like it initially started. Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
105 lines
3.6 KiB
C
105 lines
3.6 KiB
C
/*
|
|
* Copyright (c) 2017 Linaro Limited
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef __CONSOLE_H__
|
|
#define __CONSOLE_H__
|
|
|
|
#include <zephyr/types.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** @brief Initialize console_getchar()/putchar() calls.
|
|
*
|
|
* This function should be called once to initialize pull-style
|
|
* access to console via console_getchar() function and buffered
|
|
* output using console_putchar() function. This function supersedes,
|
|
* and incompatible with, callback (push-style) console handling
|
|
* (via console_input_fn callback, etc.).
|
|
*
|
|
* @return N/A
|
|
*/
|
|
void console_init(void);
|
|
|
|
/** @brief Get next char from console input buffer.
|
|
*
|
|
* Return next input character from console. If no characters available,
|
|
* this function will block. This function is similar to ANSI C
|
|
* getchar() function and is intended to ease porting of existing
|
|
* software. Before this function can be used, console_getchar_init()
|
|
* should be called once. This function is incompatible with native
|
|
* Zephyr callback-based console input processing, shell subsystem,
|
|
* or console_getline().
|
|
*
|
|
* @return A character read, including control characters.
|
|
*/
|
|
u8_t console_getchar(void);
|
|
|
|
/** @brief Output a char to console (buffered).
|
|
*
|
|
* Puts a character into console output buffer. It will be sent
|
|
* to a console asynchronously, e.g. using an IRQ handler.
|
|
*
|
|
* @return -1 on output buffer overflow, otherwise 0.
|
|
*/
|
|
int console_putchar(char c);
|
|
|
|
/** @brief Initialize console_getline() call.
|
|
*
|
|
* This function should be called once to initialize pull-style
|
|
* access to console via console_getline() function. This function
|
|
* supersedes, and incompatible with, callback (push-style) console
|
|
* handling (via console_input_fn callback, etc.).
|
|
*
|
|
* @return N/A
|
|
*/
|
|
void console_getline_init(void);
|
|
|
|
/** @brief Get next line from console input buffer.
|
|
*
|
|
* Return next input line from console. Until full line is available,
|
|
* this function will block. This function is similar to ANSI C
|
|
* gets() function (except a line is returned in system-owned buffer,
|
|
* and system takes care of the buffer overflow checks) and is
|
|
* intended to ease porting of existing software. Before this function
|
|
* can be used, console_getline_init() should be called once. This
|
|
* function is incompatible with native Zephyr callback-based console
|
|
* input processing, shell subsystem, or console_getchar().
|
|
*
|
|
* @return A pointer to a line read, not including EOL character(s).
|
|
* A line resides in a system-owned buffer, so an application
|
|
* should finish any processing of this line immediately
|
|
* after console_getline() call, or the buffer can be reused.
|
|
*/
|
|
char *console_getline(void);
|
|
|
|
/** @brief Initialize legacy fifo-based line input
|
|
*
|
|
* Input processing is started when string is typed in the console.
|
|
* Carriage return is translated to NULL making string always NULL
|
|
* terminated. Application before calling register function need to
|
|
* initialize two fifo queues mentioned below.
|
|
*
|
|
* This is a special-purpose function, it's recommended to use
|
|
* console_getchar() or console_getline() functions instead.
|
|
*
|
|
* @param avail_queue k_fifo queue keeping available line buffers
|
|
* @param out_queue k_fifo queue of entered lines which to be processed
|
|
* in the application code.
|
|
* @param completion callback for tab completion of entered commands
|
|
*/
|
|
void console_register_line_input(struct k_fifo *avail_queue,
|
|
struct k_fifo *out_queue,
|
|
u8_t (*completion)(char *str, u8_t len));
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __CONSOLE_H__ */
|