libserial::serialstreambuf(3)
NAME
LibSerial::SerialStreamBuf
This is the streambuf subclass used by SerialStream.
SYNOPSIS
#include <SerialStreamBuf.h> Public Types Enumerations enum BaudRateEnum { BAUD_50 = B50, BAUD_75 = B75, BAUD_110 = B110, BAUD_134 = B134, BAUD_150 = B150, BAUD_200 = B200, BAUD_300 = B300, BAUD_600 = B600, BAUD_1200 = B1200, BAUD_1800 = B1800, BAUD_2400 = B2400, BAUD_4800 = B4800, BAUD_9600 = B9600, BAUD_19200 = B19200, BAUD_38400 = B38400, BAUD_57600 = B57600, BAUD_115200 = B115200, BAUD_INVALID } The baud rates currently supported by the SUS-2 general terminal interface specification. enum CharSizeEnum { CHAR_SIZE_5 = CS5, CHAR_SIZE_6 = CS6, CHAR_SIZE_7 = CS7, CHAR_SIZE_8 = CS8, CHAR_SIZE_INVALID } The allowed values of character sizes that can be used during the serial communication. enum ParityEnum { PARITY_EVEN, PARITY_ODD, PARITY_NONE, PARITY_INVALID } The allowed values of the parity associated with the serial port communications. enum FlowControlEnum { FLOW_CONTROL_HARD, FLOW_CONTROL_SOFT, FLOW_CONTROL_NONE, FLOW_CONTROL_INVALID } The values of the flow control settings for a serial port. Public Member Functions Constructors and Destructor SerialStreamBuf () The default constructor. ~SerialStreamBuf () The destructor. Other Public Methods bool is_open () const Returns true if a previos call to open() succeeded (returned a non-null value) and there has been no intervening call to close. SerialStreamBuf * open (const std::string filename, std::ios_base::openmode mode=std::ios_base::in|std::ios_base::out) If is_open() != false, returns a null pointer. SerialStreamBuf * close () If is_open() == false, returns a null pointer. int SetParametersToDefault () Initialize the serial communication parameters to their default values. const BaudRateEnum SetBaudRate (const BaudRateEnum baud_rate) If is_open() != true, return -1. const BaudRateEnum BaudRate () const Return the current baud rate of the serial port. const CharSizeEnum SetCharSize (const CharSizeEnum char_size) Set the character size to be used during serial communication. const CharSizeEnum CharSize () const Return the character size currently being used for serial communication. short SetNumOfStopBits (short stop_bits) Set the number of stop bits used during serial communication. short NumOfStopBits () const Get the number of stop bits being used during serial communication. const ParityEnum SetParity (const ParityEnum parity) Set the parity for serial communication. const ParityEnum Parity () const Get the current parity setting for the serial port. const FlowControlEnum SetFlowControl (const FlowControlEnum flow_c) Use the specified flow control. const FlowControlEnum FlowControl () const Return the current flow control setting. const short SetVMin (short vtime) Set character buffer size. const short VMin () const Get current size of character buffer. const short SetVTime (short vtime) Set character buffer timing in 10th of a second. const short VTime () const Get current timing of character buffer in 10th of a second. Static Public Attributes Public static members. static const BaudRateEnum DEFAULT_BAUD The default value of the baud rate of the serial port. static const CharSizeEnum DEFAULT_CHAR_SIZE The default value of the character size used during the serial communication. static const short DEFAULT_NO_OF_STOP_BITS The default number of stop bits used. static const ParityEnum DEFAULT_PARITY The default parity setting. static const FlowControlEnum DEFAULT_FLOW_CONTROL The default flow control setting. static const short DEFAULT_VMIN The default character buffer size. static const short DEFAULT_VTIME The default character buffer timing. Protected Member Functions virtual std::streambuf * setbuf (char_type *, std::streamsize) Performs an operation that is defined separately for each class derived from streambuf. virtual std::streamsize xsgetn (char_type *s, std::streamsize n) Reads upto n characters from the serial port and returns them through the character array located at s. virtual std::streamsize showmanyc () Check, wether input is available on the port. virtual int_type underflow () Reads and returns the next character from the associated serial port if one otherwise returns traits::eof(). virtual int_type uflow () Reads and returns the next character from the associated serial port if one otherwise returns traits::eof(). virtual int_type pbackfail (int_type c=traits_type::eof()) This function is called when a putback of a character fails. virtual std::streamsize xsputn (const char_type *s, std::streamsize n) Writes upto n characters from the character sequence at s to the serial port associated with the buffer. virtual int_type overflow (int_type c) Writes the specified character to the associated serial port. Static Protected Attributes static const char CTRL_Q = 0x11 Character used to signal that I/O can start while using software flow control with the serial port. static const char CTRL_S = 0x13 Character used to signal that I/O should stop while using software flow control with the serial port. Private Member Functions int InitializeSerialPort () This routine is called by open() in order to initialize some parameters of the serial port and setting its parameters to default values. Private Attributes char mPutbackChar We use unbuffered I/O for the serial port. bool mPutbackAvailable True if a putback value is available in mPutbackChar. int mFileDescriptor The file descriptor associated with the serial port.
Detailed Description
This is the streambuf subclass used by SerialStream.
This subclass takes care of opening the serial port file in the
required modes and providing the corresponding file descriptor to
SerialStream so that various parameters associated with the serial port
can be set. Several features of this streambuf class resemble those of
std::filebuf, however this class it not made a subclass of filebuf
because we need access to the file descriptor associated with the
serial port and the standard filebuf does not provide access to it.
At present, this class uses unbuffered I/O and all calls to setbuf()
will be ignored.
Author:
Author.RS 4 crayzeewulf
Manish P. Pagey
Version:
Id.RS 4 SerialStreamBuf.h,v 1.9 2005/10/17 00:19:12 crayzeewulf Exp
Definition at line 36 of file SerialStreamBuf.h.
Member Enumeration Documentation
- enum LibSerial::SerialStreamBuf::BaudRateEnum
- The baud rates currently supported by the SUS-2 general terminal
interface specification. Note that B0 is not supported because it is
not really a baud rate (it causes the modem to hang up i.e. drop DTR). Use the close() method instead. - Enumerator:
- BAUD_50
50 baud.
- BAUD_75
75 baud.
- BAUD_110
110 baud.
- BAUD_134
134.5 baud. Yes 134.5. I did not mistype that.
- BAUD_150
150 baud.
- BAUD_200
200 baud.
- BAUD_300
300 baud.
- BAUD_600
600 baud.
- BAUD_1200
1200 baud.
- BAUD_1800
1800 baud.
- BAUD_2400
2400 baud.
- BAUD_4800
4800 baud.
- BAUD_9600
9600 baud.
- BAUD_19200
19200 baud.
- BAUD_38400
38400 baud.
- BAUD_57600
57600 baud.
- BAUD_115200
115200 baud.
- BAUD_INVALID
Invalid baud rate.
- Definition at line 54 of file SerialStreamBuf.h.
- enum LibSerial::SerialStreamBuf::CharSizeEnum
- The allowed values of character sizes that can be used during the
serial communication. - Enumerator:
- CHAR_SIZE_5
5 bit characters.
- CHAR_SIZE_6
6 bit characters.
- CHAR_SIZE_7
7 bit characters.
- CHAR_SIZE_8
8 bit characters.
- CHAR_SIZE_INVALID
Invalid character size.
- Definition at line 79 of file SerialStreamBuf.h.
- enum LibSerial::SerialStreamBuf::FlowControlEnum
- The values of the flow control settings for a serial port.
- Enumerator:
- FLOW_CONTROL_HARD
Hardware flow control.
- FLOW_CONTROL_SOFT
Software flow control.
- FLOW_CONTROL_NONE
No flow control.
- FLOW_CONTROL_INVALID
Invalid flow control setting.
- Definition at line 102 of file SerialStreamBuf.h.
- enum LibSerial::SerialStreamBuf::ParityEnum
- The allowed values of the parity associated with the serial port
communications. - Enumerator:
- PARITY_EVEN
Even parity.
- PARITY_ODD
Odd parity.
- PARITY_NONE
No parity i.e. parity checking disabled.
- PARITY_INVALID
Invalid parity value.
- Definition at line 91 of file SerialStreamBuf.h.
Constructor & Destructor Documentation
- LibSerial::SerialStreamBuf::SerialStreamBuf () [inline]
- The default constructor.
- Definition at line 499 of file SerialStreamBuf.h.
- LibSerial::SerialStreamBuf::~SerialStreamBuf () [inline]
- The destructor.
- Definition at line 509 of file SerialStreamBuf.h.
Member Function Documentation
- const BaudRateEnum LibSerial::SerialStreamBuf::BaudRate () const
- Return the current baud rate of the serial port. If the baud rate is
not set to a valid value then it returns BAUD_INVALID. - const CharSizeEnum LibSerial::SerialStreamBuf::CharSize () const
- Return the character size currently being used for serial
communication. - SerialStreamBuf * LibSerial::SerialStreamBuf::close () [inline]
- If is_open() == false, returns a null pointer. If a put area exists, calls overflow(EOF) to flush characters. Finally it closes the file by calling std::close(mFileDescriptor) where mFileDescriptor is the value returned by the last call to open().
- For the implementation of the corresponding function in class filebuf,
if the last virtual member function called on *this (between underflow,
overflow, seekoff, and seekpos) was overflow then it calls
a_codecvt.unshift (possible several times) to determine a termination
sequence, inserts those characters and calls overflow(EOF) again.
However, this is not implemented here yet. - Postcondition: is_open() == false
- Returns:
this on success, a null pointer otherwise.
- Definition at line 533 of file SerialStreamBuf.h.
- const FlowControlEnum LibSerial::SerialStreamBuf::FlowControl () const
- Return the current flow control setting.
- int LibSerial::SerialStreamBuf::InitializeSerialPort () [private]
- This routine is called by open() in order to initialize some parameters
of the serial port and setting its parameters to default values.
Returns:-1 on failure and some other value on success. - bool LibSerial::SerialStreamBuf::is_open () const [inline]
- Returns true if a previos call to open() succeeded (returned a non-null value) and there has been no intervening call to close.
- Definition at line 519 of file SerialStreamBuf.h.
- short LibSerial::SerialStreamBuf::NumOfStopBits () const
- Get the number of stop bits being used during serial communication.
Returns:The number of stop bits. - SerialStreamBuf* LibSerial::SerialStreamBuf::open (const std::string
- filename, std::ios_base::openmode mode =
std::ios_base::in|std::ios_base::out)
If is_open() != false, returns a null pointer. Otherwise, initializes
the streambuf as required. It then opens a file, if possible, whose
name is given as the string filename using the system call
std::open(filename.c_str(), flags). The value of parameter flags is
obtained from the value of the parameter mode. At present, only
ios_base::in, ios_base::out, and (ios_base::in|ios_baseout) make sense for a serial port and hence all other settings result in the call to
fail. The value of flags is obtained as: - flags = u_flags | O_NOCTTY
- where u_flags is obtained from the following table depending on the
value of the parameter mode: - in out u_flags + O_RDONLY + O_WRONLY + + O_RDWR
- Returns:
If the open() system call succeeds the method returns this. If the call fails, then it returns a null pointer.
- virtual int_type LibSerial::SerialStreamBuf::overflow (int_type c)
- [protected, virtual]
Writes the specified character to the associated serial port. Returns:The character c. - const ParityEnum LibSerial::SerialStreamBuf::Parity () const
- Get the current parity setting for the serial port. Returns:
The parity setting for the serial port.
- virtual int_type LibSerial::SerialStreamBuf::pbackfail (int_type c =
- traits_type::eof()) [protected, virtual]
This function is called when a putback of a character fails. This must
be implemented for unbuffered I/O as all streambuf subclasses are
required to provide putback of at lease on character. - const BaudRateEnum LibSerial::SerialStreamBuf::SetBaudRate (const
- BaudRateEnum baud_rate)
If is_open() != true, return -1. Otherwise, set the baud rate of the associated serial port. Return the baud rate on success and
BAUD_INVALID on failure. - std::streambuf * LibSerial::SerialStreamBuf::setbuf (char_type *,
- std::streamsize) [inline, protected, virtual]
Performs an operation that is defined separately for each class derived
from streambuf. The default behavior is to do nothing if gptr() is nonnull and gptr()!=egptr(). Also, setbuf(0, 0) usually means unbuffered
I/O and setbuf(p, n) means use p[0]...p[n-1] to hold the buffered
characters. In general, this method implements the subclass's notion of getting memory for the buffered characters. - In the case of SerialStreamBuf, we want to keep using unbuffered I/O. Hence, using this method has no effect at present.
- Definition at line 526 of file SerialStreamBuf.h.
- const CharSizeEnum LibSerial::SerialStreamBuf::SetCharSize (const
- CharSizeEnum char_size)
Set the character size to be used during serial communication. It
returns the character size on success and CHAR_SIZE_INVALID on failure. - const FlowControlEnum LibSerial::SerialStreamBuf::SetFlowControl (const
- FlowControlEnum flow_c)
Use the specified flow control. - short LibSerial::SerialStreamBuf::SetNumOfStopBits (short stop_bits)
- Set the number of stop bits used during serial communication. The only valid values are 1 and 2.
- Parameters:
stop_bits The number of stop bits. (1 or 2).
- Returns:
The number of stop bits or -1 on failure.
- int LibSerial::SerialStreamBuf::SetParametersToDefault ()
- Initialize the serial communication parameters to their default values.
- const ParityEnum LibSerial::SerialStreamBuf::SetParity (const ParityEnum
- parity)
Set the parity for serial communication. Parameters:parity The parity value. - const short LibSerial::SerialStreamBuf::SetVMin (short vtime)
- Set character buffer size.
- const short LibSerial::SerialStreamBuf::SetVTime (short vtime)
- Set character buffer timing in 10th of a second.
- virtual std::streamsize LibSerial::SerialStreamBuf::showmanyc ()
- [protected, virtual]
Check, wether input is available on the port. If you call
SerialStream::in_avail, this method will be called to check for
available input.
while( serial_port.rdbuf()->in_avail() > 0 ) {serial_port.get(ch);
...} - std::streambuf::int_type LibSerial::SerialStreamBuf::uflow () [inline,
- protected, virtual]
Reads and returns the next character from the associated serial port if one otherwise returns traits::eof(). This method is used for unbuffered I/O while underflow() is called for unbuffered I/O. - Returns:
The next character from the serial port.
- Definition at line 564 of file SerialStreamBuf.h.
- virtual int_type LibSerial::SerialStreamBuf::underflow () [protected,
- virtual]
Reads and returns the next character from the associated serial port if one otherwise returns traits::eof(). This method is used for buffered
I/O while uflow() is called for unbuffered I/O. - Returns:
The next character from the serial port.
- const short LibSerial::SerialStreamBuf::VMin () const
- Get current size of character buffer.
- const short LibSerial::SerialStreamBuf::VTime () const
- Get current timing of character buffer in 10th of a second.
- virtual std::streamsize LibSerial::SerialStreamBuf::xsgetn (char_type * s,
- std::streamsize n) [protected, virtual]
Reads upto n characters from the serial port and returns them through
the character array located at s. Returns:The number of characters actually read from the serial port. - virtual std::streamsize LibSerial::SerialStreamBuf::xsputn (const char_type
- * s, std::streamsize n) [protected, virtual]
Writes upto n characters from the character sequence at s to the serial
port associated with the buffer. Returns:
The number of characters that were successfully written to the
serial port.
Member Data Documentation
- const char LibSerial::SerialStreamBuf::CTRL_Q = 0x11 [static, protected]
- Character used to signal that I/O can start while using software flow
control with the serial port. - Definition at line 374 of file SerialStreamBuf.h.
- const char LibSerial::SerialStreamBuf::CTRL_S = 0x13 [static, protected]
- Character used to signal that I/O should stop while using software flow control with the serial port.
- Definition at line 380 of file SerialStreamBuf.h.
- const BaudRateEnum LibSerial::SerialStreamBuf::DEFAULT_BAUD [static]
- The default value of the baud rate of the serial port.
- Definition at line 121 of file SerialStreamBuf.h.
- const CharSizeEnum LibSerial::SerialStreamBuf::DEFAULT_CHAR_SIZE [static]
- The default value of the character size used during the serial
communication. - Definition at line 127 of file SerialStreamBuf.h.
- const FlowControlEnum LibSerial::SerialStreamBuf::DEFAULT_FLOW_CONTROL
- [static]
The default flow control setting. - Definition at line 142 of file SerialStreamBuf.h.
- const short LibSerial::SerialStreamBuf::DEFAULT_NO_OF_STOP_BITS [static]
- The default number of stop bits used.
- Definition at line 132 of file SerialStreamBuf.h.
- const ParityEnum LibSerial::SerialStreamBuf::DEFAULT_PARITY [static]
- The default parity setting.
- Definition at line 137 of file SerialStreamBuf.h.
- const short LibSerial::SerialStreamBuf::DEFAULT_VMIN [static]
- The default character buffer size.
- Definition at line 147 of file SerialStreamBuf.h.
- const short LibSerial::SerialStreamBuf::DEFAULT_VTIME [static]
- The default character buffer timing.
- Definition at line 152 of file SerialStreamBuf.h.
- int LibSerial::SerialStreamBuf::mFileDescriptor [private]
- The file descriptor associated with the serial port.
- Definition at line 484 of file SerialStreamBuf.h.
- bool LibSerial::SerialStreamBuf::mPutbackAvailable [private]
- True if a putback value is available in mPutbackChar.
- Definition at line 479 of file SerialStreamBuf.h.
- char LibSerial::SerialStreamBuf::mPutbackChar [private]
- We use unbuffered I/O for the serial port. However, we need to provide
the putback of atleast one character. This character contains the
putback character. - Definition at line 474 of file SerialStreamBuf.h.
Author
- Generated automatically by Doxygen for libserial from the source code.