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

This device driver appears as a virtual serial port to the OpenMRN application, and appears as an USB keyboard to the connected computer. More...

#include <TivaUsbKeyboardDev.hxx>

Inheritance diagram for TivaUsbKeyboardDev:
Serial Singleton< TivaUsbKeyboardDev > Node Device FileIO

Public Member Functions

 TivaUsbKeyboardDev (const char *name, uint32_t interrupt)
 
void tx_char () override
 Function to try and transmit a character.
 
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.
 
uint32_t keyboard_handler (uint32_t ui32Event, uint32_t ui32MsgData, void *pvMsgData)
 Callback from the keyboard driver. Called in an interrupt context.
 
- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 

Private Member Functions

bool send_next_event ()
 Internal implementation that sends a single keyboard event, from a critical section or in an interrupt context.
 

Private Attributes

unsigned errorCount_ {0}
 Number of transmission errors. These occur in the USB device stack.
 
tUSBDHIDKeyboardDevice tivaKeyboardDevice_
 Keyboard driver structure.
 
uint8_t isConnected_: 1
 Whether the USB host has connected to this device.
 
uint8_t isSuspended_: 1
 Whether the USB bus is suspended.
 
uint8_t txPending_: 1
 Whether we have a pending unfinished send.
 
uint8_t keyUpPending_: 1
 Whether we need to send a key up command still.
 

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.
 
- Static Public Member Functions inherited from Singleton< TivaUsbKeyboardDev >
static TivaUsbKeyboardDevinstance ()
 
static bool exists ()
 
- 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

This device driver appears as a virtual serial port to the OpenMRN application, and appears as an USB keyboard to the connected computer.

Any strings that are written to the serial device from OpenMRN will be sent as keystrokes typed to the host computer.

Definition at line 60 of file TivaUsbKeyboardDev.hxx.

Constructor & Destructor Documentation

◆ TivaUsbKeyboardDev()

TivaUsbKeyboardDev::TivaUsbKeyboardDev ( const char *  name,
uint32_t  interrupt 
)

Definition at line 248 of file TivaUsbKeyboardDev.cxx.

Member Function Documentation

◆ disable()

void TivaUsbKeyboardDev::disable ( )
inlineoverridevirtual

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

Called with lock_ held.

Implements Node.

Definition at line 68 of file TivaUsbKeyboardDev.hxx.

◆ enable()

void TivaUsbKeyboardDev::enable ( )
inlineoverridevirtual

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

Called with lock_ held.

Implements Node.

Definition at line 67 of file TivaUsbKeyboardDev.hxx.

◆ keyboard_handler()

uint32_t TivaUsbKeyboardDev::keyboard_handler ( uint32_t  ui32Event,
uint32_t  ui32MsgData,
void *  pvMsgData 
)

Callback from the keyboard driver. Called in an interrupt context.

Definition at line 322 of file TivaUsbKeyboardDev.cxx.

◆ send_next_event()

bool TivaUsbKeyboardDev::send_next_event ( )
private

Internal implementation that sends a single keyboard event, from a critical section or in an interrupt context.

Returns
true if the txBuf needs to be signaled.

Definition at line 287 of file TivaUsbKeyboardDev.cxx.

◆ tx_char()

void TivaUsbKeyboardDev::tx_char ( )
overridevirtual

Function to try and transmit a character.

Implements Serial.

Definition at line 269 of file TivaUsbKeyboardDev.cxx.

Member Data Documentation

◆ errorCount_

unsigned TivaUsbKeyboardDev::errorCount_ {0}
private

Number of transmission errors. These occur in the USB device stack.

Definition at line 80 of file TivaUsbKeyboardDev.hxx.

◆ isConnected_

uint8_t TivaUsbKeyboardDev::isConnected_
private

Whether the USB host has connected to this device.

Definition at line 85 of file TivaUsbKeyboardDev.hxx.

◆ isSuspended_

uint8_t TivaUsbKeyboardDev::isSuspended_
private

Whether the USB bus is suspended.

This means we need a special wakeup call before sending more keys.

Definition at line 88 of file TivaUsbKeyboardDev.hxx.

◆ keyUpPending_

uint8_t TivaUsbKeyboardDev::keyUpPending_
private

Whether we need to send a key up command still.

Definition at line 92 of file TivaUsbKeyboardDev.hxx.

◆ tivaKeyboardDevice_

tUSBDHIDKeyboardDevice TivaUsbKeyboardDev::tivaKeyboardDevice_
private

Keyboard driver structure.

Definition at line 82 of file TivaUsbKeyboardDev.hxx.

◆ txPending_

uint8_t TivaUsbKeyboardDev::txPending_
private

Whether we have a pending unfinished send.

Definition at line 90 of file TivaUsbKeyboardDev.hxx.


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