STDIO abstraction

Simple standard input/output (STDIO) abstraction for RIOT. More...

Detailed Description

Simple standard input/output (STDIO) abstraction for RIOT.

Modules

 STDIO for native
 Native CPU internal declarations.
 
 STDIO null driver
 Dummy implementation of the stdio interface.
 
 STDIO over CDC ACM (usbus)
 Standard input/output backend using usbus CDC ACM.
 
 STDIO over ESP32 Debug Serial/JTAG
 STDIO via the USB Serial/JTAG debug interface found on some ESP32 SoCs.
 
 STDIO over NimBLE
 To enable stdio over nimBLE, add the module stdio_nimble:
 
 STDIO over SEGGER RTT
 STDIO mapping for running the STDIO over SEGGER's RTT interface.
 
 STDIO over Semihosting
 Standard input/output backend using ARM Semihosting.
 
 STDIO over UART
 Standard input/output backend using UART.
 
 STDIO over UDP
 STDIO over UDP implementation.
 
 STDIO over USB CDC-ACM (tinyUSB)
 Standard input/output backend using tinyUSB CDC ACM.
 
 STDIO over telnet
 Standard input/output via telnet.
 
 STDIO via SLIP
 Standard input/output backend multiplexed via SLIP.
 
 STDIO via ethos
 Standard input/output backend multiplexed via ethernet-over-serial.
 

Files

file  stdio_base.h
 

Data Structures

struct  stdio_provider_t
 stdio provider struct More...
 

Macros

#define STDIO_RX_BUFSIZE   (64)
 Buffer size for STDIO. More...
 
#define STDIO_PROVIDER(_type, _open, _close, _write)
 stdio implementation methods More...
 

Enumerations

enum  {
  STDIO_NULL , STDIO_UART , STDIO_RTT , STDIO_SEMIHOSTING ,
  STDIO_USBUS_CDC_ACM , STDIO_TINYUSB_CDC_ACM , STDIO_ESP32_SERIAL_JTAG , STDIO_NIMBLE ,
  STDIO_UDP , STDIO_TELNET , STDIO_ETHOS , STDIO_SLIP
}
 

Functions

void stdio_init (void)
 initialize the module
 
int stdio_available (void)
 Get the number of bytes available for reading from stdio. More...
 
ssize_t stdio_read (void *buffer, size_t max_len)
 read len bytes from stdio uart into buffer More...
 
ssize_t stdio_write (const void *buffer, size_t len)
 write len bytes from buffer into STDOUT More...
 
void stdio_close (void)
 Disable stdio and detach stdio providers.
 

Variables

isrpipe_t stdin_isrpipe
 isrpipe for writing stdin input to
 

Macro Definition Documentation

◆ STDIO_PROVIDER

#define STDIO_PROVIDER (   _type,
  _open,
  _close,
  _write 
)
Value:
XFA_CONST(stdio_provider_xfa, 0) stdio_provider_t stdio_ ##_type = { \
.open = _open, \
.close = _close, \
.write = _write, \
};
stdio provider struct
Definition: stdio_base.h:62
#define XFA_CONST(xfa_name, prio)
Define variable in read-only cross-file array.
Definition: xfa.h:158

stdio implementation methods

Parameters
_typestdio provider type, for identification
_openattach / init function
_closeclose / disable function
_writewrite function

Definition at line 145 of file stdio_base.h.

◆ STDIO_RX_BUFSIZE

#define STDIO_RX_BUFSIZE   (64)

Buffer size for STDIO.

Definition at line 41 of file stdio_base.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
STDIO_NULL 

dummy stdio

STDIO_UART 

stdio via UART

STDIO_RTT 

stdio via Segger RTT

STDIO_SEMIHOSTING 

stdio via Semihosting

STDIO_USBUS_CDC_ACM 

stdio via USB CDC ACM (usbus)

STDIO_TINYUSB_CDC_ACM 

tdio via USB CDC ACM (TinyUSB)

STDIO_ESP32_SERIAL_JTAG 

stdio via ESP32 debug Serial/JTAG

STDIO_NIMBLE 

stdio via BLE (NimBLE)

STDIO_UDP 

stdio via UDP

STDIO_TELNET 

stdio via telnet

STDIO_ETHOS 

stdio via ethos (mutiplex)

Definition at line 44 of file stdio_base.h.

Function Documentation

◆ stdio_available()

int stdio_available ( void  )

Get the number of bytes available for reading from stdio.

Warning
This function is only available if the implementation supports it and the stdio_available module is enabled.
Returns
number of available bytes

◆ stdio_read()

ssize_t stdio_read ( void *  buffer,
size_t  max_len 
)

read len bytes from stdio uart into buffer

Parameters
[out]bufferbuffer to read into
[in]max_lennr of bytes to read
Returns
nr of bytes read
<0 on error

◆ stdio_write()

ssize_t stdio_write ( const void *  buffer,
size_t  len 
)

write len bytes from buffer into STDOUT

Note
Depending on the stdio backend(s) used, not all bytes might be written to stdout and accounted for if multiple backends are active, as not all stdout backends will do a blocking write.
Parameters
[in]bufferbuffer to read from
[in]lennr of bytes to write
Returns
nr of bytes written
<0 on error