mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-13 07:31:57 +00:00
This change introduces console_getchar() and console_getline() API calls which can be used to get pending console input (either one char or whole line), or block waiting for one. In this regard, they are similar to well-known ANSI C function getchar/gets/fgets, and are intended to ease porting of existing applications to Zephyr, and indeed, these functions (shaped as an external module) are already used by few applications. The implementation of the functions is structured as a new "console" subsystem. The intention is that further generic console code may be pulled there instead of being in drivers/console/. Besides the functions themselves, initialization code and sample applications are included. At this time, there're may limitations of how these functions can be used. For example, console_getchar() and console_getline() are mutually exclusive, and both are incompatible with callback (push-style) console API (and e.g. with console shell subsystem which uses this API). Again, the intention is to make a first step towards refactoring console subsystem to allow more flexible real-world usage, better reusability and composability. Change-Id: I3f4015bb5b26e0656f82f428b11ba30e980d25a0 Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
74 lines
2.4 KiB
C
74 lines
2.4 KiB
C
/*
|
|
* Copyright (c) 2017 Linaro Limited
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef __CONSOLE_H__
|
|
#define __CONSOLE_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** @brief Initialize console_getchar() call.
|
|
*
|
|
* This function should be called once to initialize pull-style
|
|
* access to console via console_getchar() function. This function
|
|
* supercedes, and incompatible with, callback (push-style) console
|
|
* handling (via console_input_fn callback, etc.).
|
|
*
|
|
* @return N/A
|
|
*/
|
|
void console_getchar_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.
|
|
*/
|
|
uint8_t console_getchar(void);
|
|
|
|
/** @brief Initialize console_getline() call.
|
|
*
|
|
* This function should be called once to initialize pull-style
|
|
* access to console via console_getline() function. This function
|
|
* supercedes, 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);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __CONSOLE_H__ */
|