Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
Pic32mxUart Class Reference
Inheritance diagram for Pic32mxUart:
Serial Node Device FileIO

Public Member Functions

 Pic32mxUart (const char *name, UART_MODULE periph, uint32_t int_vec, unsigned baud=115200, bool enable_rts_cts=false)
 
void enable () override
 This will be called once when reference-count goes from 0 to positive.
 
void disable () override
 This will be called when reference count goes from non-zero to 0.
 
void interrupt_handler ()
 
void tx_char () override
 Function to try and transmit a character.
 
- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 

Private Member Functions

bool receive_some_data ()
 Copies data from the RX fifo into the receive ring buffer.
 
bool send_some_data ()
 Copies data from the tx buffer to the hardware send register / fifo.
 
unsigned get_pclk ()
 
INT_SOURCE tx_int ()
 
INT_SOURCE rx_int ()
 
INT_VECTOR int_vector ()
 

Private Attributes

UART_MODULE hw_
 Enum describing which uart module we are using.
 
unsigned intVector_
 This is the hardware vector number for the UART module.
 
unsigned numIrq_ = 0
 Stats variable.
 
unsigned numIrqTx_ = 0
 Stats variable.
 
unsigned numIrqRx_ = 0
 Stats variable.
 

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

Definition at line 47 of file Pic32mxUart.hxx.

Constructor & Destructor Documentation

◆ Pic32mxUart()

Pic32mxUart::Pic32mxUart ( const char *  name,
UART_MODULE  periph,
uint32_t  int_vec,
unsigned  baud = 115200,
bool  enable_rts_cts = false 
)
inline

Definition at line 50 of file Pic32mxUart.hxx.

Member Function Documentation

◆ disable()

void Pic32mxUart::disable ( )
inlineoverridevirtual

This will be called when reference count goes from non-zero to 0.

Called with lock_ held.

Implements Node.

Definition at line 85 of file Pic32mxUart.hxx.

◆ enable()

void Pic32mxUart::enable ( )
inlineoverridevirtual

This will be called once when reference-count goes from 0 to positive.

Called with lock_ held.

Implements Node.

Definition at line 75 of file Pic32mxUart.hxx.

◆ get_pclk()

unsigned Pic32mxUart::get_pclk ( )
inlineprivate

Definition at line 172 of file Pic32mxUart.hxx.

◆ int_vector()

INT_VECTOR Pic32mxUart::int_vector ( )
inlineprivate

Definition at line 187 of file Pic32mxUart.hxx.

◆ interrupt_handler()

void Pic32mxUart::interrupt_handler ( )
inline

Definition at line 93 of file Pic32mxUart.hxx.

◆ receive_some_data()

bool Pic32mxUart::receive_some_data ( )
inlineprivate

Copies data from the RX fifo into the receive ring buffer.

Must be called from critical section or interrupt. Throws away data if the receive buffer is full (marking overrunCount).

Returns
true is some data showed up.

Definition at line 129 of file Pic32mxUart.hxx.

◆ rx_int()

INT_SOURCE Pic32mxUart::rx_int ( )
inlineprivate

Definition at line 182 of file Pic32mxUart.hxx.

◆ send_some_data()

bool Pic32mxUart::send_some_data ( )
inlineprivate

Copies data from the tx buffer to the hardware send register / fifo.

Updates the TX interrupt enable flag depending on why we stopped. Must be called from a critical section or interrupt.

Returns
true if some data was sent.

Definition at line 148 of file Pic32mxUart.hxx.

◆ tx_char()

void Pic32mxUart::tx_char ( )
inlineoverridevirtual

Function to try and transmit a character.

Implements Serial.

Definition at line 116 of file Pic32mxUart.hxx.

◆ tx_int()

INT_SOURCE Pic32mxUart::tx_int ( )
inlineprivate

Definition at line 177 of file Pic32mxUart.hxx.

Member Data Documentation

◆ hw_

UART_MODULE Pic32mxUart::hw_
private

Enum describing which uart module we are using.

We need to pass this to the middleware calls.

Definition at line 194 of file Pic32mxUart.hxx.

◆ intVector_

unsigned Pic32mxUart::intVector_
private

This is the hardware vector number for the UART module.

That is NOT the same as the INT_VECTOR enum.

Definition at line 197 of file Pic32mxUart.hxx.

◆ numIrq_

unsigned Pic32mxUart::numIrq_ = 0
private

Stats variable.

Definition at line 199 of file Pic32mxUart.hxx.

◆ numIrqRx_

unsigned Pic32mxUart::numIrqRx_ = 0
private

Stats variable.

Definition at line 203 of file Pic32mxUart.hxx.

◆ numIrqTx_

unsigned Pic32mxUart::numIrqTx_ = 0
private

Stats variable.

Definition at line 201 of file Pic32mxUart.hxx.


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