|
Open Model Railroad Network (OpenMRN)
|
Public Member Functions | |
| Stm32RailcomSender (const char *name, USART_TypeDef *base, IRQn_Type interrupt) | |
| void | send_ch1 (const DCCFeedback *ch1_pkt) override |
| Specifies what packet should be sent for the channel1 cutout. | |
| void | send_ch2 (const DCCFeedback *ch2_pkt) override |
| Specifies what packet should be sent for the channel2 cutout. | |
| ssize_t | write (File *file, const void *buf, size_t count) override |
| Write to a file or device. | |
| ssize_t | read (File *file, void *buf, size_t count) override |
| Read from a file or device. | |
Private Member Functions | |
| void | feedback_sample () override |
| No implementation needed. | |
| void | start_cutout () override |
| Called at the beginning of the first window. | |
| void | middle_cutout () override |
| Called at the beginning of the middle window. | |
| void | end_cutout () override |
| Called after the cutout is over. | |
| void | no_cutout () override |
| Called instead of start/mid/end-cutout at the end of the current packet if there was no cutout requested. | |
| void | set_feedback_key (uint32_t key) override |
| Feedback key is set by the DCC decoder driver. | |
Private Attributes | |
| uintptr_t | expectedFeedbackKey_ = 0 |
| What should be the feedback key in the packet. | |
| const DCCFeedback * | ch1Pkt_ = nullptr |
| The packet to send in channel 1. Externally owned. | |
| const DCCFeedback * | ch2Pkt_ = nullptr |
| The packet to send in channel 2. Externally owned. | |
Additional Inherited Members | |
Protected Member Functions inherited from Stm32Uart | |
| void | enable () override |
| function to enable device | |
| void | disable () override |
| function to disable device | |
| void | tx_char () override |
| Try and transmit a message. | |
| Stm32Uart (const char *name, USART_TypeDef *base, IRQn_Type interrupt) | |
| Constructor. | |
| ~Stm32Uart () | |
| Destructor. | |
| void | interrupt_handler () |
| handle an interrupt. | |
| int | ioctl (File *file, unsigned long int key, unsigned long data) override |
| Request an ioctl transaction. | |
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. | |
| 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. | |
| Device (const char *name) | |
| Constructor. | |
| virtual | ~Device () |
| Destructor. | |
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 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 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. | |
| 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 Attributes inherited from Stm32Uart | |
| IRQn_Type | interrupt |
| interrupt of this device | |
| UART_HandleTypeDef | uartHandle |
| Handle to the UART setup. | |
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 Stm32Uart | |
| static uint8_t | interrupt3_to_8EnableCnt = 0 |
| number of times interrupts have been enabled on these UART channels | |
| static uint8_t | interrupt2_8EnableCnt = 0 |
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 | |
Definition at line 41 of file Stm32RailcomSender.hxx.
|
inline |
Definition at line 44 of file Stm32RailcomSender.hxx.
|
inlineoverrideprivatevirtual |
Called after the cutout is over.
Implements RailcomDriver.
Definition at line 96 of file Stm32RailcomSender.hxx.
|
inlineoverrideprivatevirtual |
No implementation needed.
Implements RailcomDriver.
Definition at line 88 of file Stm32RailcomSender.hxx.
|
overrideprivatevirtual |
Called at the beginning of the middle window.
Implements RailcomDriver.
Definition at line 66 of file Stm32RailcomSender.cxx.
|
inlineoverrideprivatevirtual |
Called instead of start/mid/end-cutout at the end of the current packet if there was no cutout requested.
Implements RailcomDriver.
Definition at line 103 of file Stm32RailcomSender.hxx.
|
inlineoverridevirtual |
Read from a file or device.
| file | file reference for this device |
| buf | location to place read data |
| count | number of bytes to read |
Reimplemented from Serial.
Definition at line 79 of file Stm32RailcomSender.hxx.
|
inlineoverridevirtual |
Specifies what packet should be sent for the channel1 cutout.
It is okay to specify the same packet pointer for ch1 and ch2 cutout.
| ch1_pkt | the RailCom packet. Only the ch1 data will be read from this packet. This pointer must stay alive until the next DCC packet comes. The FeedbackKey in this packet must be correct for the current DCC packet or else the data will not be sent. |
Reimplemented from RailcomDriver.
Definition at line 57 of file Stm32RailcomSender.hxx.
|
inlineoverridevirtual |
Specifies what packet should be sent for the channel2 cutout.
It is okay to specify the same packet pointer for ch1 and ch2 cutout.
| ch2_pkt | the RailCom packet. Only the ch2 data will be read from this packet. This pointer must stay alive until the next DCC packet comes. The FeedbackKey in this packet must be correct for the current DCC packet or else the data will not be sent. |
Reimplemented from RailcomDriver.
Definition at line 68 of file Stm32RailcomSender.hxx.
|
inlineoverrideprivatevirtual |
Feedback key is set by the DCC decoder driver.
The feedback packet must carry the same feedback key or else it will not be transmitted.
Implements RailcomDriver.
Definition at line 111 of file Stm32RailcomSender.hxx.
|
overrideprivatevirtual |
Called at the beginning of the first window.
Implements RailcomDriver.
Definition at line 42 of file Stm32RailcomSender.cxx.
|
inlineoverridevirtual |
Write to a file or device.
| file | file reference for this device |
| buf | location to find write data |
| count | number of bytes to write |
Reimplemented from Serial.
Definition at line 73 of file Stm32RailcomSender.hxx.
|
private |
The packet to send in channel 1. Externally owned.
Definition at line 123 of file Stm32RailcomSender.hxx.
|
private |
The packet to send in channel 2. Externally owned.
Definition at line 125 of file Stm32RailcomSender.hxx.
|
private |
What should be the feedback key in the packet.
This value comes from the DCC driver and is compared to the RailCom packets we should be sending at the beginning of the cutout windows.
Definition at line 120 of file Stm32RailcomSender.hxx.