blob: c3862d0f20a655404f24602913f17e5d0637e732 [file] [log] [blame]
.. _module-pw_stream_uart_linux:
====================
pw_stream_uart_linux
====================
``pw_stream_uart_linux`` implements the
:cpp:class:`pw::stream::NonSeekableReaderWriter` interface for reading from and
writing to a UART using Linux TTY interfaces.
.. note::
This module will likely be superseded by a future ``pw_uart`` interface.
C++
===
.. doxygenclass:: pw::stream::UartStreamLinux
:members:
Examples
========
A simple example illustrating only changing baud-rate and writing to a UART:
.. code-block:: cpp
constexpr const char* kUartPath = "/dev/ttyS0";
constexpr pw::stream::UartStreamLinux::Config kConfig = {
.baud_rate = 115200,
// Flow control is unmodified on tty.
};
pw::stream::UartStreamLinux stream;
PW_TRY(stream.Open(kUartPath, kConfig));
std::array<std::byte, 10> to_write = {};
PW_TRY(stream.Write(to_write));
A simple example illustrating enabling flow control and writing to a UART:
.. code-block:: cpp
constexpr const char* kUartPath = "/dev/ttyS0";
constexpr pw::stream::UartStreamLinux::Config kConfig = {
.baud_rate = 115200,
.flow_control = true, // Enable hardware flow control.
};
pw::stream::UartStreamLinux stream;
PW_TRY(stream.Open(kUartPath, kConfig));
std::array<std::byte, 10> to_write = {};
PW_TRY(stream.Write(to_write));
Caveats
=======
No interfaces are supplied for configuring data bits, stop bits, or parity.
These attributes are left as they are already configured on the TTY; only the
speed or flow control is modified.