Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
TivaUart Class Reference

Specialization of Serial driver for Tiva UART. More...

#include <TivaDev.hxx>

Inheritance diagram for TivaUart:
Serial Node Device FileIO

Public Types

enum  Mode {
  CS5 = UART_CONFIG_WLEN_5 , CS6 = UART_CONFIG_WLEN_6 , CS7 = UART_CONFIG_WLEN_7 , CS8 = UART_CONFIG_WLEN_8 ,
  CSTOPB = UART_CONFIG_STOP_TWO
}
 These mode bits need to be OR-ed together for the mode argument and ioctl. More...
 
typedef void(* TxEnableMethod) ()
 Function point for the tx enable assert and deassert methods.
 

Public Member Functions

 TivaUart (const char *name, unsigned long base, uint32_t interrupt, uint32_t baud=115200, uint32_t mode=CS8, bool hw_fifo=true, TxEnableMethod tx_enable_assert=nullptr, TxEnableMethod tx_enable_deassert=nullptr)
 Constructor.
 
 ~TivaUart ()
 Destructor.
 
void interrupt_handler ()
 handle an interrupt.
 
int ioctl (File *file, unsigned long int key, unsigned long data) override
 Request an ioctl transaction.
 
- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 

Private Member Functions

void enable () override
 function to enable device
 
void disable () override
 function to disable device
 
void tx_char () override
 Try and transmit a message.
 
void send ()
 Send data until there is no more space left.
 
void set_mode ()
 Sets the port baud rate and mode from the class variables.
 
 TivaUart ()
 Default constructor.
 
 DISALLOW_COPY_AND_ASSIGN (TivaUart)
 

Private Attributes

TxEnableMethod txEnableAssert_
 function pointer to a method that asserts the transmit enable.
 
TxEnableMethod txEnableDeassert_
 function pointer to a method that deasserts the transmit enable.
 
NotifiabletxComplete_ {nullptr}
 Notifiable to invoke when the transmit engine has finished operation.
 
uint32_t base_
 base address of this device
 
uint32_t interrupt_: 8
 interrupt of this device
 
uint32_t baud_: 24
 desired baud rate
 
uint8_t hwFIFO_
 enable HW FIFO
 
uint8_t uartMode_
 uart config (mode) flags
 
uint8_t txPending_
 transmission currently pending
 
uint8_t nineBit_
 true if using 9-bit reception
 

Additional Inherited Members

- 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.
 
- Protected Member Functions inherited from 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())
 Constructor.
 
 ~Serial ()
 Destructor.
 
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.
 
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.
 
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.
 
- 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.
 
- Protected Attributes inherited from Serial
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
 
- 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

Specialization of Serial driver for Tiva UART.

Definition at line 155 of file TivaDev.hxx.

Member Typedef Documentation

◆ TxEnableMethod

typedef void(* TivaUart::TxEnableMethod) ()

Function point for the tx enable assert and deassert methods.

Definition at line 170 of file TivaDev.hxx.

Member Enumeration Documentation

◆ Mode

These mode bits need to be OR-ed together for the mode argument and ioctl.

Enumerator
CS5 

5-bits word length

CS6 

6-bits word length

CS7 

7-bits word length

CS8 

8-bits word length

CSTOPB 

send two stop bits instead of 1

Definition at line 160 of file TivaDev.hxx.

Constructor & Destructor Documentation

◆ TivaUart()

TivaUart::TivaUart ( const char *  name,
unsigned long  base,
uint32_t  interrupt,
uint32_t  baud = 115200,
uint32_t  mode = CS8,
bool  hw_fifo = true,
TxEnableMethod  tx_enable_assert = nullptr,
TxEnableMethod  tx_enable_deassert = nullptr 
)

Constructor.

Parameters
namename of this device instance in the file system
basebase address of this device
interruptinterrupt number of this device
bauddesired baud rate
modeto configure the UART for
hw_fifotrue if hardware fifo is to be enabled, else false.
tx_enable_assertcallback to assert the transmit enable
tx_enable_deassertcallback to deassert the transmit enable
namename of this device instance in the file system
basebase address of this device
interruptinterrupt number of this device

Definition at line 62 of file TivaUart.cxx.

◆ ~TivaUart()

TivaUart::~TivaUart ( )
inline

Destructor.

Definition at line 189 of file TivaDev.hxx.

Member Function Documentation

◆ disable()

void TivaUart::disable ( )
overrideprivatevirtual

function to disable device

Disable use of the device.

Implements Node.

Definition at line 149 of file TivaUart.cxx.

◆ enable()

void TivaUart::enable ( )
overrideprivatevirtual

function to enable device

Enable use of the device.

Implements Node.

Definition at line 133 of file TivaUart.cxx.

◆ interrupt_handler()

void TivaUart::interrupt_handler ( )

handle an interrupt.

Common interrupt handler for all UART devices.

Todo:
(Stuart Baker) this should be made private
Todo:
(Stuart Baker) optimization opportunity by getting a write pointer to fill the fifo and then advance the buffer when finished

Definition at line 208 of file TivaUart.cxx.

◆ ioctl()

int TivaUart::ioctl ( File file,
unsigned long int  key,
unsigned long  data 
)
overridevirtual

Request an ioctl transaction.

Supported ioctl is TCSBRK, TCDRAINNOTIFY, TCSTOP*, TCBAUDRATE and TCPAR* from include/freertos/tc_ioctl.h

Parameters
filefile reference for this device
keyioctl key
datakey data
Returns
0 upon success, -errno upon failure

Reimplemented from Serial.

Definition at line 294 of file TivaUart.cxx.

◆ send()

void TivaUart::send ( )
private

Send data until there is no more space left.

Definition at line 157 of file TivaUart.cxx.

◆ set_mode()

void TivaUart::set_mode ( )
private

Sets the port baud rate and mode from the class variables.

Definition at line 283 of file TivaUart.cxx.

◆ tx_char()

void TivaUart::tx_char ( )
overrideprivatevirtual

Try and transmit a message.

Implements Serial.

Definition at line 189 of file TivaUart.cxx.

Member Data Documentation

◆ base_

uint32_t TivaUart::base_
private

base address of this device

Definition at line 226 of file TivaDev.hxx.

◆ baud_

uint32_t TivaUart::baud_
private

desired baud rate

Definition at line 228 of file TivaDev.hxx.

◆ hwFIFO_

uint8_t TivaUart::hwFIFO_
private

enable HW FIFO

Definition at line 229 of file TivaDev.hxx.

◆ interrupt_

uint32_t TivaUart::interrupt_
private

interrupt of this device

Definition at line 227 of file TivaDev.hxx.

◆ nineBit_

uint8_t TivaUart::nineBit_
private

true if using 9-bit reception

Definition at line 232 of file TivaDev.hxx.

◆ txComplete_

Notifiable* TivaUart::txComplete_ {nullptr}
private

Notifiable to invoke when the transmit engine has finished operation.

Definition at line 224 of file TivaDev.hxx.

◆ txEnableAssert_

TxEnableMethod TivaUart::txEnableAssert_
private

function pointer to a method that asserts the transmit enable.

Definition at line 218 of file TivaDev.hxx.

◆ txEnableDeassert_

TxEnableMethod TivaUart::txEnableDeassert_
private

function pointer to a method that deasserts the transmit enable.

Definition at line 221 of file TivaDev.hxx.

◆ txPending_

uint8_t TivaUart::txPending_
private

transmission currently pending

Definition at line 231 of file TivaDev.hxx.

◆ uartMode_

uint8_t TivaUart::uartMode_
private

uart config (mode) flags

Definition at line 230 of file TivaDev.hxx.


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