Pigweed
 
Loading...
Searching...
No Matches
pw::stream::UartStreamLinux Class Reference

pw::stream::NonSeekableReaderWriter implementation for UARTs on Linux. More...

#include <stream.h>

Inheritance diagram for pw::stream::UartStreamLinux:
pw::stream::NonSeekableReaderWriter pw::stream::ReaderWriter pw::stream::Stream

Classes

struct  Config
 

Public Member Functions

UartStreamLinuxoperator= (UartStreamLinux &&other)
 
 UartStreamLinux (UartStreamLinux &&other) noexcept
 
 UartStreamLinux (const UartStreamLinux &)=delete
 
UartStreamLinuxoperator= (const UartStreamLinux &)=delete
 
Status Open (const char *path, uint32_t baud_rate)
 
Status Open (const char *path, Config config)
 
void Close ()
 
- Public Member Functions inherited from pw::stream::NonSeekableReaderWriter
 operator NonSeekableReader & ()
 
 operator const NonSeekableReader & () const
 
 operator NonSeekableWriter & ()
 
 operator const NonSeekableWriter & () const
 
- Public Member Functions inherited from pw::stream::ReaderWriter
Readeras_reader ()
 
const Readeras_reader () const
 
 operator Reader & ()
 
 operator const Reader & () const
 
Writeras_writer ()
 
const Writeras_writer () const
 
 operator Writer & ()
 
 operator const Writer & () const
 
- Public Member Functions inherited from pw::stream::Stream
constexpr bool readable () const
 
constexpr bool writable () const
 
constexpr bool seekable () const
 
constexpr bool seekable (Whence origin) const
 True if the stream supports seeking from the specified origin.
 
Result< ByteSpan > Read (ByteSpan dest)
 
Result< ByteSpan > Read (void *dest, size_t size_bytes)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
Result< ByteSpan > ReadExact (ByteSpan const buffer)
 
Status Write (ConstByteSpan data)
 
Status Write (const void *data, size_t size_bytes)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
Status Write (const std::byte b)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
Status Seek (ptrdiff_t offset, Whence origin=kBeginning)
 
size_t Tell ()
 
size_t ConservativeReadLimit () const
 
size_t ConservativeWriteLimit () const
 

Private Member Functions

Status DoWrite (ConstByteSpan data) override
 Virtual Write() function implemented by derived classes.
 
StatusWithSize DoRead (ByteSpan dest) override
 Virtual Read() function implemented by derived classes.
 

Additional Inherited Members

- Public Types inherited from pw::stream::Stream
enum  Whence : uint8_t { kBeginning = 0b001 , kCurrent = 0b010 , kEnd = 0b100 }
 Positions from which to seek. More...
 
- Static Public Attributes inherited from pw::stream::Stream
static constexpr size_t kUnlimited = std::numeric_limits<size_t>::max()
 Value returned from read/write limit if unlimited.
 
static constexpr size_t kUnknownPosition = std::numeric_limits<size_t>::max()
 Returned by Tell() if getting the position is not supported.
 
- Protected Types inherited from pw::stream::Stream
enum class  LimitType : bool { kRead , kWrite }
 

Detailed Description

pw::stream::NonSeekableReaderWriter implementation for UARTs on Linux.

Member Function Documentation

◆ DoRead()

StatusWithSize pw::stream::UartStreamLinux::DoRead ( ByteSpan  destination)
overrideprivatevirtual

Virtual Read() function implemented by derived classes.

Implements pw::stream::Stream.

◆ DoWrite()

Status pw::stream::UartStreamLinux::DoWrite ( ConstByteSpan  data)
overrideprivatevirtual

Virtual Write() function implemented by derived classes.

Implements pw::stream::Stream.

◆ Open() [1/2]

Status pw::stream::UartStreamLinux::Open ( const char *  path,
Config  config 
)

Open a UART device using the specified Config struct.

Parameters
[in]pathPath to the TTY device.
[in]configUartStreamLinux configuration structure.
Returns
embed:rst:leading-asterisk
 
* 
*  .. pw-status-codes::
* 
*     OK: The device was successfully opened and configured.
* 
*     INVALID_ARGUMENT: Invalid config, for e.g. unsupported baud rate.
* 
*     FAILED_PRECONDITION: A device was already open.
* 
*     UNKNOWN: An error was returned by the operating system.
* 
*  

◆ Open() [2/2]

Status pw::stream::UartStreamLinux::Open ( const char *  path,
uint32_t  baud_rate 
)
inline

Open a UART device using the specified baud rate.

Parameters
[in]pathPath to the TTY device.
[in]baud_rateBaud rate to use for the device.
Returns
embed:rst:leading-asterisk
 
* 
*  .. pw-status-codes::
* 
*     OK: The device was successfully opened and configured.
* 
*     INVALID_ARGUMENT: An unsupported baud rate was supplied.
* 
*     FAILED_PRECONDITION: A device was already open.
* 
*     UNKNOWN: An error was returned by the operating system.
* 
*  

The documentation for this class was generated from the following file: