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

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

#include <CC32xxUart.hxx>

Inheritance diagram for CC32xxUart:
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
}
 
typedef void(* TxEnableMethod) ()
 Function point for the tx enable assert and deassert methods.
 

Public Member Functions

 CC32xxUart (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.
 
 ~CC32xxUart ()
 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.
 
 CC32xxUart ()
 Default constructor.
 
 DISALLOW_COPY_AND_ASSIGN (CC32xxUart)
 

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.
 
unsigned long base_
 base address of this device
 
uint32_t interrupt_: 8
 interrupt of this device
 
uint32_t baud_: 24
 desired baud rate
 
uint32_t uartMode_
 mode of the UART, 8 or 9 bit, 1 or 2 stop...
 
uint8_t txPending_
 transmission currently pending
 
uint8_t hwFIFO_
 true if hardware fifo is to be enabled, else false
 
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.
 
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.
 
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 CC32xx UART.

Definition at line 51 of file CC32xxUart.hxx.

Member Typedef Documentation

◆ TxEnableMethod

typedef void(* CC32xxUart::TxEnableMethod) ()

Function point for the tx enable assert and deassert methods.

Definition at line 64 of file CC32xxUart.hxx.

Member Enumeration Documentation

◆ Mode

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 54 of file CC32xxUart.hxx.

Constructor & Destructor Documentation

◆ CC32xxUart()

CC32xxUart::CC32xxUart ( 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

Definition at line 65 of file CC32xxUart.cxx.

◆ ~CC32xxUart()

CC32xxUart::~CC32xxUart ( )
inline

Destructor.

Definition at line 83 of file CC32xxUart.hxx.

Member Function Documentation

◆ disable()

void CC32xxUart::disable ( )
overrideprivatevirtual

function to disable device

Disable use of the device.

Implements Node.

Definition at line 128 of file CC32xxUart.cxx.

◆ enable()

void CC32xxUart::enable ( )
overrideprivatevirtual

function to enable device

Enable use of the device.

Implements Node.

Definition at line 112 of file CC32xxUart.cxx.

◆ interrupt_handler()

void CC32xxUart::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 286 of file CC32xxUart.cxx.

◆ ioctl()

int CC32xxUart::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 FileIO.

Definition at line 140 of file CC32xxUart.cxx.

◆ send()

void CC32xxUart::send ( )
private

Send data until there is no more space left.

Definition at line 235 of file CC32xxUart.cxx.

◆ set_mode()

void CC32xxUart::set_mode ( )
private

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

Definition at line 226 of file CC32xxUart.cxx.

◆ tx_char()

void CC32xxUart::tx_char ( )
overrideprivatevirtual

Try and transmit a message.

Implements Serial.

Definition at line 267 of file CC32xxUart.cxx.

Member Data Documentation

◆ base_

unsigned long CC32xxUart::base_
private

base address of this device

Definition at line 121 of file CC32xxUart.hxx.

◆ baud_

uint32_t CC32xxUart::baud_
private

desired baud rate

Definition at line 123 of file CC32xxUart.hxx.

◆ hwFIFO_

uint8_t CC32xxUart::hwFIFO_
private

true if hardware fifo is to be enabled, else false

Definition at line 126 of file CC32xxUart.hxx.

◆ interrupt_

uint32_t CC32xxUart::interrupt_
private

interrupt of this device

Definition at line 122 of file CC32xxUart.hxx.

◆ nineBit_

uint8_t CC32xxUart::nineBit_
private

true if using 9-bit reception

Definition at line 127 of file CC32xxUart.hxx.

◆ txComplete_

Notifiable* CC32xxUart::txComplete_ {nullptr}
private

Notifiable to invoke when the transmit engine has finished operation.

Definition at line 119 of file CC32xxUart.hxx.

◆ txEnableAssert_

TxEnableMethod CC32xxUart::txEnableAssert_
private

function pointer to a method that asserts the transmit enable.

Definition at line 113 of file CC32xxUart.hxx.

◆ txEnableDeassert_

TxEnableMethod CC32xxUart::txEnableDeassert_
private

function pointer to a method that deasserts the transmit enable.

Definition at line 116 of file CC32xxUart.hxx.

◆ txPending_

uint8_t CC32xxUart::txPending_
private

transmission currently pending

Definition at line 125 of file CC32xxUart.hxx.

◆ uartMode_

uint32_t CC32xxUart::uartMode_
private

mode of the UART, 8 or 9 bit, 1 or 2 stop...

Definition at line 124 of file CC32xxUart.hxx.


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