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>
41 lines
1.1 KiB
ReStructuredText
41 lines
1.1 KiB
ReStructuredText
.. _console_getchar_sample:
|
|
|
|
console_getchar() Sample Application
|
|
####################################
|
|
|
|
Overview
|
|
********
|
|
|
|
This example shows how to use :cpp:func:`console_getchar()` function.
|
|
Similar to the well-known ANSI C getchar() function,
|
|
:cpp:func:`console_getchar()` either returns the next available input
|
|
character or blocks waiting for one. Using this function, it should be
|
|
fairly easy to port existing ANSI C, POSIX, or Linux applications which
|
|
process console input character by character. The sample also allows to
|
|
see key/character codes as returned by the function.
|
|
|
|
If you are interested in line by line console input, see
|
|
:ref:`console_getline_sample`.
|
|
|
|
|
|
Requirements
|
|
************
|
|
|
|
UART console is required to run this simple.
|
|
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
The easiest way to run this sample is using QEMU:
|
|
|
|
.. code-block:: console
|
|
|
|
$ cd samples/console/getchar
|
|
$ make BOARD=qemu_x86
|
|
$ make BOARD=qemu_x86 run
|
|
|
|
Now start pressing keys on a keyboard, and they will be printed both as
|
|
hex values and in character form. Be sure to press Enter, Up/Down, etc.
|
|
key to check what control characters are produced for them.
|