Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
Serial Class Referenceabstract

Private data for a serial device. More...

#include <Serial.hxx>

Inheritance diagram for Serial:
Node Device FileIO CC32xxUart LpcUart MbedRawUSBSerial Pic32mxCdc Pic32mxUart Stm32Uart TivaCdc TivaUart TivaUsbKeyboardDev

Protected Member Functions

 Serial (const char *name, size_t tx_buffer_size=config_serial_tx_buffer_size(), size_t rx_buffer_size=config_serial_rx_buffer_size())
 Constructor.
 
 ~Serial ()
 Destructor.
 
virtual void tx_char ()=0
 Function to try and transmit a character.
 
ssize_t read (File *file, void *buf, size_t count) OVERRIDE
 Read from a file or device.
 
ssize_t write (File *file, const void *buf, size_t count) OVERRIDE
 Write to a file or device.
 
int ioctl (File *file, unsigned long int key, unsigned long data) OVERRIDE
 Request an ioctl transaction.
 
bool select (File *file, int mode) OVERRIDE
 Device select method.
 
void flush_buffers () OVERRIDE
 Discards all pending buffers.
 
- Protected Member Functions inherited from Node
 Node (const char *name)
 Constructor.
 
virtual ~Node ()
 Destructor.
 
virtual void enable ()=0
 This will be called once when reference-count goes from 0 to positive.
 
virtual void disable ()=0
 This will be called when reference count goes from non-zero to 0.
 
int open (File *, const char *, int, int) OVERRIDE
 Open method.
 
int close (File *) OVERRIDE
 Close method.
 
virtual int fstat (File *file, struct stat *stat) override
 Get the status information of a file or device.
 
- Protected Member Functions inherited from FileIO
 FileIO (const char *name)
 Constructor.
 
virtual ~FileIO ()
 Destructor.
 
virtual off_t lseek (File *f, off_t offset, int whence)
 Seek method.
 
virtual int fcntl (File *file, int cmd, unsigned long data)
 Manipulate a file descriptor.
 

Protected Attributes

DeviceBuffer< uint8_t > * txBuf
 transmit buffer
 
DeviceBuffer< uint8_t > * rxBuf
 receive buffer
 
unsigned int overrunCount
 overrun count
 
- Protected Attributes inherited from Node
OSMutex lock_
 protects internal structures.
 
mode_t mode_
 File open mode, such as O_NONBLOCK.
 
unsigned int references_
 number of open references
 
- Protected Attributes inherited from FileIO
const char * name
 device name
 

Private Member Functions

 DISALLOW_COPY_AND_ASSIGN (Serial)
 

Additional Inherited Members

- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 
- Static Public Member Functions inherited from Device
static int open (struct _reent *reent, const char *path, int flags, int mode)
 Open a file or device.
 
static int close (struct _reent *reent, int fd)
 Close a file or device.
 
static int stat (struct _reent *reent, const char *path, struct stat *stat)
 Get the status information of a file or device.
 
static int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, long long timeout)
 POSIX select().
 
static void select_clear ()
 Clears the current thread's select bits.
 
- Static Public Member Functions inherited from FileIO
static ssize_t read (struct _reent *reent, int fd, void *buf, size_t count)
 Read from a file or device.
 
static ssize_t write (struct _reent *reent, int fd, const void *buf, size_t count)
 Write to a file or device.
 
static _off_t lseek (struct _reent *reent, int fd, _off_t offset, int whence)
 Change the offset index of a file or device.
 
static int fstat (struct _reent *reent, int fd, struct stat *stat)
 Get the status information of a file or device.
 
static int ioctl (int fd, unsigned long int key, unsigned long data)
 Request and ioctl transaction.
 
static int fcntl (int fd, int cmd, unsigned long data)
 Manipulate a file descriptor.
 
static bool is_device (int fd)
 Test if the file descriptor belongs to a device.
 
- Static Protected Member Functions inherited from Device
static void select_insert (SelectInfo *info)
 Add client to list of clients needing woken.
 
static void select_wakeup (SelectInfo *info)
 Wakeup the list of clients needing woken.
 
static void select_wakeup_from_isr (SelectInfo *info, int *woken)
 Wakeup the list of clients needing woken.
 
