The serial port is an internal class which is attached to and then serviced by a specified SerialService thread.
More...
#include <serial.h>
Inheritance diagram for SerialPort:
Collaboration diagram for SerialPort:
Public Types
enum
Error {
errSuccess = 0,
errOpenNoTty,
errOpenFailed,
errSpeedInvalid,
errFlowInvalid,
errParityInvalid,
errCharsizeInvalid,
errStopbitsInvalid,
errOptionInvalid,
errResourceFailure,
errOutput,
errInput,
errTimeout,
errExtended
}
Public Member Functions
Derived setTimer to notify the service thread pool of changes in expected timeout.
More...
Derived incTimer to notify the service thread pool of a change in expected timeout.
More...
Set serial port speed for both input and output.
More...
Set the DTR mode off momentarily.
More...
Often used by a "catch" to fetch the last error of a thrown serial.
More...
Often used by a "catch" to fetch the user set error string of a thrown serial.
More...
Get the "buffer" size for buffered operations.
More...
Get the status of pending operations.
More...
Adjust a timeout based on the current time reference value either from object creation or the last
setTimer().
More...
Sleep until the current timer expires.
More...
This is used to "disable" the service thread from expiring the timer object.
More...
This is used by service threads to determine how much time remains before the timer expires based on a timeout specified in
setTimer() or
incTimer().
More...
This is used to determine how much time has elapsed since a timer port setTimer benchmark time was initially set.
More...
Protected Member Functions
Construct a tty serial port for a named serial device.
More...
Disconnect the
Serial Port from the service pool thread and shutdown the port.
More...
Used to indicate if the service thread should monitor pending data for us.
More...
Get the current state of the DetectPending flag.
More...
Used to indicate if output ready monitoring should be performed by the service thread.
More...
Get the current state of the DetectOutput flag.
More...
Called by the service thread when the objects timer has expired.
More...
Called by the service thread when input data is pending for this tty port.
More...
Called by the service thread when an exception has occured such as a hangup.
More...
int
output (void *buf, int len)
Transmit "send" data to the serial port.
More...
Perform when output is available for sending data.
More...
int
input (void *buf, int len)
Receive "input" for pending data from the serial port.
More...
void
open (const char *fname)
virtual int
aRead (char *Data, const int Length)
virtual int
aWrite (const char *Data, const int Length)
This service is used to throw all serial errors which usually occur during the serial constructor.
More...
This service is used to thow application defined serial errors where the application specific error code is a string.
More...
This method is used to turn the error handler on or off for "throwing" execptions by manipulating the thrown flag.
More...
Set packet read mode and "size" of packet read buffer.
More...
Set "line buffering" read mode and specifies the newline character to be used in seperating line records.
More...
Restore serial device to the original settings at time of open.
More...
Used to flush the input waiting queue.
More...
Used to flush any pending output data.
More...
Used to wait until all output has been sent.
More...
Used as the default destructor for ending serial I/O services.
More...
Used to initialize a newly opened serial file handle.
More...
Protected Attributes
Private Attributes
Friends
Detailed Description
The serial port is an internal class which is attached to and then serviced by a specified SerialService thread.
Derived versions of this class offer specific functionality such as serial integration protocols.
The TTYPort and TTYService classes are used to form thread-pool serviced serial I/O protocol sets. These can be used when one has a large number of serial devices to manage, and a single (or limited number of) thread(s) can then be used to service the tty port objects present. Each tty port supports a timer control and several virtual methods that the service thread can call when events occur. This model provides for "callback" event management, whereby the service thread performs a "callback" into the port object when events occur. Specific events supported include the expiration of a TTYPort timer, pending input data waiting to be read, and "sighup" connection breaks.
- Author
- David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m base class for thread pool serviced serial I/O.
Definition at line 631 of file serial.h.
Member Typedef Documentation
Member Enumeration Documentation
Enumerator |
---|
errSuccess |
errOpenNoTty |
errOpenFailed |
errSpeedInvalid |
errFlowInvalid |
errParityInvalid |
errCharsizeInvalid |
errStopbitsInvalid |
errOptionInvalid |
errResourceFailure |
errOutput |
errInput |
errTimeout |
errExtended |
Definition at line 101 of file serial.h.
Enumerator |
---|
flowNone |
flowSoft |
flowHard |
flowBoth |
Definition at line 119 of file serial.h.
Enumerator |
---|
parityNone |
parityOdd |
parityEven |
Definition at line 127 of file serial.h.
Enumerator |
---|
pendingInput |
pendingOutput |
pendingError |
Definition at line 134 of file serial.h.
Constructor & Destructor Documentation
const char *
name
)
protected |
Construct a tty serial port for a named serial device.
- Parameters
-
svc pool thread object.
name of tty port.
virtual SerialPort::~SerialPort
(
)
protectedvirtual |
Disconnect the Serial Port from the service pool thread and shutdown the port.
Member Function Documentation
virtual int Serial::aRead
(
char *
Data,
const int
Length
)
protectedvirtualinherited |
Reads from serial device.
- Parameters
-
Data Point to character buffer to receive data. Buffers MUST be at least Length + 1 bytes in size.
Length
Number of bytes to read.
virtual int Serial::aWrite
(
const char *
Data,
const int
Length
)
protectedvirtualinherited |
Writes to serial device.
- Parameters
-
Data Point to character buffer containing data to write. Buffers MUST
Length
Number of bytes to write.
void Serial::close
(
void
)
protectedinherited |
Closes the serial device.
void TimerPort::decTimer
(
timeout_t
timeout )
inherited |
Adjust a timeout based on the current time reference value either from object creation or the last setTimer().
This reference can be used to time synchronize realtime data over specified intervals and force expiration when a new frame should be released in a synchronized manner.
- Parameters
-
timeout delay in milliseconds from reference.
virtual void SerialPort::disconnect
(
void
)
protectedvirtual |
Called by the service thread when an exception has occured such as a hangup.
void Serial::endSerial
(
void
)
protectedinherited |
Used as the default destructor for ending serial I/O services.
It will restore the port to it's original state.
void TimerPort::endTimer
(
void
)
inherited |
This is used to "disable" the service thread from expiring the timer object.
It does not effect the reference time from either creation or a setTimer().
char *
errstr = NULL
)
protectedinherited |
This service is used to throw all serial errors which usually occur during the serial constructor.
- Parameters
-
error defined serial error id.
errstr string or message to optionally pass.
void Serial::error
(
char *
err )
inlineprotectedinherited |
This service is used to thow application defined serial errors where the application specific error code is a string.
- Parameters
-
err string or message to pass.
Definition at line 209 of file serial.h.
virtual void SerialPort::expired
(
void
)
protectedvirtual |
Called by the service thread when the objects timer has expired.
void Serial::flushInput
(
void
)
protectedinherited |
Used to flush the input waiting queue.
void Serial::flushOutput
(
void
)
protectedinherited |
Used to flush any pending output data.
int Serial::getBufferSize
(
void
)
inlineinherited |
Get the "buffer" size for buffered operations.
This can be used when setting packet or line read modes to determine how many bytes to wait for in a given read call.
- Returns
- number of bytes used for buffering.
Definition at line 387 of file serial.h.
bool SerialPort::getDetectOutput
(
void
)
const
inlineprotected |
Get the current state of the DetectOutput flag.
Definition at line 681 of file serial.h.
bool SerialPort::getDetectPending
(
void
)
const
inlineprotected |
Get the current state of the DetectPending flag.
Definition at line 669 of file serial.h.
timeout_t TimerPort::getElapsed
(
void
)
const
inherited |
This is used to determine how much time has elapsed since a timer port setTimer benchmark time was initially set.
This allows one to use setTimer() to set the timer to the current time and then measure elapsed time from that point forward.
return time elapsed in milliseconds, or TIMEOUT_INF if inactive.
Error Serial::getErrorNumber
(
void
)
inlineinherited |
Often used by a "catch" to fetch the last error of a thrown serial.
- Returns
- error numbr of last Error.
Definition at line 368 of file serial.h.
char* Serial::getErrorString
(
void
)
inlineinherited |
Often used by a "catch" to fetch the user set error string of a thrown serial.
- Returns
- string for error message.
Definition at line 377 of file serial.h.
This is used by service threads to determine how much time remains before the timer expires based on a timeout specified in setTimer() or incTimer().
It can also be called after setting a timeout with incTimer() to see if the current timeout has already expired and hence that the application is already delayed and should skip frame(s).
return time remaining in milliseconds, or TIMEOUT_INF if inactive.
void SerialPort::incTimer
(
timeout_t
timeout )
Derived incTimer to notify the service thread pool of a change in expected timeout.
This allows SerialService to reschedule all timers.
void Serial::initConfig
(
void
)
protectedinherited |
Used to initialize a newly opened serial file handle.
You should set serial properties and DTR manually before first use.
int SerialPort::input
(
void *
buf,
int
len
)
inlineprotected |
Receive "input" for pending data from the serial port.
This is not a public member since it's meant to support internal protocols rather than direct external access to the device.
- Returns
- number of bytes received.
- Parameters
-
buf address of buffer to input.
len of input buffer used.
Definition at line 729 of file serial.h.
virtual bool Serial::isPending
(
Pending
pend,
)
virtualinherited |
Get the status of pending operations.
This can be used to examine if input or output is waiting, or if an error has occured on the serial device.
- Returns
- true if ready, false if timeout.
- Parameters
-
pend ready check to perform.
timeout in milliseconds.
Reimplemented in TTYStream.
void Serial::open
(
const char *
fname )
protectedinherited |
Opens the serial device.
- Parameters
-
fname Pathname of device to open
int SerialPort::output
(
void *
buf,
int
len
)
inlineprotected |
Transmit "send" data to the serial port.
This is not public since it's meant to support internal protocols rather than direct public access to the device.
- Returns
- number of bytes send.
- Parameters
-
buf address of buffer to send.
len of bytes to send.
Definition at line 712 of file serial.h.
virtual void SerialPort::output
(
void
)
protectedvirtual |
Perform when output is available for sending data.
virtual void SerialPort::pending
(
void
)
protectedvirtual |
Called by the service thread when input data is pending for this tty port.
Effected by setPacketInput and by setLineInput.
void Serial::restore
(
void
)
protectedinherited |
Restore serial device to the original settings at time of open.
void Serial::sendBreak
(
void
)
inherited |
Error Serial::setCharBits
(
int
bits )
inherited |
Set character size.
- Returns
- 0 on success.
- Parameters
-
bits character size to use (usually 7 or 8).
void SerialPort::setDetectOutput
(
bool
)
protected |
Used to indicate if output ready monitoring should be performed by the service thread.
void SerialPort::setDetectPending
(
bool
)
protected |
Used to indicate if the service thread should monitor pending data for us.
void Serial::setError
(
bool
enable )
inlineprotectedinherited |
This method is used to turn the error handler on or off for "throwing" execptions by manipulating the thrown flag.
- Parameters
-
enable true to enable handler.
Definition at line 219 of file serial.h.
Set flow control.
- Returns
- 0 on success.
- Parameters
-
flow control mode.
int Serial::setLineInput
(
char
newline = 13
,
char
nl1 = 0
)
protectedinherited |
Set "line buffering" read mode and specifies the newline character to be used in seperating line records.
isPending can then be used to wait for an entire line of input.
- Parameters
-
newline newline character.
nl1 EOL2 control character.
- Returns
- size of conical input buffer.
int Serial::setPacketInput
(
int
size,
unsigned char
btimer = 0
)
protectedinherited |
Set packet read mode and "size" of packet read buffer.
This sets VMIN to x. VTIM is normally set to "0" so that "isPending()" can wait for an entire packet rather than just the first byte.
- Returns
- actual buffer size set.
- Parameters
-
size of packet read request.
btimer optional inter-byte data packet timeout.
Set parity mode.
- Returns
- 0 on success.
- Parameters
-
parity mode.
Error Serial::setSpeed
(
unsigned long
speed )
inherited |
Set serial port speed for both input and output.
- Returns
- 0 on success.
- Parameters
-
speed to select. 0 signifies modem "hang up".
Error Serial::setStopBits
(
int
bits )
inherited |
Set number of stop bits.
- Returns
- 0 on success.
- Parameters
-
bits stop bits.
void SerialPort::setTimer
(
timeout_t
timeout =
0
)
Derived setTimer to notify the service thread pool of changes in expected timeout.
This allows SerialService to reschedule all timers.
- Parameters
-
timeout in milliseconds.
void TimerPort::sleepTimer
(
void
)
inherited |
Sleep until the current timer expires.
This is useful in time syncing realtime periodic tasks.
void Serial::toggleDTR
(
timeout_t
millisec )
inherited |
Set the DTR mode off momentarily.
- Parameters
-
millisec number of milliseconds.
void Serial::waitOutput
(
void
)
protectedinherited |
Used to wait until all output has been sent.
Friends And Related Function Documentation
Field Documentation
int Serial::bufsize
protectedinherited |
bool SerialPort::detect_disconnect
private |
bool SerialPort::detect_output
private |
bool SerialPort::detect_pending
private |
bool Serial::linebuf
inherited |
bool Serial::thrown
inherited |
The documentation for this class was generated from the following file:
Generated on Dec 21, 2017 for
commoncpp2-1.8.1,
ccrtp-1.7.2,
libzrtpcpp-2.3.4,
ccscript3-1.1.7,
ccaudio2-1.0.0 and
bayonne2-2.3.2
(after installation in /usr/local/)
by
doxygen 1.8.6