ChibiOS/HAL  7.0.4
Abstract Streams Interface
Collaboration diagram for Abstract Streams Interface:

Detailed Description

This module define an abstract interface for generic data streams. Note that no code is present, just abstract interfaces-like structures, you should look at the system as to a set of abstract C++ classes (even if written in C). This system has then advantage to make the access to data streams independent from the implementation logic.
The stream interface can be used as base class for high level object types such as files, sockets, serial ports, pipes etc.

Macros

#define _base_sequential_stream_methods
 BaseSequentialStream specific methods. More...
 
#define _base_sequential_stream_data   _base_object_data
 BaseSequentialStream specific data. More...
 

Streams return codes

#define STM_OK   MSG_OK
 
#define STM_TIMEOUT   MSG_TIMEOUT
 
#define STM_RESET   MSG_RESET
 

Macro Functions (BaseSequentialStream)

#define streamWrite(ip, bp, n)   ((ip)->vmt->write(ip, bp, n))
 Sequential Stream write. More...
 
#define streamRead(ip, bp, n)   ((ip)->vmt->read(ip, bp, n))
 Sequential Stream read. More...
 
#define streamPut(ip, b)   ((ip)->vmt->put(ip, b))
 Sequential Stream blocking byte write. More...
 
#define streamGet(ip)   ((ip)->vmt->get(ip))
 Sequential Stream blocking byte read. More...
 

Data Structures

struct  BaseSequentialStreamVMT
 BaseSequentialStream virtual methods table. More...
 
struct  BaseSequentialStream
 Base stream class. More...
 

Macro Definition Documentation

#define _base_sequential_stream_methods
Value:
/* Stream write buffer method.*/ \
size_t (*write)(void *instance, const uint8_t *bp, size_t n); \
/* Stream read buffer method.*/ \
size_t (*read)(void *instance, uint8_t *bp, size_t n); \
/* Channel put method, blocking.*/ \
msg_t (*put)(void *instance, uint8_t b); \
/* Channel get method, blocking.*/ \
msg_t (*get)(void *instance); \
int32_t msg_t
Type of a message.
Definition: osal.h:160
#define _base_object_methods
BaseObject specific methods.
Definition: hal_objects.h:39

BaseSequentialStream specific methods.

Definition at line 50 of file hal_streams.h.

#define _base_sequential_stream_data   _base_object_data

BaseSequentialStream specific data.

Note
It is empty because BaseSequentialStream is only an interface without implementation.

Definition at line 66 of file hal_streams.h.

#define streamWrite (   ip,
  bp,
 
)    ((ip)->vmt->write(ip, bp, n))

Sequential Stream write.

The function writes data from a buffer to a stream.

Parameters
[in]ippointer to a BaseSequentialStream or derived class
[in]bppointer to the data buffer
[in]nthe maximum amount of data to be transferred
Returns
The number of bytes transferred. The return value can be less than the specified number of bytes if an end-of-file condition has been met.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 106 of file hal_streams.h.

#define streamRead (   ip,
  bp,
 
)    ((ip)->vmt->read(ip, bp, n))

Sequential Stream read.

The function reads data from a stream into a buffer.

Parameters
[in]ippointer to a BaseSequentialStream or derived class
[out]bppointer to the data buffer
[in]nthe maximum amount of data to be transferred
Returns
The number of bytes transferred. The return value can be less than the specified number of bytes if an end-of-file condition has been met.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 121 of file hal_streams.h.

#define streamPut (   ip,
 
)    ((ip)->vmt->put(ip, b))

Sequential Stream blocking byte write.

This function writes a byte value to a channel. If the channel is not ready to accept data then the calling thread is suspended.

Parameters
[in]ippointer to a BaseChannel or derived class
[in]bthe byte value to be written to the channel
Returns
The operation status.
Return values
STM_OKif the operation succeeded.
STM_RESETif an end-of-file condition has been met.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 137 of file hal_streams.h.

Referenced by chvprintf().

#define streamGet (   ip)    ((ip)->vmt->get(ip))

Sequential Stream blocking byte read.

This function reads a byte value from a channel. If the data is not available then the calling thread is suspended.

Parameters
[in]ippointer to a BaseChannel or derived class
Returns
A byte value from the queue.
Return values
STM_RESETif an end-of-file condition has been met.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 151 of file hal_streams.h.