|
Open Model Railroad Network (OpenMRN)
|
Specialization of Serial driver for Tiva UART. More...
#include <TivaDev.hxx>
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. | |
| Notifiable * | txComplete_ {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 File * | file_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 | |
Specialization of Serial driver for Tiva UART.
Definition at line 155 of file TivaDev.hxx.
| typedef void(* TivaUart::TxEnableMethod) () |
Function point for the tx enable assert and deassert methods.
Definition at line 170 of file TivaDev.hxx.
| enum TivaUart::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.
| 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.
| name | name of this device instance in the file system |
| base | base address of this device |
| interrupt | interrupt number of this device |
| baud | desired baud rate |
| mode | to configure the UART for |
| hw_fifo | true if hardware fifo is to be enabled, else false. |
| tx_enable_assert | callback to assert the transmit enable |
| tx_enable_deassert | callback to deassert the transmit enable |
| name | name of this device instance in the file system |
| base | base address of this device |
| interrupt | interrupt number of this device |
Definition at line 62 of file TivaUart.cxx.
|
inline |
Destructor.
Definition at line 189 of file TivaDev.hxx.
|
overrideprivatevirtual |
function to disable device
Disable use of the device.
Implements Node.
Definition at line 149 of file TivaUart.cxx.
|
overrideprivatevirtual |
function to enable device
Enable use of the device.
Implements Node.
Definition at line 133 of file TivaUart.cxx.
| void TivaUart::interrupt_handler | ( | ) |
handle an interrupt.
Common interrupt handler for all UART devices.
Definition at line 208 of file TivaUart.cxx.
|
overridevirtual |
Request an ioctl transaction.
Supported ioctl is TCSBRK, TCDRAINNOTIFY, TCSTOP*, TCBAUDRATE and TCPAR* from include/freertos/tc_ioctl.h
| file | file reference for this device |
| key | ioctl key |
| data | key data |
Reimplemented from Serial.
Definition at line 294 of file TivaUart.cxx.
|
private |
Send data until there is no more space left.
Definition at line 157 of file TivaUart.cxx.
|
private |
Sets the port baud rate and mode from the class variables.
Definition at line 283 of file TivaUart.cxx.
|
overrideprivatevirtual |
|
private |
base address of this device
Definition at line 226 of file TivaDev.hxx.
|
private |
desired baud rate
Definition at line 228 of file TivaDev.hxx.
|
private |
enable HW FIFO
Definition at line 229 of file TivaDev.hxx.
|
private |
interrupt of this device
Definition at line 227 of file TivaDev.hxx.
|
private |
true if using 9-bit reception
Definition at line 232 of file TivaDev.hxx.
|
private |
Notifiable to invoke when the transmit engine has finished operation.
Definition at line 224 of file TivaDev.hxx.
|
private |
function pointer to a method that asserts the transmit enable.
Definition at line 218 of file TivaDev.hxx.
|
private |
function pointer to a method that deasserts the transmit enable.
Definition at line 221 of file TivaDev.hxx.
|
private |
transmission currently pending
Definition at line 231 of file TivaDev.hxx.
|
private |
uart config (mode) flags
Definition at line 230 of file TivaDev.hxx.