- Static Protected Member Functions inherited from FileIO
static int fd_alloc (void)
 Allocate a free file descriptor.
 
static void fd_free (int fd)
 Free up a file descriptor.
 
static Filefile_lookup (int fd)
 Looks up a reference to a File corresponding to a given file descriptor.
 
static int fd_lookup (File *file)
 Looks up a file descriptor corresponding to a given File reference.
 
- Static Protected Attributes inherited from FileIO
static const unsigned int numOpenFiles = 20
 
static File files []
 File descriptor pool.
 
static OSMutex mutex
 mutual exclusion for fileio
 

Detailed Description

Private data for a serial device.

Definition at line 45 of file Serial.hxx.

Constructor & Destructor Documentation

◆ Serial()

Serial::Serial ( const char *  name,
size_t  tx_buffer_size = config_serial_tx_buffer_size(),
size_t  rx_buffer_size = config_serial_rx_buffer_size() 
)
inlineprotected

Constructor.

Parameters
namedevice name in file system
tx_buffer_sizetransmit buffer size in bytes
rx_buffer_sizereceive buffer size in bytes

Definition at line 53 of file Serial.hxx.

◆ ~Serial()

Serial::~Serial ( )
inlineprotected

Destructor.

Definition at line 68 of file Serial.hxx.

Member Function Documentation

◆ flush_buffers()

void Serial::flush_buffers ( )
protectedvirtual

Discards all pending buffers.

Flush the receive and transmit buffers for this device.

Called after disable().

Implements Node.

Definition at line 42 of file Serial.cxx.

◆ ioctl()

int Serial::ioctl ( File file,
unsigned long int  key,
unsigned long  data 
)
protectedvirtual

Request an ioctl transaction.

Parameters
filefile reference for this device
keyioctl key
datakey data
filefile reference for this device
nodenode reference for this device
keyioctl key
datakey data

Reimplemented from FileIO.

Reimplemented in Stm32Uart, and TivaUart.

Definition at line 166 of file Serial.cxx.

◆ read()

ssize_t Serial::read ( File file,
void *  buf,
size_t  count 
)
protectedvirtual

Read from a file or device.

Parameters
filefile reference for this device
buflocation to place read data
countnumber of bytes to read
Returns
number of bytes read upon success, -1 upon failure with errno containing the cause

Implements FileIO.

Reimplemented in Stm32RailcomSender.

Definition at line 61 of file Serial.cxx.

◆ select()

bool Serial::select ( File file,
int  mode 
)
protectedvirtual

Device select method.

Default implementation returns true.

Parameters
filereference to the file
modeFREAD for read active, FWRITE for write active, 0 for exceptions
Returns
true if active, false if inactive

Default impementation returns true.

Parameters
filereference to the file
modeFREAD for read active, FWRITE for write active, 0 for exceptions
Returns
true if active, false if inactive

Reimplemented from FileIO.

Reimplemented in TivaCdc.

Definition at line 177 of file Serial.cxx.

◆ tx_char()

virtual void Serial::tx_char ( )
protectedpure virtual

Function to try and transmit a character.

Implemented in LpcUart, MbedRawUSBSerial, Pic32mxUart, Pic32mxCdc, Stm32Uart, CC32xxUart, TivaCdc, TivaUart, and TivaUsbKeyboardDev.

◆ write()

ssize_t Serial::write ( File file,
const void *  buf,
size_t  count 
)
protectedvirtual

Write to a file or device.

Parameters
filefile reference for this device
buflocation to find write data
countnumber of bytes to write
Returns
number of bytes written upon success, -1 upon failure with errno containing the cause

Implements FileIO.

Reimplemented in Stm32RailcomSender, and TivaCdc.

Definition at line 112 of file Serial.cxx.

Member Data Documentation

◆ overrunCount

unsigned int Serial::overrunCount
protected

overrun count

Definition at line 86 of file Serial.hxx.

◆ rxBuf

DeviceBuffer<uint8_t>* Serial::rxBuf
protected

receive buffer

Definition at line 85 of file Serial.hxx.

◆ txBuf

DeviceBuffer<uint8_t>* Serial::txBuf
protected

transmit buffer

Definition at line 84 of file Serial.hxx.


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