Skip to content

Drv::ByteStreamDriverModel Byte Stream Driver Model

The byte stream driver is a generic model for drivers implementing a "stream of bytes" interface. Typically these drivers operate with an outgoing stream and an incoming stream.
The outgoing stream is represented by the input send port; other components can invoke this port to send data through the driver. The incoming stream is represented by the output recv port; the driver will call this port to send data to the component that is receiving data from the driver.

Design

Send

The manager component (for example a radio manager) initiates the transfer of send data by calling the "send" port. The caller will provide a Fw::Buffer containing the data to send. The driver component must perform a callback on its sendReturnOut port to return the status of that send as well as returning ownership of the Fw::Buffer to the caller. These responses are an enumeration whose values are described in the following table:

Value Description Buffer Ownership
ByteStreamStatus::OP_OK Send functioned normally. Ownership of the Fw::Buffer passes to the byte stream driver.
ByteStreamStatus::SEND_RETRY Send should be retried, but a subsequent send should return OP_OK. The caller retains ownership of the Fw::Buffer.
ByteStreamStatus::OTHER_ERROR Send produced an error, future sends likely to fail. Ownership of the Fw::Buffer passes to the byte stream driver.

Receive

In the callback formation, the byte stream driver component initiates the transfer of received data by calling the "recv" output port. This port transfers any read data in a Fw::Buffer along with a status for the receive. This status is an enumeration whose values are described in the following table:

Value Description
ByteStreamStatus::OP_OK Receive functioned normally and buffer contains valid data.
ByteStreamStatus::RECV_NO_DATA Receive worked, but there was no data
ByteStreamStatus::OTHER_ERROR Receive produced an error and buffer contains no valid data.

The following components implement the byte stream model using a callback formation: - Drv::TcpClient: a F´ component wrapper of the tcp client - Drv::TcpServer: a F´ component wrapper of the tcp server - Drv::Udp: a F´ component wrapper of the udp - Drv::LinuxUartDriver

Requirements

Name Description Validation
BYTEDRV-001 The ByteStreamDriverModel shall provide the capability to send bytes inspection
BYTEDRV-002 The ByteStreamDriverModel shall provide the capability to produce bytes inspection