Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
Serial.hxx
Go to the documentation of this file.
1
34#ifndef _FREERTOS_DRIVERS_COMMON_SERIAL_HXX_
35#define _FREERTOS_DRIVERS_COMMON_SERIAL_HXX_
36
37#include "BlockOrWakeUp.hxx"
38#include "SimpleLog.hxx"
39#include "Devtab.hxx"
40#include "nmranet_config.h"
41#include "os/OS.hxx"
42#include "DeviceBuffer.hxx"
43
45class Serial : public Node
46{
47protected:
53 Serial(const char *name,
54 size_t tx_buffer_size = config_serial_tx_buffer_size(),
55 size_t rx_buffer_size = config_serial_rx_buffer_size())
56 : Node(name)
57 , txBuf(tx_buffer_size ? DeviceBuffer<uint8_t>::create(tx_buffer_size,
58 tx_buffer_size/2)
59 : NULL)
60 , rxBuf(rx_buffer_size ? DeviceBuffer<uint8_t>::create(rx_buffer_size)
61 : NULL)
62 , overrunCount(0)
63 {
64 }
65
69 {
70 if (txBuf)
71 {
72 txBuf->destroy();
73 }
74 if (rxBuf)
75 {
76 rxBuf->destroy();
77 }
78 }
79
82 virtual void tx_char() = 0;
83
86 unsigned int overrunCount;
94 ssize_t read(File *file, void *buf, size_t count) OVERRIDE;
95
102 ssize_t write(File *file, const void *buf, size_t count) OVERRIDE;
103
109 int ioctl(File *file, unsigned long int key, unsigned long data) OVERRIDE;
110
117 bool select(File* file, int mode) OVERRIDE;
118
120 void flush_buffers() OVERRIDE;
121
122private:
124};
125
126#endif /* _FREERTOS_DRIVERS_COMMON_SERIAL_HXX_ */
Implements a smart buffer specifically designed for character device drivers.
void destroy()
Destroy an existing DeviceBuffer instance.
const char * name
device name
Definition Devtab.hxx:266
Node information.
Definition Devtab.hxx:549
Private data for a serial device.
Definition Serial.hxx:46
DeviceBuffer< uint8_t > * rxBuf
receive buffer
Definition Serial.hxx:85
DeviceBuffer< uint8_t > * txBuf
transmit buffer
Definition Serial.hxx:84
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.
Definition Serial.hxx:53
bool select(File *file, int mode) OVERRIDE
Device select method.
Definition Serial.cxx:177
void flush_buffers() OVERRIDE
Discards all pending buffers.
Definition Serial.cxx:42
~Serial()
Destructor.
Definition Serial.hxx:68
virtual void tx_char()=0
Function to try and transmit a character.
ssize_t write(File *file, const void *buf, size_t count) OVERRIDE
Write to a file or device.
Definition Serial.cxx:112
unsigned int overrunCount
overrun count
Definition Serial.hxx:86
ssize_t read(File *file, void *buf, size_t count) OVERRIDE
Read from a file or device.
Definition Serial.cxx:61
int ioctl(File *file, unsigned long int key, unsigned long data) OVERRIDE
Request an ioctl transaction.
Definition Serial.cxx:166
#define OVERRIDE
Function attribute for virtual functions declaring that this funciton is overriding a funciton that s...
Definition macros.h:180
#define DISALLOW_COPY_AND_ASSIGN(TypeName)
Removes default copy-constructor and assignment added by C++.
Definition macros.h:171
File information.
Definition Devtab.hxx:52