|
Open Model Railroad Network (OpenMRN)
|
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>
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 TivaUsbKeyboardDev * | instance () |
| 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 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 | |
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.
| TivaUsbKeyboardDev::TivaUsbKeyboardDev | ( | const char * | name, |
| uint32_t | interrupt | ||
| ) |
Definition at line 248 of file TivaUsbKeyboardDev.cxx.
|
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.
|
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.
| 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.
|
private |
Internal implementation that sends a single keyboard event, from a critical section or in an interrupt context.
Definition at line 287 of file TivaUsbKeyboardDev.cxx.
|
overridevirtual |
Function to try and transmit a character.
Implements Serial.
Definition at line 269 of file TivaUsbKeyboardDev.cxx.
|
private |
Number of transmission errors. These occur in the USB device stack.
Definition at line 80 of file TivaUsbKeyboardDev.hxx.
|
private |
Whether the USB host has connected to this device.
Definition at line 85 of file TivaUsbKeyboardDev.hxx.
|
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.
|
private |
Whether we need to send a key up command still.
Definition at line 92 of file TivaUsbKeyboardDev.hxx.
|
private |
Keyboard driver structure.
Definition at line 82 of file TivaUsbKeyboardDev.hxx.
|
private |
Whether we have a pending unfinished send.
Definition at line 90 of file TivaUsbKeyboardDev.hxx.