diff --git a/docs/index.html b/docs/index.html index db189b9..58d0502 100644 --- a/docs/index.html +++ b/docs/index.html @@ -37,6 +37,7 @@

Documentation:

diff --git a/docs/v1.0.1/annotated.html b/docs/v1.0.1/annotated.html new file mode 100644 index 0000000..47250bd --- /dev/null +++ b/docs/v1.0.1/annotated.html @@ -0,0 +1,118 @@ + + + + + +serial: Data Structures + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + + + + + + + +
serial::IOException
serial::PortNotOpenedException
serial::Serial::ScopedReadLock
serial::Serial::ScopedWriteLock
serial::Serial
serial::SerialExecption
serial::serial::Serial::SerialImpl
serial::Timeout
+
+ + + + + + diff --git a/docs/v1.0.1/bc_s.png b/docs/v1.0.1/bc_s.png new file mode 100644 index 0000000..51ba006 Binary files /dev/null and b/docs/v1.0.1/bc_s.png differ diff --git a/docs/v1.0.1/bdwn.png b/docs/v1.0.1/bdwn.png new file mode 100644 index 0000000..d0b575b Binary files /dev/null and b/docs/v1.0.1/bdwn.png differ diff --git a/docs/v1.0.1/class_serial_1_1_scoped_read_lock.html b/docs/v1.0.1/class_serial_1_1_scoped_read_lock.html new file mode 100644 index 0000000..b9517fa --- /dev/null +++ b/docs/v1.0.1/class_serial_1_1_scoped_read_lock.html @@ -0,0 +1,166 @@ + + + + + +serial: serial::Serial::ScopedReadLock Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
serial::Serial::ScopedReadLock Class Reference
+
+
+ + + + +

+Public Member Functions

 ScopedReadLock (SerialImpl *pimpl)
 ~ScopedReadLock ()
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
serial::Serial::ScopedReadLock::ScopedReadLock (SerialImpl * pimpl) [inline]
+
+
+
                                    : pimpl_(pimpl) {
+    this->pimpl_->readLock();
+  }
+
+
+
+ +
+ +
+
                    {
+    this->pimpl_->readUnlock();
+  }
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + + + diff --git a/docs/v1.0.1/class_serial_1_1_scoped_write_lock.html b/docs/v1.0.1/class_serial_1_1_scoped_write_lock.html new file mode 100644 index 0000000..ee56ce7 --- /dev/null +++ b/docs/v1.0.1/class_serial_1_1_scoped_write_lock.html @@ -0,0 +1,166 @@ + + + + + +serial: serial::Serial::ScopedWriteLock Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
serial::Serial::ScopedWriteLock Class Reference
+
+
+ + + + +

+Public Member Functions

 ScopedWriteLock (SerialImpl *pimpl)
 ~ScopedWriteLock ()
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
serial::Serial::ScopedWriteLock::ScopedWriteLock (SerialImpl * pimpl) [inline]
+
+
+
                                     : pimpl_(pimpl) {
+    this->pimpl_->writeLock();
+  }
+
+
+
+ +
+ +
+
                     {
+    this->pimpl_->writeUnlock();
+  }
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + + + diff --git a/docs/v1.0.1/classes.html b/docs/v1.0.1/classes.html new file mode 100644 index 0000000..c3d41ea --- /dev/null +++ b/docs/v1.0.1/classes.html @@ -0,0 +1,123 @@ + + + + + +serial: Data Structure Index + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
+
Data Structure Index
+
+
+
I | P | S | T
+ + + + + + + + +
  I  
+
  S  
+
Serial (serial)   
SerialExecption (serial)   
IOException (serial)   Serial::ScopedReadLock   SerialImpl (serial::serial::Serial)   
  P  
+
Serial::ScopedWriteLock   
  T  
+
PortNotOpenedException (serial)   Timeout (serial)   
+
I | P | S | T
+
+ + + + + + diff --git a/docs/v1.0.1/classserial_1_1_i_o_exception.html b/docs/v1.0.1/classserial_1_1_i_o_exception.html new file mode 100644 index 0000000..7fa76db --- /dev/null +++ b/docs/v1.0.1/classserial_1_1_i_o_exception.html @@ -0,0 +1,280 @@ + + + + + +serial: serial::IOException Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
serial::IOException Class Reference
+
+
+ +

#include <serial.h>

+ + + + + + + + +

+Public Member Functions

 IOException (std::string file, int line, int errnum)
 IOException (std::string file, int line, const char *description)
virtual ~IOException () throw ()
 IOException (const IOException &other)
int getErrorNumber ()
virtual const char * what () const throw ()
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
serial::IOException::IOException (std::string file,
int line,
int errnum 
) [inline, explicit]
+
+
+
  : file_(file), line_(line), e_what_ (strerror (errnum)), errno_(errnum) {}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
serial::IOException::IOException (std::string file,
int line,
const char * description 
) [inline, explicit]
+
+
+
  : file_(file), line_(line), e_what_ (description), errno_(0) {}
+
+
+
+ +
+
+ + + + + + + +
virtual serial::IOException::~IOException () throw () [inline, virtual]
+
+
+
{}
+
+
+
+ +
+
+ + + + + + + + +
serial::IOException::IOException (const IOExceptionother) [inline]
+
+
+
                                         {
+    e_what_ = other.e_what_;
+  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
int serial::IOException::getErrorNumber () [inline]
+
+
+
{ return errno_; }
+
+
+
+ +
+
+ + + + + + + +
virtual const char* serial::IOException::what () const throw () [inline, virtual]
+
+
+
  {
+    std::stringstream ss;
+    if (errno_ == 0)
+      ss << "IO Exception: " << e_what_;
+    else
+      ss << "IO Exception (" << errno_ << "): " << e_what_;
+    ss << ", file " << file_ << ", line " << line_ << ".";
+    return ss.str ().c_str ();
+  }
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + + + diff --git a/docs/v1.0.1/classserial_1_1_port_not_opened_exception.html b/docs/v1.0.1/classserial_1_1_port_not_opened_exception.html new file mode 100644 index 0000000..a204408 --- /dev/null +++ b/docs/v1.0.1/classserial_1_1_port_not_opened_exception.html @@ -0,0 +1,189 @@ + + + + + +serial: serial::PortNotOpenedException Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
serial::PortNotOpenedException Class Reference
+
+
+ +

#include <serial.h>

+ + + + + +

+Public Member Functions

 PortNotOpenedException (const char *description)
 PortNotOpenedException (const PortNotOpenedException &other)
virtual const char * what () const throw ()
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
serial::PortNotOpenedException::PortNotOpenedException (const char * description) [inline]
+
+
+
: e_what_ (description) {}
+
+
+
+ +
+ +
+
                                                               {
+    e_what_ = other.e_what_;
+  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
virtual const char* serial::PortNotOpenedException::what () const throw () [inline, virtual]
+
+
+
  {
+    std::stringstream ss;
+    ss << e_what_ << " called before port was opened.";
+    return ss.str ().c_str ();
+  }
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + + + diff --git a/docs/v1.0.1/classserial_1_1_serial.html b/docs/v1.0.1/classserial_1_1_serial.html new file mode 100644 index 0000000..cb45f5b --- /dev/null +++ b/docs/v1.0.1/classserial_1_1_serial.html @@ -0,0 +1,1532 @@ + + + + + +serial: serial::Serial Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ + +
+
+
+Data Structures | +Public Member Functions
+
+
serial::Serial Class Reference
+
+
+ +

#include <serial.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

class  ScopedReadLock
class  ScopedWriteLock

+Public Member Functions

 Serial (const std::string &port="", uint32_t baudrate=9600, Timeout timeout=Timeout(), bytesize_t bytesize=eightbits, parity_t parity=parity_none, stopbits_t stopbits=stopbits_one, flowcontrol_t flowcontrol=flowcontrol_none)
virtual ~Serial ()
void open ()
bool isOpen () const
void close ()
size_t available ()
size_t read (uint8_t *buffer, size_t size)
size_t read (std::vector< uint8_t > &buffer, size_t size=1)
size_t read (std::string &buffer, size_t size=1)
std::string read (size_t size=1)
size_t readline (std::string &buffer, size_t size=65536, std::string eol="\n")
std::string readline (size_t size=65536, std::string eol="\n")
std::vector< std::string > readlines (size_t size=65536, std::string eol="\n")
size_t write (const uint8_t *data, size_t size)
size_t write (const std::vector< uint8_t > &data)
size_t write (const std::string &data)
void setPort (const std::string &port)
std::string getPort () const
void setTimeout (Timeout &timeout)
void setTimeout (uint32_t inter_byte_timeout, uint32_t read_timeout_constant, uint32_t read_timeout_multiplier, uint32_t write_timeout_constant, uint32_t write_timeout_multiplier)
Timeout getTimeout () const
void setBaudrate (uint32_t baudrate)
uint32_t getBaudrate () const
void setBytesize (bytesize_t bytesize)
bytesize_t getBytesize () const
void setParity (parity_t parity)
parity_t getParity () const
void setStopbits (stopbits_t stopbits)
stopbits_t getStopbits () const
void setFlowcontrol (flowcontrol_t flowcontrol)
flowcontrol_t getFlowcontrol () const
void flush ()
void flushInput ()
void flushOutput ()
void sendBreak (int duration)
void setBreak (bool level=true)
void setRTS (bool level=true)
void setDTR (bool level=true)
bool waitForChange ()
bool getCTS ()
bool getDSR ()
bool getRI ()
bool getCD ()
+

Detailed Description

+

Class that provides a portable serial port interface.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
serial::Serial::Serial (const std::string & port = "",
uint32_t baudrate = 9600,
Timeout timeout = Timeout(),
bytesize_t bytesize = eightbits,
parity_t parity = parity_none,
stopbits_t stopbits = stopbits_one,
flowcontrol_t flowcontrol = flowcontrol_none 
)
+
+
+

Creates a Serial object and opens the port if a port is specified, otherwise it remains closed until serial::Serial::open is called.

+
Parameters:
+ + + + +
portA std::string containing the address of the serial port, which would be something like 'COM1' on Windows and '/dev/ttyS0' on Linux.
baudrateAn unsigned 32-bit integer that represents the baudrate
timeoutA serial::Timeout struct that defines the timeout conditions for the serial port.
+
+
+
See also:
serial::Timeout
+
Parameters:
+ + + + + +
bytesizeSize of each byte in the serial transmission of data, default is eightbits, possible values are: fivebits, sixbits, sevenbits, eightbits
parityMethod of parity, default is parity_none, possible values are: parity_none, parity_odd, parity_even
stopbitsNumber of stop bits used, default is stopbits_one, possible values are: stopbits_one, stopbits_one_point_five, stopbits_two
flowcontrolType of flowcontrol used, default is flowcontrol_none, possible values are: flowcontrol_none, flowcontrol_software, flowcontrol_hardware
+
+
+
Exceptions:
+ + +
PortNotOpenedException
+
+
+ +
+
+ +
+
+ + + + + + + +
Serial::~Serial () [virtual]
+
+
+

Destructor

+
{
+  delete pimpl_;
+}
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
size_t Serial::available ()
+
+
+

Return the number of characters in the buffer.

+
{
+  return pimpl_->available ();
+}
+
+
+
+ +
+
+ + + + + + + +
void Serial::close ()
+
+
+

Closes the serial port.

+
{
+  pimpl_->close ();
+}
+
+
+
+ +
+
+ + + + + + + +
void Serial::flush ()
+
+
+

Flush the input and output buffers

+
{
+  ScopedReadLock(this->pimpl_);
+  ScopedWriteLock(this->pimpl_);
+  pimpl_->flush ();
+  read_cache_.clear ();
+}
+
+
+
+ +
+
+ + + + + + + +
void Serial::flushInput ()
+
+
+

Flush only the input buffer

+
{
+  ScopedReadLock(this->pimpl_);
+  pimpl_->flushInput ();
+}
+
+
+
+ +
+
+ + + + + + + +
void Serial::flushOutput ()
+
+
+

Flush only the output buffer

+
{
+  ScopedWriteLock(this->pimpl_);
+  pimpl_->flushOutput ();
+  read_cache_.clear ();
+}
+
+
+
+ +
+
+ + + + + + + +
uint32_t Serial::getBaudrate () const
+
+
+

Gets the baudrate for the serial port.

+
Returns:
An integer that sets the baud rate for the serial port.
+
See also:
Serial::setBaudrate
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  return uint32_t(pimpl_->getBaudrate ());
+}
+
+
+
+ +
+
+ + + + + + + +
bytesize_t Serial::getBytesize () const
+
+
+

Gets the bytesize for the serial port.

+
See also:
Serial::setBytesize
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  return pimpl_->getBytesize ();
+}
+
+
+
+ +
+
+ + + + + + + +
bool Serial::getCD ()
+
+
+

Returns the current status of the CD line.

+
{
+  return pimpl_->getCD ();
+}
+
+
+
+ +
+
+ + + + + + + +
bool Serial::getCTS ()
+
+
+

Returns the current status of the CTS line.

+
{
+  return pimpl_->getCTS ();
+}
+
+
+
+ +
+
+ + + + + + + +
bool Serial::getDSR ()
+
+
+

Returns the current status of the DSR line.

+
{
+  return pimpl_->getDSR ();
+}
+
+
+
+ +
+
+ + + + + + + +
flowcontrol_t Serial::getFlowcontrol () const
+
+
+

Gets the flow control for the serial port.

+
See also:
Serial::setFlowcontrol
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  return pimpl_->getFlowcontrol ();
+}
+
+
+
+ +
+
+ + + + + + + +
parity_t Serial::getParity () const
+
+
+

Gets the parity for the serial port.

+
See also:
Serial::setParity
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  return pimpl_->getParity ();
+}
+
+
+
+ +
+
+ + + + + + + +
string Serial::getPort () const
+
+
+

Gets the serial port identifier.

+
See also:
Serial::setPort
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  return pimpl_->getPort ();
+}
+
+
+
+ +
+
+ + + + + + + +
bool Serial::getRI ()
+
+
+

Returns the current status of the RI line.

+
{
+  return pimpl_->getRI ();
+}
+
+
+
+ +
+
+ + + + + + + +
stopbits_t Serial::getStopbits () const
+
+
+

Gets the stopbits for the serial port.

+
See also:
Serial::setStopbits
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  return pimpl_->getStopbits ();
+}
+
+
+
+ +
+
+ + + + + + + +
serial::Timeout Serial::getTimeout () const
+
+
+

Gets the timeout for reads in seconds.

+
Returns:
A Timeout struct containing the inter_byte_timeout, and read and write timeout constants and multipliers.
+
See also:
Serial::setTimeout
+
                          {
+  return pimpl_->getTimeout ();
+}
+
+
+
+ +
+
+ + + + + + + +
bool Serial::isOpen () const
+
+
+

Gets the open status of the serial port.

+
Returns:
Returns true if the port is open, false otherwise.
+
{
+  return pimpl_->isOpen ();
+}
+
+
+
+ +
+
+ + + + + + + +
void Serial::open ()
+
+
+

Opens the serial port as long as the port is set and the port isn't already open.

+

If the port is provided to the constructor then an explicit call to open is not needed.

+
See also:
Serial::Serial
+
Exceptions:
+ + + + +
std::invalid_argument
serial::SerialExecption
serial::IOException
+
+
+
{
+  pimpl_->open ();
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t Serial::read (uint8_t * buffer,
size_t size 
)
+
+
+

Read a given amount of bytes from the serial port into a given buffer.

+

The read function will return in one of three cases:

+
    +
  • The number of requested bytes was read.
      +
    • In this case the number of bytes requested will match the size_t returned by read.
    • +
    +
  • +
  • A timeout occurred, in this case the number of bytes read will not match the amount requested, but no exception will be thrown. One of two possible timeouts occurred:
      +
    • The inter byte timeout expired, this means that number of milliseconds elapsed between receiving bytes from the serial port exceeded the inter byte timeout.
    • +
    • The total timeout expired, which is calculated by multiplying the read timeout multiplier by the number of requested bytes and then added to the read timeout constant. If that total number of milliseconds elapses after the initial call to read a timeout will occur.
    • +
    +
  • +
  • An exception occurred, in this case an actual exception will be thrown.
  • +
+
Parameters:
+ + + +
bufferAn uint8_t array of at least the requested size.
sizeA size_t defining how many bytes to be read.
+
+
+
Returns:
A size_t representing the number of bytes read as a result of the call to read.
+
{
+  ScopedReadLock (this->pimpl_);
+  return this->pimpl_->read (buffer, size);
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t Serial::read (std::vector< uint8_t > & buffer,
size_t size = 1 
)
+
+
+

Read a given amount of bytes from the serial port into a give buffer.

+
Parameters:
+ + + +
bufferA reference to a std::vector of uint8_t.
sizeA size_t defining how many bytes to be read.
+
+
+
Returns:
A size_t representing the number of bytes read as a result of the call to read.
+
{
+  ScopedReadLock (this->pimpl_);
+  uint8_t *buffer_ = new uint8_t[size];
+  size_t bytes_read = this->pimpl_->read (buffer_, size);
+  buffer.insert (buffer.end (), buffer_, buffer_+bytes_read);
+  delete[] buffer_;
+  return bytes_read;
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t Serial::read (std::string & buffer,
size_t size = 1 
)
+
+
+

Read a given amount of bytes from the serial port into a give buffer.

+
Parameters:
+ + + +
bufferA reference to a std::string.
sizeA size_t defining how many bytes to be read.
+
+
+
Returns:
A size_t representing the number of bytes read as a result of the call to read.
+
{
+  ScopedReadLock (this->pimpl_);
+  uint8_t *buffer_ = new uint8_t[size];
+  size_t bytes_read = this->pimpl_->read (buffer_, size);
+  buffer.append (reinterpret_cast<const char*>(buffer_), bytes_read);
+  delete[] buffer_;
+  return bytes_read;
+}
+
+
+
+ +
+
+ + + + + + + + +
string Serial::read (size_t size = 1)
+
+
+

Read a given amount of bytes from the serial port and return a string containing the data.

+
Parameters:
+ + +
sizeA size_t defining how many bytes to be read.
+
+
+
Returns:
A std::string containing the data read from the port.
+
{
+  std::string buffer;
+  this->read (buffer, size);
+  return buffer;
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t serial::Serial::readline (std::string & buffer,
size_t size = 65536,
std::string eol = "\n" 
)
+
+
+

Reads in a line or until a given delimiter has been processed.

+

Reads from the serial port until a single line has been read.

+
Parameters:
+ + + + +
bufferA std::string reference used to store the data.
sizeA maximum length of a line, defaults to 65536 (2^16)
eolA string to match against for the EOL.
+
+
+
Returns:
A size_t representing the number of bytes read.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string serial::Serial::readline (size_t size = 65536,
std::string eol = "\n" 
)
+
+
+

Reads in a line or until a given delimiter has been processed.

+

Reads from the serial port until a single line has been read.

+
Parameters:
+ + + +
sizeA maximum length of a line, defaults to 65536 (2^16)
eolA string to match against for the EOL.
+
+
+
Returns:
A std::string containing the line.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
vector< string > Serial::readlines (size_t size = 65536,
std::string eol = "\n" 
)
+
+
+

Reads in multiple lines until the serial port times out.

+

This requires a timeout > 0 before it can be run. It will read until a timeout occurs and return a list of strings.

+
Parameters:
+ + + +
sizeA maximum length of combined lines, defaults to 65536 (2^16)
eolA string to match against for the EOL.
+
+
+
Returns:
A vector<string> containing the lines.
+
{
+  ScopedReadLock (this->pimpl_);
+  std::vector<std::string> lines;
+  size_t eol_len = eol.length ();
+  uint8_t *buffer_ = static_cast<uint8_t*>
+    (alloca (size * sizeof (uint8_t)));
+  size_t read_so_far = 0;
+  size_t start_of_line = 0;
+  while (read_so_far < size) {
+    size_t bytes_read = this->read_ (buffer_+read_so_far, 1);
+    read_so_far += bytes_read;
+    if (bytes_read == 0) {
+      if (start_of_line != read_so_far) {
+        lines.push_back (
+          string (reinterpret_cast<const char*> (buffer_ + start_of_line),
+            read_so_far - start_of_line));
+      }
+      break; // Timeout occured on reading 1 byte
+    }
+    if (string (reinterpret_cast<const char*>
+         (buffer_ + read_so_far - eol_len), eol_len) == eol) {
+      // EOL found
+      lines.push_back(
+        string(reinterpret_cast<const char*> (buffer_ + start_of_line),
+          read_so_far - start_of_line));
+      start_of_line = read_so_far;
+    }
+    if (read_so_far == size) {
+      if (start_of_line != read_so_far) {
+        lines.push_back(
+          string(reinterpret_cast<const char*> (buffer_ + start_of_line),
+            read_so_far - start_of_line));
+      }
+      break; // Reached the maximum read length
+    }
+  }
+  return lines;
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::sendBreak (int duration)
+
+
+

Sends the RS-232 break signal. See tcsendbreak(3).

+
{
+  pimpl_->sendBreak (duration);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setBaudrate (uint32_t baudrate)
+
+
+

Sets the baudrate for the serial port.

+

Possible baudrates depends on the system but some safe baudrates include: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 Some other baudrates that are supported by some comports: 128000, 153600, 230400, 256000, 460800, 921600

+
Parameters:
+ + +
baudrateAn integer that sets the baud rate for the serial port.
+
+
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  pimpl_->setBaudrate (baudrate);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setBreak (bool level = true)
+
+
+

Set the break condition to a given level. Defaults to true.

+
{
+  pimpl_->setBreak (level);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setBytesize (bytesize_t bytesize)
+
+
+

Sets the bytesize for the serial port.

+
Parameters:
+ + +
bytesizeSize of each byte in the serial transmission of data, default is eightbits, possible values are: fivebits, sixbits, sevenbits, eightbits
+
+
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  pimpl_->setBytesize (bytesize);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setDTR (bool level = true)
+
+
+

Set the DTR handshaking line to the given level. Defaults to true.

+
{
+  pimpl_->setDTR (level);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setFlowcontrol (flowcontrol_t flowcontrol)
+
+
+

Sets the flow control for the serial port.

+
Parameters:
+ + +
flowcontrolType of flowcontrol used, default is flowcontrol_none, possible values are: flowcontrol_none, flowcontrol_software, flowcontrol_hardware
+
+
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  pimpl_->setFlowcontrol (flowcontrol);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setParity (parity_t parity)
+
+
+

Sets the parity for the serial port.

+
Parameters:
+ + +
parityMethod of parity, default is parity_none, possible values are: parity_none, parity_odd, parity_even
+
+
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  pimpl_->setParity (parity);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setPort (const std::string & port)
+
+
+

Sets the serial port identifier.

+
Parameters:
+ + +
portA const std::string reference containing the address of the serial port, which would be something like 'COM1' on Windows and '/dev/ttyS0' on Linux.
+
+
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  ScopedReadLock(this->pimpl_);
+  ScopedWriteLock(this->pimpl_);
+  bool was_open = pimpl_->isOpen ();
+  if (was_open) close();
+  pimpl_->setPort (port);
+  if (was_open) open ();
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setRTS (bool level = true)
+
+
+

Set the RTS handshaking line to the given level. Defaults to true.

+
{
+  pimpl_->setRTS (level);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setStopbits (stopbits_t stopbits)
+
+
+

Sets the stopbits for the serial port.

+
Parameters:
+ + +
stopbitsNumber of stop bits used, default is stopbits_one, possible values are: stopbits_one, stopbits_one_point_five, stopbits_two
+
+
+
Exceptions:
+ + +
InvalidConfigurationException
+
+
+
{
+  pimpl_->setStopbits (stopbits);
+}
+
+
+
+ +
+
+ + + + + + + + +
void Serial::setTimeout (serial::Timeouttimeout)
+
+
+

Sets the timeout for reads and writes using the Timeout struct.

+

There are two timeout conditions described here:

+
    +
  • The inter byte timeout:
      +
    • The inter_byte_timeout component of serial::Timeout defines the maximum amount of time, in milliseconds, between receiving bytes on the serial port that can pass before a timeout occurs. Setting this to zero will prevent inter byte timeouts from occurring.
    • +
    +
  • +
  • Total time timeout:
      +
    • The the constant and multiplier component of this timeout condition, for both read and write, are defined in serial::Timeout. This timeout occurs if the total time since the read or write call was made exceeds the specified time in milliseconds.
    • +
    • The limit is defined by multiplying the multiplier component by the number of requested bytes and adding that product to the constant component. In this way if you want a read call, for example, to timeout after exactly one second regardless of the number of bytes you asked for then set the read_timeout_constant component of serial::Timeout to 1000 and the read_timeout_multiplier to zero. This timeout condition can be used in conjunction with the inter byte timeout condition with out any problems, timeout will simply occur when one of the two timeout conditions is met. This allows users to have maximum control over the trade-off between responsiveness and efficiency.
    • +
    +
  • +
+

Read and write functions will return in one of three cases. When the reading or writing is complete, when a timeout occurs, or when an exception occurs.

+
Parameters:
+ + +
timeoutA serial::Timeout struct containing the inter byte timeout, and the read and write timeout constants and multipliers.
+
+
+
See also:
serial::Timeout
+
{
+  pimpl_->setTimeout (timeout);
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void serial::Serial::setTimeout (uint32_t inter_byte_timeout,
uint32_t read_timeout_constant,
uint32_t read_timeout_multiplier,
uint32_t write_timeout_constant,
uint32_t write_timeout_multiplier 
) [inline]
+
+
+

Sets the timeout for reads and writes.

+
  {
+    Timeout timeout(inter_byte_timeout, read_timeout_constant,
+                    read_timeout_multiplier, write_timeout_constant,
+                    write_timeout_multiplier);
+    return setTimeout(timeout);
+  }
+
+
+
+ +
+
+ + + + + + + +
bool Serial::waitForChange ()
+
+
+

Blocks until CTS, DSR, RI, CD changes or something interrupts it.

+

Can throw an exception if an error occurs while waiting. You can check the status of CTS, DSR, RI, and CD once this returns. Uses TIOCMIWAIT via ioctl if available (mostly only on Linux) with a resolution of less than +-1ms and as good as +-0.2ms. Otherwise a polling method is used which can give +-2ms.

+
Returns:
Returns true if one of the lines changed, false if something else occurred.
+
Exceptions:
+ + +
SerialException
+
+
+
{
+  return pimpl_->waitForChange();
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t Serial::write (const uint8_t * data,
size_t size 
)
+
+
+

Write a string to the serial port.

+
Parameters:
+ + + +
dataA const reference containing the data to be written to the serial port.
sizeA size_t that indicates how many bytes should be written from the given data buffer.
+
+
+
Returns:
A size_t representing the number of bytes actually written to the serial port.
+
{
+  ScopedWriteLock(this->pimpl_);
+  return this->write_(data, size);
+}
+
+
+
+ +
+
+ + + + + + + + +
size_t Serial::write (const std::vector< uint8_t > & data)
+
+
+

Write a string to the serial port.

+
Parameters:
+ + +
dataA const reference containing the data to be written to the serial port.
+
+
+
Returns:
A size_t representing the number of bytes actually written to the serial port.
+
{
+  ScopedWriteLock(this->pimpl_);
+  return this->write_ (&data[0], data.size());
+}
+
+
+
+ +
+
+ + + + + + + + +
size_t serial::Serial::write (const std::string & data)
+
+
+

Write a string to the serial port.

+
Parameters:
+ + +
dataA const reference containing the data to be written to the serial port.
+
+
+
Returns:
A size_t representing the number of bytes actually written to the serial port.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + + + diff --git a/docs/v1.0.1/classserial_1_1_serial_execption.html b/docs/v1.0.1/classserial_1_1_serial_execption.html new file mode 100644 index 0000000..12fad21 --- /dev/null +++ b/docs/v1.0.1/classserial_1_1_serial_execption.html @@ -0,0 +1,189 @@ + + + + + +serial: serial::SerialExecption Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
serial::SerialExecption Class Reference
+
+
+ +

#include <serial.h>

+ + + + + +

+Public Member Functions

 SerialExecption (const char *description)
 SerialExecption (const SerialExecption &other)
virtual const char * what () const throw ()
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
serial::SerialExecption::SerialExecption (const char * description) [inline]
+
+
+
: e_what_ (description) {}
+
+
+
+ +
+
+ + + + + + + + +
serial::SerialExecption::SerialExecption (const SerialExecptionother) [inline]
+
+
+
                                                 {
+    e_what_ = other.e_what_;
+  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
virtual const char* serial::SerialExecption::what () const throw () [inline, virtual]
+
+
+
  {
+    std::stringstream ss;
+    ss << "SerialException " << e_what_ << " failed.";
+    return ss.str ().c_str ();
+  }
+
+
+
+
The documentation for this class was generated from the following file: +
+ + + + + + diff --git a/docs/v1.0.1/classserial_1_1serial_1_1_serial_1_1_serial_impl.html b/docs/v1.0.1/classserial_1_1serial_1_1_serial_1_1_serial_impl.html new file mode 100644 index 0000000..92eaff6 --- /dev/null +++ b/docs/v1.0.1/classserial_1_1serial_1_1_serial_1_1_serial_impl.html @@ -0,0 +1,2148 @@ + + + + + +serial: serial::serial::Serial::SerialImpl Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Protected Member Functions
+
+
serial::serial::Serial::SerialImpl Class Reference
+
+
+ +

#include <unix.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SerialImpl (const string &port, unsigned long baudrate, bytesize_t bytesize, parity_t parity, stopbits_t stopbits, flowcontrol_t flowcontrol)
virtual ~SerialImpl ()
void open ()
void close ()
bool isOpen () const
size_t available ()
size_t read (uint8_t *buf, size_t size=1)
size_t write (const uint8_t *data, size_t length)
void flush ()
void flushInput ()
void flushOutput ()
void sendBreak (int duration)
void setBreak (bool level)
void setRTS (bool level)
void setDTR (bool level)
bool waitForChange ()
bool getCTS ()
bool getDSR ()
bool getRI ()
bool getCD ()
void setPort (const string &port)
string getPort () const
void setTimeout (Timeout &timeout)
Timeout getTimeout () const
void setBaudrate (unsigned long baudrate)
unsigned long getBaudrate () const
void setBytesize (bytesize_t bytesize)
bytesize_t getBytesize () const
void setParity (parity_t parity)
parity_t getParity () const
void setStopbits (stopbits_t stopbits)
stopbits_t getStopbits () const
void setFlowcontrol (flowcontrol_t flowcontrol)
flowcontrol_t getFlowcontrol () const
void readLock ()
void readUnlock ()
void writeLock ()
void writeUnlock ()
 SerialImpl (const string &port, unsigned long baudrate, bytesize_t bytesize, parity_t parity, stopbits_t stopbits, flowcontrol_t flowcontrol)
virtual ~SerialImpl ()
void open ()
void close ()
bool isOpen () const
size_t available ()
size_t read (uint8_t *buf, size_t size=1)
size_t write (const uint8_t *data, size_t length)
void flush ()
void flushInput ()
void flushOutput ()
void sendBreak (int duration)
void setBreak (bool level)
void setRTS (bool level)
void setDTR (bool level)
bool waitForChange ()
bool getCTS ()
bool getDSR ()
bool getRI ()
bool getCD ()
void setPort (const string &port)
string getPort () const
void setTimeout (Timeout &timeout)
Timeout getTimeout () const
void setBaudrate (unsigned long baudrate)
unsigned long getBaudrate () const
void setBytesize (bytesize_t bytesize)
bytesize_t getBytesize () const
void setParity (parity_t parity)
parity_t getParity () const
void setStopbits (stopbits_t stopbits)
stopbits_t getStopbits () const
void setFlowcontrol (flowcontrol_t flowcontrol)
flowcontrol_t getFlowcontrol () const
void readLock ()
void readUnlock ()
void writeLock ()
void writeUnlock ()

+Protected Member Functions

void reconfigurePort ()
void reconfigurePort ()
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
serial::serial::Serial::SerialImpl::SerialImpl (const string & port,
unsigned long baudrate,
bytesize_t bytesize,
parity_t parity,
stopbits_t stopbits,
flowcontrol_t flowcontrol 
)
+
+
+ +
+
+ +
+
+ + + + + + + +
virtual serial::serial::Serial::SerialImpl::~SerialImpl () [virtual]
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Serial::SerialImpl::SerialImpl (const string & port,
unsigned long baudrate,
bytesize_t bytesize,
parity_t parity,
stopbits_t stopbits,
flowcontrol_t flowcontrol 
)
+
+
+
  : port_ (port), fd_ (-1), is_open_ (false), xonxoff_ (false), rtscts_ (false),
+    baudrate_ (baudrate), parity_ (parity),
+    bytesize_ (bytesize), stopbits_ (stopbits), flowcontrol_ (flowcontrol)
+{
+  pthread_mutex_init(&this->read_mutex, NULL);
+  pthread_mutex_init(&this->write_mutex, NULL);
+  if (port_.empty () == false)
+    open ();
+}
+
+
+
+ +
+
+ + + + + + + +
Serial::SerialImpl::~SerialImpl () [virtual]
+
+
+
{
+  close();
+  pthread_mutex_destroy(&this->read_mutex);
+  pthread_mutex_destroy(&this->write_mutex);
+}
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
size_t Serial::SerialImpl::available ()
+
+
+
{
+  if (!is_open_) {
+    return 0;
+  }
+  int count = 0;
+  int result = ioctl (fd_, TIOCINQ, &count);
+  if (result == 0) {
+    return static_cast<size_t> (count);
+  } else {
+    THROW (IOException, errno);
+  }
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::close ()
+
+
+
{
+  if (is_open_ == true) {
+    if (fd_ != -1) {
+      ::close (fd_); // Ignoring the outcome
+      fd_ = -1;
+    }
+    is_open_ = false;
+  }
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::flush ()
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::flush");
+  }
+  tcdrain (fd_);
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::flushInput ()
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::flushInput");
+  }
+  tcflush (fd_, TCIFLUSH);
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::flushOutput ()
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::flushOutput");
+  }
+  tcflush (fd_, TCOFLUSH);
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
unsigned long serial::serial::Serial::SerialImpl::getBaudrate () const
+
+
+ +
+
+ +
+
+ + + + + + + +
unsigned long serial::serial::Serial::SerialImpl::getBaudrate () const
+
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
bool Serial::SerialImpl::getCD ()
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::getCD");
+  }
+  int s = ioctl (fd_, TIOCMGET, 0);
+  return (s & TIOCM_CD) != 0;
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
bool Serial::SerialImpl::getCTS ()
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::getCTS");
+  }
+  int s = ioctl (fd_, TIOCMGET, 0);
+  return (s & TIOCM_CTS) != 0;
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
bool Serial::SerialImpl::getDSR ()
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::getDSR");
+  }
+  int s = ioctl (fd_, TIOCMGET, 0);
+  return (s & TIOCM_DSR) != 0;
+}
+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
string serial::serial::Serial::SerialImpl::getPort () const
+
+
+ +
+
+ +
+
+ + + + + + + +
string serial::serial::Serial::SerialImpl::getPort () const
+
+
+ +
+
+ +
+
+ + + + + + + +
bool Serial::SerialImpl::getRI ()
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::getRI");
+  }
+  int s = ioctl (fd_, TIOCMGET, 0);
+  return (s & TIOCM_RI) != 0;
+}
+
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
bool serial::serial::Serial::SerialImpl::isOpen () const
+
+
+ +
+
+ +
+
+ + + + + + + +
bool serial::serial::Serial::SerialImpl::isOpen () const
+
+
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::open ()
+
+
+
{
+  if (port_.empty ()) {
+    throw invalid_argument ("Empty port is invalid.");
+  }
+  if (is_open_ == true) {
+    throw SerialExecption ("Serial port already open.");
+  }
+
+  fd_ = ::open (port_.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK);
+
+  if (fd_ == -1) {
+    switch (errno) {
+    case EINTR:
+      // Recurse because this is a recoverable error.
+      open ();
+      return;
+    case ENFILE:
+    case EMFILE:
+      THROW (IOException, "Too many file handles open.");
+    default:
+      THROW (IOException, errno);
+    }
+  }
+
+  reconfigurePort();
+  is_open_ = true;
+}
+
+
+
+ +
+
+ + + + + + + +
void serial::serial::Serial::SerialImpl::open ()
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t serial::serial::Serial::SerialImpl::read (uint8_t * buf,
size_t size = 1 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t serial::serial::Serial::SerialImpl::read (uint8_t * buf,
size_t size = 1 
)
+
+
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::readLock ()
+
+
+
{
+  int result = pthread_mutex_lock(&this->read_mutex);
+  if (result) {
+    THROW (IOException, result);
+  }
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::readUnlock ()
+
+
+
{
+  int result = pthread_mutex_unlock(&this->read_mutex);
+  if (result) {
+    THROW (IOException, result);
+  }
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::reconfigurePort () [protected]
+
+
+
{
+  if (fd_ == -1) {
+    // Can only operate on a valid file descriptor
+    THROW (IOException, "Invalid file descriptor, is the serial port open?");
+  }
+
+  struct termios options; // The options for the file descriptor
+
+  if (tcgetattr(fd_, &options) == -1) {
+    THROW (IOException, "::tcgetattr");
+  }
+
+  // set up raw mode / no echo / binary
+  options.c_cflag |= (tcflag_t)  (CLOCAL | CREAD);
+  options.c_lflag &= (tcflag_t) ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL |
+                                       ISIG | IEXTEN); //|ECHOPRT
+
+  options.c_oflag &= (tcflag_t) ~(OPOST);
+  options.c_iflag &= (tcflag_t) ~(INLCR | IGNCR | ICRNL | IGNBRK);
+#ifdef IUCLC
+  options.c_iflag &= (tcflag_t) ~IUCLC;
+#endif
+#ifdef PARMRK
+  options.c_iflag &= (tcflag_t) ~PARMRK;
+#endif
+
+  // setup baud rate
+  bool custom_baud = false;
+  speed_t baud;
+  switch (baudrate_) {
+#ifdef B0
+  case 0: baud = B0; break;
+#endif
+#ifdef B50
+  case 50: baud = B50; break;
+#endif
+#ifdef B75
+  case 75: baud = B75; break;
+#endif
+#ifdef B110
+  case 110: baud = B110; break;
+#endif
+#ifdef B134
+  case 134: baud = B134; break;
+#endif
+#ifdef B150
+  case 150: baud = B150; break;
+#endif
+#ifdef B200
+  case 200: baud = B200; break;
+#endif
+#ifdef B300
+  case 300: baud = B300; break;
+#endif
+#ifdef B600
+  case 600: baud = B600; break;
+#endif
+#ifdef B1200
+  case 1200: baud = B1200; break;
+#endif
+#ifdef B1800
+  case 1800: baud = B1800; break;
+#endif
+#ifdef B2400
+  case 2400: baud = B2400; break;
+#endif
+#ifdef B4800
+  case 4800: baud = B4800; break;
+#endif
+#ifdef B7200
+  case 7200: baud = B7200; break;
+#endif
+#ifdef B9600
+  case 9600: baud = B9600; break;
+#endif
+#ifdef B14400
+  case 14400: baud = B14400; break;
+#endif
+#ifdef B19200
+  case 19200: baud = B19200; break;
+#endif
+#ifdef B28800
+  case 28800: baud = B28800; break;
+#endif
+#ifdef B57600
+  case 57600: baud = B57600; break;
+#endif
+#ifdef B76800
+  case 76800: baud = B76800; break;
+#endif
+#ifdef B38400
+  case 38400: baud = B38400; break;
+#endif
+#ifdef B115200
+  case 115200: baud = B115200; break;
+#endif
+#ifdef B128000
+  case 128000: baud = B128000; break;
+#endif
+#ifdef B153600
+  case 153600: baud = B153600; break;
+#endif
+#ifdef B230400
+  case 230400: baud = B230400; break;
+#endif
+#ifdef B256000
+  case 256000: baud = B256000; break;
+#endif
+#ifdef B460800
+  case 460800: baud = B460800; break;
+#endif
+#ifdef B921600
+  case 921600: baud = B921600; break;
+#endif
+#ifdef B1000000
+  case 1000000: baud = B1000000; break;
+#endif
+#ifdef B1152000
+  case 1152000: baud = B1152000; break;
+#endif
+#ifdef B1500000
+  case 1500000: baud = B1500000; break;
+#endif
+#ifdef B2000000
+  case 2000000: baud = B2000000; break;
+#endif
+#ifdef B2500000
+  case 2500000: baud = B2500000; break;
+#endif
+#ifdef B3000000
+  case 3000000: baud = B3000000; break;
+#endif
+#ifdef B3500000
+  case 3500000: baud = B3500000; break;
+#endif
+#ifdef B4000000
+  case 4000000: baud = B4000000; break;
+#endif
+  default:
+    custom_baud = true;
+    // Mac OS X 10.x Support
+#if defined(__APPLE__) && defined(__MACH__)
+#define IOSSIOSPEED _IOW('T', 2, speed_t)
+    int new_baud = static_cast<int> (baudrate_);
+    if (ioctl (fd_, IOSSIOSPEED, &new_baud, 1) < 0) {
+      THROW (IOException, errno);
+    }
+    // Linux Support
+#elif defined(__linux__) && defined (TIOCSSERIAL)
+    struct serial_struct ser;
+    ioctl (fd_, TIOCGSERIAL, &ser);
+    // set custom divisor
+    ser.custom_divisor = ser.baud_base / (int) baudrate_;
+    // update flags
+    ser.flags &= ~ASYNC_SPD_MASK;
+    ser.flags |= ASYNC_SPD_CUST;
+
+    if (ioctl (fd_, TIOCSSERIAL, &ser) < 0) {
+      THROW (IOException, errno);
+    }
+#else
+    throw invalid_argument ("OS does not currently support custom bauds");
+#endif
+  }
+  if (custom_baud == false) {
+#ifdef _BSD_SOURCE
+    ::cfsetspeed(&options, baud);
+#else
+    ::cfsetispeed(&options, baud);
+    ::cfsetospeed(&options, baud);
+#endif
+  }
+
+  // setup char len
+  options.c_cflag &= (tcflag_t) ~CSIZE;
+  if (bytesize_ == eightbits)
+    options.c_cflag |= CS8;
+  else if (bytesize_ == sevenbits)
+    options.c_cflag |= CS7;
+  else if (bytesize_ == sixbits)
+    options.c_cflag |= CS6;
+  else if (bytesize_ == fivebits)
+    options.c_cflag |= CS5;
+  else
+    throw invalid_argument ("invalid char len");
+  // setup stopbits
+  if (stopbits_ == stopbits_one)
+    options.c_cflag &= (tcflag_t) ~(CSTOPB);
+  else if (stopbits_ == stopbits_one_point_five)
+    // ONE POINT FIVE same as TWO.. there is no POSIX support for 1.5
+    options.c_cflag |=  (CSTOPB);
+  else if (stopbits_ == stopbits_two)
+    options.c_cflag |=  (CSTOPB);
+  else
+    throw invalid_argument ("invalid stop bit");
+  // setup parity
+  options.c_iflag &= (tcflag_t) ~(INPCK | ISTRIP);
+  if (parity_ == parity_none) {
+    options.c_cflag &= (tcflag_t) ~(PARENB | PARODD);
+  } else if (parity_ == parity_even) {
+    options.c_cflag &= (tcflag_t) ~(PARODD);
+    options.c_cflag |=  (PARENB);
+  } else if (parity_ == parity_odd) {
+    options.c_cflag |=  (PARENB | PARODD);
+  } else {
+    throw invalid_argument ("invalid parity");
+  }
+  // setup flow control
+  if (flowcontrol_ == flowcontrol_none) {
+    xonxoff_ = false;
+    rtscts_ = false;
+  }
+  if (flowcontrol_ == flowcontrol_software) {
+    xonxoff_ = true;
+    rtscts_ = false;
+  }
+  if (flowcontrol_ == flowcontrol_hardware) {
+    xonxoff_ = false;
+    rtscts_ = true;
+  }
+  // xonxoff
+#ifdef IXANY
+  if (xonxoff_)
+    options.c_iflag |=  (IXON | IXOFF); //|IXANY)
+  else
+    options.c_iflag &= (tcflag_t) ~(IXON | IXOFF | IXANY);
+#else
+  if (xonxoff_)
+    options.c_iflag |=  (IXON | IXOFF);
+  else
+    options.c_iflag &= (tcflag_t) ~(IXON | IXOFF);
+#endif
+  // rtscts
+#ifdef CRTSCTS
+  if (rtscts_)
+    options.c_cflag |=  (CRTSCTS);
+  else
+    options.c_cflag &= (unsigned long) ~(CRTSCTS);
+#elif defined CNEW_RTSCTS
+  if (rtscts_)
+    options.c_cflag |=  (CNEW_RTSCTS);
+  else
+    options.c_cflag &= (unsigned long) ~(CNEW_RTSCTS);
+#else
+#error "OS Support seems wrong."
+#endif
+
+  // http://www.unixwiz.net/techtips/termios-vmin-vtime.html
+  // this basically sets the read call up to be a polling read,
+  // but we are using select to ensure there is data available
+  // to read before each call, so we should never needlessly poll
+  options.c_cc[VMIN] = 0;
+  options.c_cc[VTIME] = 0;
+
+  // activate settings
+  ::tcsetattr (fd_, TCSANOW, &options);
+}
+
+
+
+ +
+
+ + + + + + + +
void serial::serial::Serial::SerialImpl::reconfigurePort () [protected]
+
+
+ +
+
+ +
+
+ + + + + + + + +
void Serial::SerialImpl::sendBreak (int duration)
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::sendBreak");
+  }
+  tcsendbreak (fd_, static_cast<int> (duration / 4));
+}
+
+
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::sendBreak (int duration)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void Serial::SerialImpl::setBaudrate (unsigned long baudrate)
+
+
+
{
+  baudrate_ = baudrate;
+  if (is_open_)
+    reconfigurePort ();
+}
+
+
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setBaudrate (unsigned long baudrate)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void Serial::SerialImpl::setBreak (bool level)
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::setBreak");
+  }
+  if (level) {
+    ioctl (fd_, TIOCSBRK);
+  } else {
+    ioctl (fd_, TIOCCBRK);
+  }
+}
+
+
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setBreak (bool level)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setBytesize (bytesize_t bytesize)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setBytesize (bytesize_t bytesize)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void Serial::SerialImpl::setDTR (bool level)
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::setDTR");
+  }
+  if (level) {
+    ioctl (fd_, TIOCMBIS, TIOCM_DTR);
+  } else {
+    ioctl (fd_, TIOCMBIC, TIOCM_DTR);
+  }
+}
+
+
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setDTR (bool level)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setFlowcontrol (flowcontrol_t flowcontrol)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setFlowcontrol (flowcontrol_t flowcontrol)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setParity (parity_t parity)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setParity (parity_t parity)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void Serial::SerialImpl::setPort (const string & port)
+
+
+
{
+  port_ = port;
+}
+
+
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setPort (const string & port)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void Serial::SerialImpl::setRTS (bool level)
+
+
+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::setRTS");
+  }
+  if (level) {
+    ioctl (fd_, TIOCMBIS, TIOCM_RTS);
+  } else {
+    ioctl (fd_, TIOCMBIC, TIOCM_RTS);
+  }
+}
+
+
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setRTS (bool level)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setStopbits (stopbits_t stopbits)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setStopbits (stopbits_t stopbits)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setTimeout (Timeouttimeout)
+
+
+ +
+
+ +
+
+ + + + + + + + +
void serial::serial::Serial::SerialImpl::setTimeout (Timeouttimeout)
+
+
+ +
+
+ +
+
+ + + + + + + +
bool Serial::SerialImpl::waitForChange ()
+
+
+
{
+#ifndef TIOCMIWAIT
+  while (is_open_ == true) {
+    int s = ioctl (fd_, TIOCMGET, 0);
+    if ((s & TIOCM_CTS) != 0) return true;
+    if ((s & TIOCM_DSR) != 0) return true;
+    if ((s & TIOCM_RI) != 0) return true;
+    if ((s & TIOCM_CD) != 0) return true;
+    usleep(1000);
+  }
+  return false;
+#else
+  if (ioctl(fd_, TIOCMIWAIT, (TIOCM_CD|TIOCM_DSR|TIOCM_RI|TIOCM_CTS)) != 0) {
+    stringstream ss;
+    ss << "waitForDSR failed on a call to ioctl(TIOCMIWAIT): "
+       << errno << " " << strerror(errno);
+    throw(SerialExecption(ss.str().c_str()));
+  }
+  return true;
+#endif
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t Serial::SerialImpl::write (const uint8_t * data,
size_t length 
)
+
+
+

Error

+

Timeout

+

Port ready to write

+
{
+  if (is_open_ == false) {
+    throw PortNotOpenedException ("Serial::write");
+  }
+  fd_set writefds;
+  size_t bytes_written = 0;
+  struct timeval timeout;
+  timeout.tv_sec =                    timeout_.write_timeout_constant / 1000;
+  timeout.tv_usec = static_cast<int> (timeout_.write_timeout_multiplier % 1000);
+  timeout.tv_usec *= 1000; // To convert to micro seconds
+  while (bytes_written < length) {
+    FD_ZERO (&writefds);
+    FD_SET (fd_, &writefds);
+    // On Linux the timeout struct is updated by select to contain the time
+    // left on the timeout to make looping easier, but on other platforms this
+    // does not occur.
+#if !defined(__linux__)
+    // Begin timing select
+    struct timespec start, end;
+    get_time_now(start);
+#endif
+    // Do the select
+    int r = select (fd_ + 1, NULL, &writefds, NULL, &timeout);
+#if !defined(__linux__)
+    // Calculate difference and update the structure
+    get_time_now(end);
+    // Calculate the time select took
+    struct timeval diff;
+    diff.tv_sec = end.tv_sec - start.tv_sec;
+    diff.tv_usec = static_cast<int> ((end.tv_nsec - start.tv_nsec) / 1000);
+    // Update the timeout
+    if (timeout.tv_sec <= diff.tv_sec) {
+      timeout.tv_sec = 0;
+    } else {
+      timeout.tv_sec -= diff.tv_sec;
+    }
+    if (timeout.tv_usec <= diff.tv_usec) {
+      timeout.tv_usec = 0;
+    } else {
+      timeout.tv_usec -= diff.tv_usec;
+    }
+#endif
+
+    // Figure out what happened by looking at select's response 'r'
+    if (r < 0) {
+      // Select was interrupted, try again
+      if (errno == EINTR) {
+        continue;
+      }
+      // Otherwise there was some error
+      THROW (IOException, errno);
+    }
+    if (r == 0) {
+      break;
+    }
+    if (r > 0) {
+      // Make sure our file descriptor is in the ready to write list
+      if (FD_ISSET (fd_, &writefds)) {
+        // This will write some
+        ssize_t bytes_written_now =
+          ::write (fd_, data + bytes_written, length - bytes_written);
+        // write should always return some data as select reported it was
+        // ready to write when we get to this point.
+        if (bytes_written_now < 1) {
+          // Disconnected devices, at least on Linux, show the
+          // behavior that they are always ready to write immediately
+          // but writing returns nothing.
+          throw SerialExecption ("device reports readiness to write but "
+                                 "returned no data (device disconnected?)");
+        }
+        // Update bytes_written
+        bytes_written += static_cast<size_t> (bytes_written_now);
+        // If bytes_written == size then we have written everything we need to
+        if (bytes_written == length) {
+          break;
+        }
+        // If bytes_written < size then we have more to write
+        if (bytes_written < length) {
+          continue;
+        }
+        // If bytes_written > size then we have over written, which shouldn't happen
+        if (bytes_written > length) {
+          throw SerialExecption ("write over wrote, too many bytes where "
+                                 "written, this shouldn't happen, might be "
+                                 "a logical error!");
+        }
+      }
+      // This shouldn't happen, if r > 0 our fd has to be in the list!
+      THROW (IOException, "select reports ready to write, but our fd isn't"
+                          " in the list, this shouldn't happen!");
+    }
+  }
+  return bytes_written;
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t serial::serial::Serial::SerialImpl::write (const uint8_t * data,
size_t length 
)
+
+
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::writeLock ()
+
+
+
{
+  int result = pthread_mutex_lock(&this->write_mutex);
+  if (result) {
+    THROW (IOException, result);
+  }
+}
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + + + + + + +
void Serial::SerialImpl::writeUnlock ()
+
+
+
{
+  int result = pthread_mutex_unlock(&this->write_mutex);
+  if (result) {
+    THROW (IOException, result);
+  }
+}
+
+
+
+ +
+ +
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + + + diff --git a/docs/v1.0.1/closed.png b/docs/v1.0.1/closed.png new file mode 100644 index 0000000..b7d4bd9 Binary files /dev/null and b/docs/v1.0.1/closed.png differ diff --git a/docs/v1.0.1/doxygen.css b/docs/v1.0.1/doxygen.css new file mode 100644 index 0000000..c151fde --- /dev/null +++ b/docs/v1.0.1/doxygen.css @@ -0,0 +1,1012 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 8px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } + pre.fragment + { + overflow: visible; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + } +} + diff --git a/docs/v1.0.1/doxygen.png b/docs/v1.0.1/doxygen.png new file mode 100644 index 0000000..635ed52 Binary files /dev/null and b/docs/v1.0.1/doxygen.png differ diff --git a/docs/v1.0.1/files.html b/docs/v1.0.1/files.html new file mode 100644 index 0000000..ad4f0f3 --- /dev/null +++ b/docs/v1.0.1/files.html @@ -0,0 +1,117 @@ + + + + + +serial: File List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+ + + + + + + + +
examples/serial_example.cc
include/serial/serial.h [code]
include/serial/v8stdint.h [code]
include/serial/impl/unix.h [code]
include/serial/impl/win.h [code]
src/serial.cc
src/impl/unix.cc
src/impl/win.cc
+
+ + + + + + diff --git a/docs/v1.0.1/functions.html b/docs/v1.0.1/functions.html new file mode 100644 index 0000000..893f405 --- /dev/null +++ b/docs/v1.0.1/functions.html @@ -0,0 +1,404 @@ + + + + + +serial: Data Fields + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- a -

+ + +

- c -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+ + +

- ~ -

+
+ + + + + + diff --git a/docs/v1.0.1/functions_func.html b/docs/v1.0.1/functions_func.html new file mode 100644 index 0000000..1e28a44 --- /dev/null +++ b/docs/v1.0.1/functions_func.html @@ -0,0 +1,390 @@ + + + + + +serial: Data Fields - Functions + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+ + +

- ~ -

+
+ + + + + + diff --git a/docs/v1.0.1/functions_vars.html b/docs/v1.0.1/functions_vars.html new file mode 100644 index 0000000..621f9f6 --- /dev/null +++ b/docs/v1.0.1/functions_vars.html @@ -0,0 +1,128 @@ + + + + + +serial: Data Fields - Variables + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
+ + + + + + diff --git a/docs/v1.0.1/globals.html b/docs/v1.0.1/globals.html new file mode 100644 index 0000000..6361e34 --- /dev/null +++ b/docs/v1.0.1/globals.html @@ -0,0 +1,130 @@ + + + + + +serial: Globals + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+
+ + + + + + diff --git a/docs/v1.0.1/globals_defs.html b/docs/v1.0.1/globals_defs.html new file mode 100644 index 0000000..0357474 --- /dev/null +++ b/docs/v1.0.1/globals_defs.html @@ -0,0 +1,118 @@ + + + + + +serial: Globals + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
+ + + + + + diff --git a/docs/v1.0.1/globals_func.html b/docs/v1.0.1/globals_func.html new file mode 100644 index 0000000..8e7d309 --- /dev/null +++ b/docs/v1.0.1/globals_func.html @@ -0,0 +1,124 @@ + + + + + +serial: Globals + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
+ + + + + + diff --git a/docs/v1.0.1/graph_legend.html b/docs/v1.0.1/graph_legend.html new file mode 100644 index 0000000..6dd5dd6 --- /dev/null +++ b/docs/v1.0.1/graph_legend.html @@ -0,0 +1,165 @@ + + + + + +serial: Graph Legend + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

+
/*! Invisible class because of truncation */
+class Invisible { };
+
+/*! Truncated class, inheritance relation is hidden */
+class Truncated : public Invisible { };
+
+/* Class not documented with doxygen comments */
+class Undocumented { };
+
+/*! Class that is inherited using public inheritance */
+class PublicBase : public Truncated { };
+
+/*! A template class */
+template<class T> class Templ { };
+
+/*! Class that is inherited using protected inheritance */
+class ProtectedBase { };
+
+/*! Class that is inherited using private inheritance */
+class PrivateBase { };
+
+/*! Class that is used by the Inherited class */
+class Used { };
+
+/*! Super class that inherits a number of other classes */
+class Inherited : public PublicBase,
+                  protected ProtectedBase,
+                  private PrivateBase,
+                  public Undocumented,
+                  public Templ<int>
+{
+  private:
+    Used *m_usedClass;
+};
+

This will result in the following graph:

+
+ +
+

The boxes in the above graph have the following meaning:

+ +

The arrows have the following meaning:

+ +
+ + + + + + diff --git a/docs/v1.0.1/graph_legend.md5 b/docs/v1.0.1/graph_legend.md5 new file mode 100644 index 0000000..c0a4490 --- /dev/null +++ b/docs/v1.0.1/graph_legend.md5 @@ -0,0 +1 @@ +70d597617e34367275a35eeb8fb7ea07 \ No newline at end of file diff --git a/docs/v1.0.1/graph_legend.png b/docs/v1.0.1/graph_legend.png new file mode 100644 index 0000000..c68e946 Binary files /dev/null and b/docs/v1.0.1/graph_legend.png differ diff --git a/docs/v1.0.1/index.html b/docs/v1.0.1/index.html new file mode 100644 index 0000000..38dda26 --- /dev/null +++ b/docs/v1.0.1/index.html @@ -0,0 +1,153 @@ + + + + + +serial: Serial Library + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + +
+ +
+ All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
+ + +
+ +
+ +
+
+
Serial Library
+
+
+
Author:
William Woodall wjwwo.nosp@m.od@g.nosp@m.mail..nosp@m.com, John Harrison ash@g.nosp@m.reat.nosp@m.ertha.nosp@m.ninf.nosp@m.inity.nosp@m..com
+

+What is serial?

+

Serial is a cross-platform, simple to use library for using serial ports on computers. This library provides a C++, object oriented interface for interacting with RS-232 like devices on Linux and Windows.

+

Want to use it with ROS(Robot Operating System)? No problem, it compiles as a unary stack.

+

+Getting Started

+

Ready to jump in?

+ +

+Features

+ +

+Installation

+

+Dependencies

+ +

+Compiling

+

Once you have gathered the dependencies, you need to checkout the software from github.com:

+
+    git clone git://github.com/wjwwood/serial.git
+

Once you have checked out the source code from github.com you can enter the directory and build the software.

+
+    cd serial
+    make
+    make test # (optional) builds the example and tests, and runs the tests.
+    make doc  # (optional) builds _this_ documentation.
+

+Installing

+

To install simply:

+
+    sudo make install
+

To uninstall simply:

+
+    sudo make uninstall
+
+ + + + + + diff --git a/docs/v1.0.1/jquery.js b/docs/v1.0.1/jquery.js new file mode 100644 index 0000000..90b3a2b --- /dev/null +++ b/docs/v1.0.1/jquery.js @@ -0,0 +1,64 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) +{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() +{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); + +/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' +
+ +
+
Here is a list of all namespace members with links to the namespace documentation for each member:
+
+ + + + + + diff --git a/docs/v1.0.1/namespacemembers_enum.html b/docs/v1.0.1/namespacemembers_enum.html new file mode 100644 index 0000000..57a3607 --- /dev/null +++ b/docs/v1.0.1/namespacemembers_enum.html @@ -0,0 +1,124 @@ + + + + + +serial: Namespace Members + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ + + + +
+ +
+ +
+
+ + + + + + diff --git a/docs/v1.0.1/namespacemembers_eval.html b/docs/v1.0.1/namespacemembers_eval.html new file mode 100644 index 0000000..383b9af --- /dev/null +++ b/docs/v1.0.1/namespacemembers_eval.html @@ -0,0 +1,151 @@ + + + + + +serial: Namespace Members + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + +
+ + + + +
+ +
+ +
+
+ + + + + + diff --git a/docs/v1.0.1/namespaces.html b/docs/v1.0.1/namespaces.html new file mode 100644 index 0000000..e310761 --- /dev/null +++ b/docs/v1.0.1/namespaces.html @@ -0,0 +1,112 @@ + + + + + +serial: Namespace List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
Namespace List
+
+
+
Here is a list of all namespaces with brief descriptions:
+ + + +
serial
serial::serial
serial::serial::Serial
+
+ + + + + + diff --git a/docs/v1.0.1/namespaceserial.html b/docs/v1.0.1/namespaceserial.html new file mode 100644 index 0000000..dd09719 --- /dev/null +++ b/docs/v1.0.1/namespaceserial.html @@ -0,0 +1,262 @@ + + + + + +serial: serial Namespace Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
serial Namespace Reference
+
+
+ + + + + + + + + + + + + + +

+Namespaces

namespace  serial

+Data Structures

struct  Timeout
class  Serial
class  SerialExecption
class  IOException
class  PortNotOpenedException

+Enumerations

enum  bytesize_t { fivebits = 5, +sixbits = 6, +sevenbits = 7, +eightbits = 8 + }
enum  parity_t { parity_none = 0, +parity_odd = 1, +parity_even = 2 + }
enum  stopbits_t { stopbits_one = 1, +stopbits_one_point_five, +stopbits_two = 2 + }
enum  flowcontrol_t { flowcontrol_none = 0, +flowcontrol_software, +flowcontrol_hardware + }
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum serial::bytesize_t
+
+
+

Enumeration defines the possible bytesizes for the serial port.

+
Enumerator:
+ + + + +
fivebits  +
sixbits  +
sevenbits  +
eightbits  +
+
+
+
             {
+  fivebits = 5,
+  sixbits = 6,
+  sevenbits = 7,
+  eightbits = 8
+} bytesize_t;
+
+
+
+ +
+
+ + + + +
enum serial::flowcontrol_t
+
+
+

Enumeration defines the possible flowcontrol types for the serial port.

+
Enumerator:
+ + + +
flowcontrol_none  +
flowcontrol_software  +
flowcontrol_hardware  +
+
+
+ +
+
+ +
+
+ + + + +
enum serial::parity_t
+
+
+

Enumeration defines the possible parity types for the serial port.

+
Enumerator:
+ + + +
parity_none  +
parity_odd  +
parity_even  +
+
+
+
             {
+  parity_none = 0,
+  parity_odd = 1,
+  parity_even = 2
+} parity_t;
+
+
+
+ +
+
+ + + + +
enum serial::stopbits_t
+
+
+

Enumeration defines the possible stopbit types for the serial port.

+
Enumerator:
+ + + +
stopbits_one  +
stopbits_one_point_five  +
stopbits_two  +
+
+
+ +
+
+
+ + + + + + diff --git a/docs/v1.0.1/namespaceserial_1_1serial.html b/docs/v1.0.1/namespaceserial_1_1serial.html new file mode 100644 index 0000000..fca1442 --- /dev/null +++ b/docs/v1.0.1/namespaceserial_1_1serial.html @@ -0,0 +1,120 @@ + + + + + +serial: serial::serial Namespace Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
serial::serial Namespace Reference
+
+
+ + + +

+Namespaces

namespace  Serial
+
+ + + + + + diff --git a/docs/v1.0.1/namespaceserial_1_1serial_1_1_serial.html b/docs/v1.0.1/namespaceserial_1_1serial_1_1_serial.html new file mode 100644 index 0000000..01339dd --- /dev/null +++ b/docs/v1.0.1/namespaceserial_1_1serial_1_1_serial.html @@ -0,0 +1,121 @@ + + + + + +serial: serial::serial::Serial Namespace Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
serial::serial::Serial Namespace Reference
+
+
+ + + +

+Data Structures

class  SerialImpl
+
+ + + + + + diff --git a/docs/v1.0.1/nav_f.png b/docs/v1.0.1/nav_f.png new file mode 100644 index 0000000..1b07a16 Binary files /dev/null and b/docs/v1.0.1/nav_f.png differ diff --git a/docs/v1.0.1/nav_h.png b/docs/v1.0.1/nav_h.png new file mode 100644 index 0000000..01f5fa6 Binary files /dev/null and b/docs/v1.0.1/nav_h.png differ diff --git a/docs/v1.0.1/open.png b/docs/v1.0.1/open.png new file mode 100644 index 0000000..7b35d2c Binary files /dev/null and b/docs/v1.0.1/open.png differ diff --git a/docs/v1.0.1/search/all_61.html b/docs/v1.0.1/search/all_61.html new file mode 100644 index 0000000..a3164d5 --- /dev/null +++ b/docs/v1.0.1/search/all_61.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_61.js b/docs/v1.0.1/search/all_61.js new file mode 100644 index 0000000..4a6b8e4 --- /dev/null +++ b/docs/v1.0.1/search/all_61.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['available',['available',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aec474ec54cb40a4191939aacb80c5ea2',1,'serial::serial::Serial::SerialImpl::available()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aecd5e068c21b076bcf161f7bf7f415f5',1,'serial::serial::Serial::SerialImpl::available()'],['../classserial_1_1_serial.html#afafe25b2f3bb0809550abdc72c51a234',1,'serial::Serial::available()']]] +]; diff --git a/docs/v1.0.1/search/all_62.html b/docs/v1.0.1/search/all_62.html new file mode 100644 index 0000000..ee8871c --- /dev/null +++ b/docs/v1.0.1/search/all_62.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_62.js b/docs/v1.0.1/search/all_62.js new file mode 100644 index 0000000..ff57a8f --- /dev/null +++ b/docs/v1.0.1/search/all_62.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bytesize_5ft',['bytesize_t',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/all_63.html b/docs/v1.0.1/search/all_63.html new file mode 100644 index 0000000..56b5ad1 --- /dev/null +++ b/docs/v1.0.1/search/all_63.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_63.js b/docs/v1.0.1/search/all_63.js new file mode 100644 index 0000000..e4b824e --- /dev/null +++ b/docs/v1.0.1/search/all_63.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['close',['close',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a38af5b9c8b676ffaef15c84fb303d6f7',1,'serial::serial::Serial::SerialImpl::close()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a2608096ba0d17127b17484fc9481833a',1,'serial::serial::Serial::SerialImpl::close()'],['../classserial_1_1_serial.html#afbe59407e718bc3d22ea4a67b304db6c',1,'serial::Serial::close()']]] +]; diff --git a/docs/v1.0.1/search/all_65.html b/docs/v1.0.1/search/all_65.html new file mode 100644 index 0000000..66cc834 --- /dev/null +++ b/docs/v1.0.1/search/all_65.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_65.js b/docs/v1.0.1/search/all_65.js new file mode 100644 index 0000000..10bd939 --- /dev/null +++ b/docs/v1.0.1/search/all_65.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['eightbits',['eightbits',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8a47f14d952cf9bed6c3f7ae5985161990',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/all_66.html b/docs/v1.0.1/search/all_66.html new file mode 100644 index 0000000..3d1f8b3 --- /dev/null +++ b/docs/v1.0.1/search/all_66.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_66.js b/docs/v1.0.1/search/all_66.js new file mode 100644 index 0000000..64469b5 --- /dev/null +++ b/docs/v1.0.1/search/all_66.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['fivebits',['fivebits',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8af09eeaf7333d2feda0bd3d748d5e3123',1,'serial']]], + ['flowcontrol_5fhardware',['flowcontrol_hardware',['../namespaceserial.html#a93ef57a314b4e562f9eded6c15d34351a84d411ac86fd25d659eef30aade04c43',1,'serial']]], + ['flowcontrol_5fnone',['flowcontrol_none',['../namespaceserial.html#a93ef57a314b4e562f9eded6c15d34351a083bc02a6e8e7c6540a28654c0f95bb0',1,'serial']]], + ['flowcontrol_5fsoftware',['flowcontrol_software',['../namespaceserial.html#a93ef57a314b4e562f9eded6c15d34351ab3390af5eee11740af5e09d71ad419a6',1,'serial']]], + ['flowcontrol_5ft',['flowcontrol_t',['../namespaceserial.html#a93ef57a314b4e562f9eded6c15d34351',1,'serial']]], + ['flush',['flush',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a7dc1818234ab3f5ae3ebd67bc79d8511',1,'serial::serial::Serial::SerialImpl::flush()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#afe873a403bcca3956437d95aa55c4d06',1,'serial::serial::Serial::SerialImpl::flush()'],['../classserial_1_1_serial.html#a63b7abf172cad25bfc998b3b1f98310f',1,'serial::Serial::flush()']]], + ['flushinput',['flushInput',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a28003745a26c0924fc1d305e947bc3bf',1,'serial::serial::Serial::SerialImpl::flushInput()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a0b4ef99a4b44c3ef153ec7c4802ff194',1,'serial::serial::Serial::SerialImpl::flushInput()'],['../classserial_1_1_serial.html#afa2c1f9114a37b7d140fc2292d1499b9',1,'serial::Serial::flushInput()']]], + ['flushoutput',['flushOutput',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a5b2c81540ca1e1eb962249ca8f538299',1,'serial::serial::Serial::SerialImpl::flushOutput()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ac61932385ea2ce645192e1539349500b',1,'serial::serial::Serial::SerialImpl::flushOutput()'],['../classserial_1_1_serial.html#a256ee4bb93ab0e79d7a66b50f08dce53',1,'serial::Serial::flushOutput()']]] +]; diff --git a/docs/v1.0.1/search/all_67.html b/docs/v1.0.1/search/all_67.html new file mode 100644 index 0000000..41a459a --- /dev/null +++ b/docs/v1.0.1/search/all_67.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_67.js b/docs/v1.0.1/search/all_67.js new file mode 100644 index 0000000..108b85e --- /dev/null +++ b/docs/v1.0.1/search/all_67.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['get_5ftime_5fnow',['get_time_now',['../unix_8cc.html#ad718e26d8db83d1760a13a80c67b4821',1,'unix.cc']]], + ['getbaudrate',['getBaudrate',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af04d2d662a302d446bf8a99151e7a229',1,'serial::serial::Serial::SerialImpl::getBaudrate() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af04d2d662a302d446bf8a99151e7a229',1,'serial::serial::Serial::SerialImpl::getBaudrate() const '],['../classserial_1_1_serial.html#a9b57d6da619d53f58cddc3621c78c32b',1,'serial::Serial::getBaudrate()']]], + ['getbytesize',['getBytesize',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aafeff74e9aed67a996735dbb46323b25',1,'serial::serial::Serial::SerialImpl::getBytesize() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aafeff74e9aed67a996735dbb46323b25',1,'serial::serial::Serial::SerialImpl::getBytesize() const '],['../classserial_1_1_serial.html#a4fce90ef7a9a46525efa373a94a1bfbd',1,'serial::Serial::getBytesize()']]], + ['getcd',['getCD',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a6f2a8d7ff955fc3f061b513c095859e1',1,'serial::serial::Serial::SerialImpl::getCD()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a9d402e28513e22613658b31e13b76802',1,'serial::serial::Serial::SerialImpl::getCD()'],['../classserial_1_1_serial.html#a9795a3e83e6745a14c64f657e68061fb',1,'serial::Serial::getCD()']]], + ['getcts',['getCTS',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a0801d20b6e906369ad232e460b741d7b',1,'serial::serial::Serial::SerialImpl::getCTS()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#afbfd566cd435f7881826fb0a2f74f746',1,'serial::serial::Serial::SerialImpl::getCTS()'],['../classserial_1_1_serial.html#a809f048546c4c72b74e205139b97648c',1,'serial::Serial::getCTS()']]], + ['getdsr',['getDSR',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a15d1d986dad6ec754919bb38c3470362',1,'serial::serial::Serial::SerialImpl::getDSR()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ae07e012e3630c51baf1b8c7c37dd79a5',1,'serial::serial::Serial::SerialImpl::getDSR()'],['../classserial_1_1_serial.html#a6b9a0c485e1fe599dbb5e9e15b1a65d6',1,'serial::Serial::getDSR()']]], + ['geterrornumber',['getErrorNumber',['../classserial_1_1_i_o_exception.html#a91d5ee5241dd49fb39e8e762564b6cc5',1,'serial::IOException']]], + ['getflowcontrol',['getFlowcontrol',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af1b3fe4ea4d075b76b0c243d4ed768ec',1,'serial::serial::Serial::SerialImpl::getFlowcontrol() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af1b3fe4ea4d075b76b0c243d4ed768ec',1,'serial::serial::Serial::SerialImpl::getFlowcontrol() const '],['../classserial_1_1_serial.html#acdc6da48a5434b936b1db20f36caf41f',1,'serial::Serial::getFlowcontrol()']]], + ['getparity',['getParity',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa7cc3b7bd62ad98d25f2e2e0f27d3b42',1,'serial::serial::Serial::SerialImpl::getParity() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa7cc3b7bd62ad98d25f2e2e0f27d3b42',1,'serial::serial::Serial::SerialImpl::getParity() const '],['../classserial_1_1_serial.html#a89d876e1d3f0afadb0d6c21b08ed8931',1,'serial::Serial::getParity()']]], + ['getport',['getPort',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a1f881c2cf8bfc92a7836ee0dd554ec44',1,'serial::serial::Serial::SerialImpl::getPort() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a1f881c2cf8bfc92a7836ee0dd554ec44',1,'serial::serial::Serial::SerialImpl::getPort() const '],['../classserial_1_1_serial.html#ae95cd057e90258b1b3203ff8972a3567',1,'serial::Serial::getPort()']]], + ['getri',['getRI',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a0ee5f4cd897bc177a179ec4f0ba8c561',1,'serial::serial::Serial::SerialImpl::getRI()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a4b9e1b75dce29e8ed4fa62b389510ae5',1,'serial::serial::Serial::SerialImpl::getRI()'],['../classserial_1_1_serial.html#afb96e6968f040c4bff7576095f4ba6e7',1,'serial::Serial::getRI()']]], + ['getstopbits',['getStopbits',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af52b7b4b1d78b9fc98f7150587ddc8b6',1,'serial::serial::Serial::SerialImpl::getStopbits() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af52b7b4b1d78b9fc98f7150587ddc8b6',1,'serial::serial::Serial::SerialImpl::getStopbits() const '],['../classserial_1_1_serial.html#a42887bb76243bf6bbb3f69ff60f9792e',1,'serial::Serial::getStopbits()']]], + ['gettimeout',['getTimeout',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a3523fd0100ba27787042b257cb1b3e63',1,'serial::serial::Serial::SerialImpl::getTimeout() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a3523fd0100ba27787042b257cb1b3e63',1,'serial::serial::Serial::SerialImpl::getTimeout() const '],['../classserial_1_1_serial.html#a765fccd0e53562773626fb39bb2efcb6',1,'serial::Serial::getTimeout()']]] +]; diff --git a/docs/v1.0.1/search/all_69.html b/docs/v1.0.1/search/all_69.html new file mode 100644 index 0000000..1a00b55 --- /dev/null +++ b/docs/v1.0.1/search/all_69.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_69.js b/docs/v1.0.1/search/all_69.js new file mode 100644 index 0000000..252b6c5 --- /dev/null +++ b/docs/v1.0.1/search/all_69.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['inter_5fbyte_5ftimeout',['inter_byte_timeout',['../structserial_1_1_timeout.html#ada15f2a0ae478cbb62ef79d1633b2b81',1,'serial::Timeout']]], + ['ioexception',['IOException',['../classserial_1_1_i_o_exception.html',1,'serial']]], + ['ioexception',['IOException',['../classserial_1_1_i_o_exception.html#acb2f2cf7a5cc8090945f6cbfcef3ef1e',1,'serial::IOException::IOException(std::string file, int line, int errnum)'],['../classserial_1_1_i_o_exception.html#acc1d2c650832cc8127f2cd777072b2cd',1,'serial::IOException::IOException(std::string file, int line, const char *description)'],['../classserial_1_1_i_o_exception.html#af65196a71b800d11b5e5c367caf5b354',1,'serial::IOException::IOException(const IOException &other)']]], + ['isopen',['isOpen',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a189fe759d2119a6513d5981575a91b8e',1,'serial::serial::Serial::SerialImpl::isOpen() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a189fe759d2119a6513d5981575a91b8e',1,'serial::serial::Serial::SerialImpl::isOpen() const '],['../classserial_1_1_serial.html#af9895af496189f7f0aba7c097f5fa9c1',1,'serial::Serial::isOpen()']]] +]; diff --git a/docs/v1.0.1/search/all_6d.html b/docs/v1.0.1/search/all_6d.html new file mode 100644 index 0000000..2e27d4d --- /dev/null +++ b/docs/v1.0.1/search/all_6d.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_6d.js b/docs/v1.0.1/search/all_6d.js new file mode 100644 index 0000000..6259fbe --- /dev/null +++ b/docs/v1.0.1/search/all_6d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['main',['main',['../serial__example_8cc.html#a3c04138a5bfe5d72780bb7e82a18e627',1,'serial_example.cc']]], + ['max',['max',['../structserial_1_1_timeout.html#adc68e33d2f94bfa33ba1062c363b9151',1,'serial::Timeout']]], + ['my_5fsleep',['my_sleep',['../serial__example_8cc.html#a89b7c9d8c710b057346cc9ac52ae3734',1,'serial_example.cc']]] +]; diff --git a/docs/v1.0.1/search/all_6f.html b/docs/v1.0.1/search/all_6f.html new file mode 100644 index 0000000..61827e8 --- /dev/null +++ b/docs/v1.0.1/search/all_6f.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_6f.js b/docs/v1.0.1/search/all_6f.js new file mode 100644 index 0000000..65fc001 --- /dev/null +++ b/docs/v1.0.1/search/all_6f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['open',['open',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#abc447d3fefa173392f5d7b641ffef1ed',1,'serial::serial::Serial::SerialImpl::open()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a279801879f609e1845e3e730f5651aa2',1,'serial::serial::Serial::SerialImpl::open()'],['../classserial_1_1_serial.html#af3644ed1a9d899b70e9d63bb9b808d62',1,'serial::Serial::open()']]] +]; diff --git a/docs/v1.0.1/search/all_70.html b/docs/v1.0.1/search/all_70.html new file mode 100644 index 0000000..0340151 --- /dev/null +++ b/docs/v1.0.1/search/all_70.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_70.js b/docs/v1.0.1/search/all_70.js new file mode 100644 index 0000000..589b9bf --- /dev/null +++ b/docs/v1.0.1/search/all_70.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['parity_5feven',['parity_even',['../namespaceserial.html#a8f45d26bf7c9a06659e75b5004a50481abe15d241d407528bc8a199b02301ed46',1,'serial']]], + ['parity_5fnone',['parity_none',['../namespaceserial.html#a8f45d26bf7c9a06659e75b5004a50481a31cbb2b3cf0870d1a089d66295918416',1,'serial']]], + ['parity_5fodd',['parity_odd',['../namespaceserial.html#a8f45d26bf7c9a06659e75b5004a50481affd8fd58edf7c25bab458cafaebecb10',1,'serial']]], + ['parity_5ft',['parity_t',['../namespaceserial.html#a8f45d26bf7c9a06659e75b5004a50481',1,'serial']]], + ['portnotopenedexception',['PortNotOpenedException',['../classserial_1_1_port_not_opened_exception.html#acd2213fae864534eae6a580f74c5ab1b',1,'serial::PortNotOpenedException::PortNotOpenedException(const char *description)'],['../classserial_1_1_port_not_opened_exception.html#ae8b466d10d496a53ed8e9f949e9e628c',1,'serial::PortNotOpenedException::PortNotOpenedException(const PortNotOpenedException &other)']]], + ['portnotopenedexception',['PortNotOpenedException',['../classserial_1_1_port_not_opened_exception.html',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/all_72.html b/docs/v1.0.1/search/all_72.html new file mode 100644 index 0000000..0ab18d6 --- /dev/null +++ b/docs/v1.0.1/search/all_72.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_72.js b/docs/v1.0.1/search/all_72.js new file mode 100644 index 0000000..27e0f9a --- /dev/null +++ b/docs/v1.0.1/search/all_72.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['read',['read',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa72d6878e104a7fa7a5a635787c4f439',1,'serial::serial::Serial::SerialImpl::read(uint8_t *buf, size_t size=1)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa72d6878e104a7fa7a5a635787c4f439',1,'serial::serial::Serial::SerialImpl::read(uint8_t *buf, size_t size=1)'],['../classserial_1_1_serial.html#a0261dbfb9361784ecb3eee98b85fa103',1,'serial::Serial::read(uint8_t *buffer, size_t size)'],['../classserial_1_1_serial.html#aa3795c6cbc96f504932dd02fd6e9538e',1,'serial::Serial::read(std::vector< uint8_t > &buffer, size_t size=1)'],['../classserial_1_1_serial.html#ac47576244e34abc2e460ba99684c351f',1,'serial::Serial::read(std::string &buffer, size_t size=1)'],['../classserial_1_1_serial.html#a6c71ad1cbacf86cead4d38b48c548405',1,'serial::Serial::read(size_t size=1)']]], + ['read_5ftimeout_5fconstant',['read_timeout_constant',['../structserial_1_1_timeout.html#a099244649dec66b6e0548480edeb2b9f',1,'serial::Timeout']]], + ['read_5ftimeout_5fmultiplier',['read_timeout_multiplier',['../structserial_1_1_timeout.html#a64412753eb2edf1621716dd9f1a4e71e',1,'serial::Timeout']]], + ['readline',['readline',['../classserial_1_1_serial.html#a010b18ec545dfe1a7bb1c95be4bdaa54',1,'serial::Serial::readline(std::string &buffer, size_t size=65536, std::string eol="\n")'],['../classserial_1_1_serial.html#a04177f637cc02f92ec0492d377528b2a',1,'serial::Serial::readline(size_t size=65536, std::string eol="\n")']]], + ['readlines',['readlines',['../classserial_1_1_serial.html#a99f77b9bbdc128b6704cc59db77686c5',1,'serial::Serial']]], + ['readlock',['readLock',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a3536cdcf1a389a2effe27455db31b906',1,'serial::serial::Serial::SerialImpl::readLock()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a284eeedc3dd686ecef0fdcfd83bebc54',1,'serial::serial::Serial::SerialImpl::readLock()']]], + ['readunlock',['readUnlock',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a63f05143ebfa94168e1df5047362ef0e',1,'serial::serial::Serial::SerialImpl::readUnlock()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ab6533e884ba609a1dd6a88b7964d8b52',1,'serial::serial::Serial::SerialImpl::readUnlock()']]], + ['reconfigureport',['reconfigurePort',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a48dcc5d2568edd1ce29df30a95d460d9',1,'serial::serial::Serial::SerialImpl::reconfigurePort()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ad006a2392150daddfa43ae288259c07d',1,'serial::serial::Serial::SerialImpl::reconfigurePort()']]], + ['run',['run',['../serial__example_8cc.html#ac1f545534cdaab9094198a5dc2c2a79f',1,'serial_example.cc']]] +]; diff --git a/docs/v1.0.1/search/all_73.html b/docs/v1.0.1/search/all_73.html new file mode 100644 index 0000000..1ec8f17 --- /dev/null +++ b/docs/v1.0.1/search/all_73.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_73.js b/docs/v1.0.1/search/all_73.js new file mode 100644 index 0000000..e16e64d --- /dev/null +++ b/docs/v1.0.1/search/all_73.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['scopedreadlock',['ScopedReadLock',['../class_serial_1_1_scoped_read_lock.html',1,'serial::Serial']]], + ['scopedreadlock',['ScopedReadLock',['../class_serial_1_1_scoped_read_lock.html#a54f59663807d8adfe6db712ee6103503',1,'Serial::ScopedReadLock']]], + ['scopedwritelock',['ScopedWriteLock',['../class_serial_1_1_scoped_write_lock.html',1,'serial::Serial']]], + ['scopedwritelock',['ScopedWriteLock',['../class_serial_1_1_scoped_write_lock.html#a662173968431aee3d6f204c354b20225',1,'Serial::ScopedWriteLock']]], + ['sendbreak',['sendBreak',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a3f738264b8236e271d79835f0ec08bf3',1,'serial::serial::Serial::SerialImpl::sendBreak(int duration)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a6a1abcf6f4b94c7f3d7753c3f2dab91a',1,'serial::serial::Serial::SerialImpl::sendBreak(int duration)'],['../classserial_1_1_serial.html#ade90ff8f03525ea6d7b702fcd0f336de',1,'serial::Serial::sendBreak()']]], + ['serial',['serial',['../namespaceserial.html',1,'serial'],['../classserial_1_1_serial.html#aecbc4cc1723143805ae5a4aa79ba9332',1,'serial::Serial::Serial()']]], + ['serial',['Serial',['../classserial_1_1_serial.html',1,'serial::Serial'],['../namespaceserial_1_1serial.html',1,'serial::serial']]], + ['serial',['Serial',['../namespaceserial_1_1serial_1_1_serial.html',1,'serial::serial']]], + ['serial_2ecc',['serial.cc',['../serial_8cc.html',1,'']]], + ['serial_2edox',['serial.dox',['../serial_8dox.html',1,'']]], + ['serial_2eh',['serial.h',['../serial_8h.html',1,'']]], + ['serial_5fexample_2ecc',['serial_example.cc',['../serial__example_8cc.html',1,'']]], + ['serialexecption',['SerialExecption',['../classserial_1_1_serial_execption.html',1,'serial']]], + ['serialexecption',['SerialExecption',['../classserial_1_1_serial_execption.html#aa4b29d2631c6a9a0ebe591834bbc4609',1,'serial::SerialExecption::SerialExecption(const char *description)'],['../classserial_1_1_serial_execption.html#a824b52fe58b37de592d7bd13e7949860',1,'serial::SerialExecption::SerialExecption(const SerialExecption &other)']]], + ['serialimpl',['SerialImpl',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a9baa5dccbb7935163bf6715eb5d9deff',1,'serial::serial::Serial::SerialImpl::SerialImpl(const string &port, unsigned long baudrate, bytesize_t bytesize, parity_t parity, stopbits_t stopbits, flowcontrol_t flowcontrol)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a80885778652ea3c7f7db39ec3f20310c',1,'serial::serial::Serial::SerialImpl::SerialImpl(const string &port, unsigned long baudrate, bytesize_t bytesize, parity_t parity, stopbits_t stopbits, flowcontrol_t flowcontrol)']]], + ['serialimpl',['SerialImpl',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html',1,'serial::serial::Serial']]], + ['setbaudrate',['setBaudrate',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a9773deb112bc756a7512930ec4bf23b3',1,'serial::serial::Serial::SerialImpl::setBaudrate(unsigned long baudrate)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ad57c0c497d487c2f2115168f60eda146',1,'serial::serial::Serial::SerialImpl::setBaudrate(unsigned long baudrate)'],['../classserial_1_1_serial.html#ad4f7e9edff11b464199e94a43dfd19bf',1,'serial::Serial::setBaudrate()']]], + ['setbreak',['setBreak',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aff11802f071e95c0e88ef6d0fa3bacd7',1,'serial::serial::Serial::SerialImpl::setBreak(bool level)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a4e439ed9ab4e38fb64bba2d49b814179',1,'serial::serial::Serial::SerialImpl::setBreak(bool level)'],['../classserial_1_1_serial.html#a2a27912b1ca5cdad4a4aba7b9ddbc206',1,'serial::Serial::setBreak()']]], + ['setbytesize',['setBytesize',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ac7bde1547ae13c2bbb09126ae7082661',1,'serial::serial::Serial::SerialImpl::setBytesize(bytesize_t bytesize)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ac7bde1547ae13c2bbb09126ae7082661',1,'serial::serial::Serial::SerialImpl::setBytesize(bytesize_t bytesize)'],['../classserial_1_1_serial.html#adba430fd704f6898a5a1d99fd39a94fa',1,'serial::Serial::setBytesize()']]], + ['setdtr',['setDTR',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a741dbda555f51bb7be361a602f72358c',1,'serial::serial::Serial::SerialImpl::setDTR(bool level)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a94cdd2aad19377a0ec435bb6241b98a8',1,'serial::serial::Serial::SerialImpl::setDTR(bool level)'],['../classserial_1_1_serial.html#ac9b0bbf613a5fe68f05d1d40181a1bb3',1,'serial::Serial::setDTR()']]], + ['setflowcontrol',['setFlowcontrol',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a70f3aaa863c4d11c226a983377a37e43',1,'serial::serial::Serial::SerialImpl::setFlowcontrol(flowcontrol_t flowcontrol)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a70f3aaa863c4d11c226a983377a37e43',1,'serial::serial::Serial::SerialImpl::setFlowcontrol(flowcontrol_t flowcontrol)'],['../classserial_1_1_serial.html#ade41650d6bfe91b6432e5a0a60c03969',1,'serial::Serial::setFlowcontrol()']]], + ['setparity',['setParity',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a2619123d52d075967bdb35247f40e51b',1,'serial::serial::Serial::SerialImpl::setParity(parity_t parity)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a2619123d52d075967bdb35247f40e51b',1,'serial::serial::Serial::SerialImpl::setParity(parity_t parity)'],['../classserial_1_1_serial.html#a1e1896aa59ec35ac5bd263b87614ef01',1,'serial::Serial::setParity()']]], + ['setport',['setPort',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aeb3006e2ff05d5bbaa518bb788eebcda',1,'serial::serial::Serial::SerialImpl::setPort(const string &port)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa3b4c490f3246a506dd29135553ecd64',1,'serial::serial::Serial::SerialImpl::setPort(const string &port)'],['../classserial_1_1_serial.html#acecb0a5102ae0c944fe4b78e4adf839a',1,'serial::Serial::setPort()']]], + ['setrts',['setRTS',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa6f543e9fb4517fa00835eee15fa5ffa',1,'serial::serial::Serial::SerialImpl::setRTS(bool level)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a7faf4ef9a0f1b13c9155a4cae1e0ace9',1,'serial::serial::Serial::SerialImpl::setRTS(bool level)'],['../classserial_1_1_serial.html#ab43ddc05e5d69ff2778f698aa7062370',1,'serial::Serial::setRTS()']]], + ['setstopbits',['setStopbits',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a697da32867459d1c4e527c3ec468062e',1,'serial::serial::Serial::SerialImpl::setStopbits(stopbits_t stopbits)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a697da32867459d1c4e527c3ec468062e',1,'serial::serial::Serial::SerialImpl::setStopbits(stopbits_t stopbits)'],['../classserial_1_1_serial.html#ab72284b5aab723b81013fb560bd6acc5',1,'serial::Serial::setStopbits()']]], + ['settimeout',['setTimeout',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a18365f4a89637103fafb16bc97b8ec2c',1,'serial::serial::Serial::SerialImpl::setTimeout(Timeout &timeout)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a18365f4a89637103fafb16bc97b8ec2c',1,'serial::serial::Serial::SerialImpl::setTimeout(Timeout &timeout)'],['../classserial_1_1_serial.html#a4fc63af4b800a9f9e757414f38f3e8b3',1,'serial::Serial::setTimeout(Timeout &timeout)'],['../classserial_1_1_serial.html#a4b4be39af3e1c68bc6ac09cb55788c86',1,'serial::Serial::setTimeout(uint32_t inter_byte_timeout, uint32_t read_timeout_constant, uint32_t read_timeout_multiplier, uint32_t write_timeout_constant, uint32_t write_timeout_multiplier)']]], + ['sevenbits',['sevenbits',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8a7cf0a3607e326ff6736941008ea8174d',1,'serial']]], + ['simpletimeout',['simpleTimeout',['../structserial_1_1_timeout.html#aa4fbd72e16f47c9aea9fb3c32ca17828',1,'serial::Timeout']]], + ['sixbits',['sixbits',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8a608eb93b80fe8531d626b4e588c5bc8b',1,'serial']]], + ['stopbits_5fone',['stopbits_one',['../namespaceserial.html#af5b116611d6628a3aa8f788fdc09f469ab70806555a14cb43e5cc43f6f3d01157',1,'serial']]], + ['stopbits_5fone_5fpoint_5ffive',['stopbits_one_point_five',['../namespaceserial.html#af5b116611d6628a3aa8f788fdc09f469abb25fb831662d361d99cf12fb0da45ec',1,'serial']]], + ['stopbits_5ft',['stopbits_t',['../namespaceserial.html#af5b116611d6628a3aa8f788fdc09f469',1,'serial']]], + ['stopbits_5ftwo',['stopbits_two',['../namespaceserial.html#af5b116611d6628a3aa8f788fdc09f469ae0b1b8af1ece65afeacbe9fff198fa47',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/all_74.html b/docs/v1.0.1/search/all_74.html new file mode 100644 index 0000000..fdc6589 --- /dev/null +++ b/docs/v1.0.1/search/all_74.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_74.js b/docs/v1.0.1/search/all_74.js new file mode 100644 index 0000000..b846294 --- /dev/null +++ b/docs/v1.0.1/search/all_74.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['throw',['THROW',['../serial_8h.html#a25cffc64bd967636d69d7c3c82af1030',1,'serial.h']]], + ['timeout',['Timeout',['../structserial_1_1_timeout.html#a1a454b17f5d653b8e1b04b3ec2fead59',1,'serial::Timeout']]], + ['timeout',['Timeout',['../structserial_1_1_timeout.html',1,'serial']]], + ['tiocinq',['TIOCINQ',['../unix_8cc.html#ad6548c2f81bf6e2679166b22d24784f1',1,'unix.cc']]] +]; diff --git a/docs/v1.0.1/search/all_75.html b/docs/v1.0.1/search/all_75.html new file mode 100644 index 0000000..ab8455e --- /dev/null +++ b/docs/v1.0.1/search/all_75.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_75.js b/docs/v1.0.1/search/all_75.js new file mode 100644 index 0000000..a7d347f --- /dev/null +++ b/docs/v1.0.1/search/all_75.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unix_2ecc',['unix.cc',['../unix_8cc.html',1,'']]], + ['unix_2eh',['unix.h',['../unix_8h.html',1,'']]] +]; diff --git a/docs/v1.0.1/search/all_76.html b/docs/v1.0.1/search/all_76.html new file mode 100644 index 0000000..0ff5edd --- /dev/null +++ b/docs/v1.0.1/search/all_76.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_76.js b/docs/v1.0.1/search/all_76.js new file mode 100644 index 0000000..edd4f0a --- /dev/null +++ b/docs/v1.0.1/search/all_76.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['v8stdint_2eh',['v8stdint.h',['../v8stdint_8h.html',1,'']]] +]; diff --git a/docs/v1.0.1/search/all_77.html b/docs/v1.0.1/search/all_77.html new file mode 100644 index 0000000..73323d3 --- /dev/null +++ b/docs/v1.0.1/search/all_77.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_77.js b/docs/v1.0.1/search/all_77.js new file mode 100644 index 0000000..cdd7401 --- /dev/null +++ b/docs/v1.0.1/search/all_77.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['waitforchange',['waitForChange',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#abf091b468bdc0d9d338e51e746e0c397',1,'serial::serial::Serial::SerialImpl::waitForChange()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a09f1dcb8e32cb64188daaf8ac0d40215',1,'serial::serial::Serial::SerialImpl::waitForChange()'],['../classserial_1_1_serial.html#a419dc984258956a5adb41fb8c86f5449',1,'serial::Serial::waitForChange()']]], + ['what',['what',['../classserial_1_1_serial_execption.html#a5cb17e5438390e95731ddd230524922d',1,'serial::SerialExecption::what()'],['../classserial_1_1_i_o_exception.html#a5151f78cf0309db2c79f3dc4c779c774',1,'serial::IOException::what()'],['../classserial_1_1_port_not_opened_exception.html#a314c997ecfe3990c4af147b247e8d9ce',1,'serial::PortNotOpenedException::what()']]], + ['win_2ecc',['win.cc',['../win_8cc.html',1,'']]], + ['win_2eh',['win.h',['../win_8h.html',1,'']]], + ['write',['write',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a222136f14876f84fd0d95f47a7d9c541',1,'serial::serial::Serial::SerialImpl::write(const uint8_t *data, size_t length)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a89b50df2562176fd250413833d636d0a',1,'serial::serial::Serial::SerialImpl::write(const uint8_t *data, size_t length)'],['../classserial_1_1_serial.html#aa020880cdff3a370ddc574f594379c3c',1,'serial::Serial::write(const uint8_t *data, size_t size)'],['../classserial_1_1_serial.html#a2c4180b4c7d386c84e9d0e7ef4a267d3',1,'serial::Serial::write(const std::vector< uint8_t > &data)'],['../classserial_1_1_serial.html#a7c92c0307b86a935f6623953eec66460',1,'serial::Serial::write(const std::string &data)']]], + ['write_5ftimeout_5fconstant',['write_timeout_constant',['../structserial_1_1_timeout.html#accf01b97f83564f4ce3d6e5f63e21006',1,'serial::Timeout']]], + ['write_5ftimeout_5fmultiplier',['write_timeout_multiplier',['../structserial_1_1_timeout.html#a31ddae32907cff9c3d27fa763981317d',1,'serial::Timeout']]], + ['writelock',['writeLock',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ac094e8cb4a5957e1ddeb1d4fdc9d9536',1,'serial::serial::Serial::SerialImpl::writeLock()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a2905e50e9082a757bfafc03356e318ed',1,'serial::serial::Serial::SerialImpl::writeLock()']]], + ['writeunlock',['writeUnlock',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#afeac86484622bbeb08303e98db24efe0',1,'serial::serial::Serial::SerialImpl::writeUnlock()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#adaec2b322f0b0793929da24f5bf09949',1,'serial::serial::Serial::SerialImpl::writeUnlock()']]] +]; diff --git a/docs/v1.0.1/search/all_7e.html b/docs/v1.0.1/search/all_7e.html new file mode 100644 index 0000000..63512c6 --- /dev/null +++ b/docs/v1.0.1/search/all_7e.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/all_7e.js b/docs/v1.0.1/search/all_7e.js new file mode 100644 index 0000000..e8440ac --- /dev/null +++ b/docs/v1.0.1/search/all_7e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['_7eioexception',['~IOException',['../classserial_1_1_i_o_exception.html#a026ae2e6abc57c6069915f0f8c701390',1,'serial::IOException']]], + ['_7escopedreadlock',['~ScopedReadLock',['../class_serial_1_1_scoped_read_lock.html#a5c061909b95231cec776c40094c878b4',1,'Serial::ScopedReadLock']]], + ['_7escopedwritelock',['~ScopedWriteLock',['../class_serial_1_1_scoped_write_lock.html#aebeef5b2d16f409b60094cfac092ada2',1,'Serial::ScopedWriteLock']]], + ['_7eserial',['~Serial',['../classserial_1_1_serial.html#a5b32c394c0ff923a4ef1c13cfb20a6ba',1,'serial::Serial']]], + ['_7eserialimpl',['~SerialImpl',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a7972685753e76e0068b754601442a8a5',1,'serial::serial::Serial::SerialImpl::~SerialImpl()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af9f0a13782d7870cf66a49001dcc64e7',1,'serial::serial::Serial::SerialImpl::~SerialImpl()']]] +]; diff --git a/docs/v1.0.1/search/classes_69.html b/docs/v1.0.1/search/classes_69.html new file mode 100644 index 0000000..961dbea --- /dev/null +++ b/docs/v1.0.1/search/classes_69.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/classes_69.js b/docs/v1.0.1/search/classes_69.js new file mode 100644 index 0000000..9252d96 --- /dev/null +++ b/docs/v1.0.1/search/classes_69.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ioexception',['IOException',['../classserial_1_1_i_o_exception.html',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/classes_70.html b/docs/v1.0.1/search/classes_70.html new file mode 100644 index 0000000..e4b5208 --- /dev/null +++ b/docs/v1.0.1/search/classes_70.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/classes_70.js b/docs/v1.0.1/search/classes_70.js new file mode 100644 index 0000000..422dca4 --- /dev/null +++ b/docs/v1.0.1/search/classes_70.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['portnotopenedexception',['PortNotOpenedException',['../classserial_1_1_port_not_opened_exception.html',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/classes_73.html b/docs/v1.0.1/search/classes_73.html new file mode 100644 index 0000000..a1bf0b9 --- /dev/null +++ b/docs/v1.0.1/search/classes_73.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/classes_73.js b/docs/v1.0.1/search/classes_73.js new file mode 100644 index 0000000..a4aa155 --- /dev/null +++ b/docs/v1.0.1/search/classes_73.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['scopedreadlock',['ScopedReadLock',['../class_serial_1_1_scoped_read_lock.html',1,'serial::Serial']]], + ['scopedwritelock',['ScopedWriteLock',['../class_serial_1_1_scoped_write_lock.html',1,'serial::Serial']]], + ['serial',['Serial',['../classserial_1_1_serial.html',1,'serial']]], + ['serialexecption',['SerialExecption',['../classserial_1_1_serial_execption.html',1,'serial']]], + ['serialimpl',['SerialImpl',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html',1,'serial::serial::Serial']]] +]; diff --git a/docs/v1.0.1/search/classes_74.html b/docs/v1.0.1/search/classes_74.html new file mode 100644 index 0000000..f7f27ce --- /dev/null +++ b/docs/v1.0.1/search/classes_74.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/classes_74.js b/docs/v1.0.1/search/classes_74.js new file mode 100644 index 0000000..747b69c --- /dev/null +++ b/docs/v1.0.1/search/classes_74.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['timeout',['Timeout',['../structserial_1_1_timeout.html',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/close.png b/docs/v1.0.1/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/docs/v1.0.1/search/close.png differ diff --git a/docs/v1.0.1/search/defines_74.html b/docs/v1.0.1/search/defines_74.html new file mode 100644 index 0000000..7c78f10 --- /dev/null +++ b/docs/v1.0.1/search/defines_74.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/defines_74.js b/docs/v1.0.1/search/defines_74.js new file mode 100644 index 0000000..38216c2 --- /dev/null +++ b/docs/v1.0.1/search/defines_74.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['throw',['THROW',['../serial_8h.html#a25cffc64bd967636d69d7c3c82af1030',1,'serial.h']]], + ['tiocinq',['TIOCINQ',['../unix_8cc.html#ad6548c2f81bf6e2679166b22d24784f1',1,'unix.cc']]] +]; diff --git a/docs/v1.0.1/search/enums_62.html b/docs/v1.0.1/search/enums_62.html new file mode 100644 index 0000000..321fe92 --- /dev/null +++ b/docs/v1.0.1/search/enums_62.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/enums_62.js b/docs/v1.0.1/search/enums_62.js new file mode 100644 index 0000000..ff57a8f --- /dev/null +++ b/docs/v1.0.1/search/enums_62.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bytesize_5ft',['bytesize_t',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/enums_66.html b/docs/v1.0.1/search/enums_66.html new file mode 100644 index 0000000..87b48de --- /dev/null +++ b/docs/v1.0.1/search/enums_66.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/enums_66.js b/docs/v1.0.1/search/enums_66.js new file mode 100644 index 0000000..0eb1150 --- /dev/null +++ b/docs/v1.0.1/search/enums_66.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flowcontrol_5ft',['flowcontrol_t',['../namespaceserial.html#a93ef57a314b4e562f9eded6c15d34351',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/enums_70.html b/docs/v1.0.1/search/enums_70.html new file mode 100644 index 0000000..0bc0915 --- /dev/null +++ b/docs/v1.0.1/search/enums_70.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/enums_70.js b/docs/v1.0.1/search/enums_70.js new file mode 100644 index 0000000..e244a2d --- /dev/null +++ b/docs/v1.0.1/search/enums_70.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['parity_5ft',['parity_t',['../namespaceserial.html#a8f45d26bf7c9a06659e75b5004a50481',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/enums_73.html b/docs/v1.0.1/search/enums_73.html new file mode 100644 index 0000000..3f157e6 --- /dev/null +++ b/docs/v1.0.1/search/enums_73.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/enums_73.js b/docs/v1.0.1/search/enums_73.js new file mode 100644 index 0000000..d047512 --- /dev/null +++ b/docs/v1.0.1/search/enums_73.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['stopbits_5ft',['stopbits_t',['../namespaceserial.html#af5b116611d6628a3aa8f788fdc09f469',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/enumvalues_65.html b/docs/v1.0.1/search/enumvalues_65.html new file mode 100644 index 0000000..58030d7 --- /dev/null +++ b/docs/v1.0.1/search/enumvalues_65.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/enumvalues_65.js b/docs/v1.0.1/search/enumvalues_65.js new file mode 100644 index 0000000..10bd939 --- /dev/null +++ b/docs/v1.0.1/search/enumvalues_65.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['eightbits',['eightbits',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8a47f14d952cf9bed6c3f7ae5985161990',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/enumvalues_66.html b/docs/v1.0.1/search/enumvalues_66.html new file mode 100644 index 0000000..7f7df6f --- /dev/null +++ b/docs/v1.0.1/search/enumvalues_66.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/enumvalues_66.js b/docs/v1.0.1/search/enumvalues_66.js new file mode 100644 index 0000000..d5ec239 --- /dev/null +++ b/docs/v1.0.1/search/enumvalues_66.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['fivebits',['fivebits',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8af09eeaf7333d2feda0bd3d748d5e3123',1,'serial']]], + ['flowcontrol_5fhardware',['flowcontrol_hardware',['../namespaceserial.html#a93ef57a314b4e562f9eded6c15d34351a84d411ac86fd25d659eef30aade04c43',1,'serial']]], + ['flowcontrol_5fnone',['flowcontrol_none',['../namespaceserial.html#a93ef57a314b4e562f9eded6c15d34351a083bc02a6e8e7c6540a28654c0f95bb0',1,'serial']]], + ['flowcontrol_5fsoftware',['flowcontrol_software',['../namespaceserial.html#a93ef57a314b4e562f9eded6c15d34351ab3390af5eee11740af5e09d71ad419a6',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/enumvalues_70.html b/docs/v1.0.1/search/enumvalues_70.html new file mode 100644 index 0000000..35a05be --- /dev/null +++ b/docs/v1.0.1/search/enumvalues_70.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/enumvalues_70.js b/docs/v1.0.1/search/enumvalues_70.js new file mode 100644 index 0000000..c073712 --- /dev/null +++ b/docs/v1.0.1/search/enumvalues_70.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['parity_5feven',['parity_even',['../namespaceserial.html#a8f45d26bf7c9a06659e75b5004a50481abe15d241d407528bc8a199b02301ed46',1,'serial']]], + ['parity_5fnone',['parity_none',['../namespaceserial.html#a8f45d26bf7c9a06659e75b5004a50481a31cbb2b3cf0870d1a089d66295918416',1,'serial']]], + ['parity_5fodd',['parity_odd',['../namespaceserial.html#a8f45d26bf7c9a06659e75b5004a50481affd8fd58edf7c25bab458cafaebecb10',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/enumvalues_73.html b/docs/v1.0.1/search/enumvalues_73.html new file mode 100644 index 0000000..f2f7db4 --- /dev/null +++ b/docs/v1.0.1/search/enumvalues_73.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/enumvalues_73.js b/docs/v1.0.1/search/enumvalues_73.js new file mode 100644 index 0000000..878414b --- /dev/null +++ b/docs/v1.0.1/search/enumvalues_73.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['sevenbits',['sevenbits',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8a7cf0a3607e326ff6736941008ea8174d',1,'serial']]], + ['sixbits',['sixbits',['../namespaceserial.html#a00b3281fa11cea770c0b0c8a106080f8a608eb93b80fe8531d626b4e588c5bc8b',1,'serial']]], + ['stopbits_5fone',['stopbits_one',['../namespaceserial.html#af5b116611d6628a3aa8f788fdc09f469ab70806555a14cb43e5cc43f6f3d01157',1,'serial']]], + ['stopbits_5fone_5fpoint_5ffive',['stopbits_one_point_five',['../namespaceserial.html#af5b116611d6628a3aa8f788fdc09f469abb25fb831662d361d99cf12fb0da45ec',1,'serial']]], + ['stopbits_5ftwo',['stopbits_two',['../namespaceserial.html#af5b116611d6628a3aa8f788fdc09f469ae0b1b8af1ece65afeacbe9fff198fa47',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/files_73.html b/docs/v1.0.1/search/files_73.html new file mode 100644 index 0000000..e0de9e6 --- /dev/null +++ b/docs/v1.0.1/search/files_73.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/files_73.js b/docs/v1.0.1/search/files_73.js new file mode 100644 index 0000000..5c9a4a2 --- /dev/null +++ b/docs/v1.0.1/search/files_73.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['serial_2ecc',['serial.cc',['../serial_8cc.html',1,'']]], + ['serial_2edox',['serial.dox',['../serial_8dox.html',1,'']]], + ['serial_2eh',['serial.h',['../serial_8h.html',1,'']]], + ['serial_5fexample_2ecc',['serial_example.cc',['../serial__example_8cc.html',1,'']]] +]; diff --git a/docs/v1.0.1/search/files_75.html b/docs/v1.0.1/search/files_75.html new file mode 100644 index 0000000..8ea7b3d --- /dev/null +++ b/docs/v1.0.1/search/files_75.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/files_75.js b/docs/v1.0.1/search/files_75.js new file mode 100644 index 0000000..a7d347f --- /dev/null +++ b/docs/v1.0.1/search/files_75.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unix_2ecc',['unix.cc',['../unix_8cc.html',1,'']]], + ['unix_2eh',['unix.h',['../unix_8h.html',1,'']]] +]; diff --git a/docs/v1.0.1/search/files_76.html b/docs/v1.0.1/search/files_76.html new file mode 100644 index 0000000..e53e134 --- /dev/null +++ b/docs/v1.0.1/search/files_76.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/files_76.js b/docs/v1.0.1/search/files_76.js new file mode 100644 index 0000000..edd4f0a --- /dev/null +++ b/docs/v1.0.1/search/files_76.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['v8stdint_2eh',['v8stdint.h',['../v8stdint_8h.html',1,'']]] +]; diff --git a/docs/v1.0.1/search/files_77.html b/docs/v1.0.1/search/files_77.html new file mode 100644 index 0000000..69f6897 --- /dev/null +++ b/docs/v1.0.1/search/files_77.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/files_77.js b/docs/v1.0.1/search/files_77.js new file mode 100644 index 0000000..e1669a3 --- /dev/null +++ b/docs/v1.0.1/search/files_77.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['win_2ecc',['win.cc',['../win_8cc.html',1,'']]], + ['win_2eh',['win.h',['../win_8h.html',1,'']]] +]; diff --git a/docs/v1.0.1/search/functions_61.html b/docs/v1.0.1/search/functions_61.html new file mode 100644 index 0000000..7f39533 --- /dev/null +++ b/docs/v1.0.1/search/functions_61.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_61.js b/docs/v1.0.1/search/functions_61.js new file mode 100644 index 0000000..4a6b8e4 --- /dev/null +++ b/docs/v1.0.1/search/functions_61.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['available',['available',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aec474ec54cb40a4191939aacb80c5ea2',1,'serial::serial::Serial::SerialImpl::available()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aecd5e068c21b076bcf161f7bf7f415f5',1,'serial::serial::Serial::SerialImpl::available()'],['../classserial_1_1_serial.html#afafe25b2f3bb0809550abdc72c51a234',1,'serial::Serial::available()']]] +]; diff --git a/docs/v1.0.1/search/functions_63.html b/docs/v1.0.1/search/functions_63.html new file mode 100644 index 0000000..9ebe11d --- /dev/null +++ b/docs/v1.0.1/search/functions_63.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_63.js b/docs/v1.0.1/search/functions_63.js new file mode 100644 index 0000000..e4b824e --- /dev/null +++ b/docs/v1.0.1/search/functions_63.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['close',['close',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a38af5b9c8b676ffaef15c84fb303d6f7',1,'serial::serial::Serial::SerialImpl::close()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a2608096ba0d17127b17484fc9481833a',1,'serial::serial::Serial::SerialImpl::close()'],['../classserial_1_1_serial.html#afbe59407e718bc3d22ea4a67b304db6c',1,'serial::Serial::close()']]] +]; diff --git a/docs/v1.0.1/search/functions_66.html b/docs/v1.0.1/search/functions_66.html new file mode 100644 index 0000000..319a531 --- /dev/null +++ b/docs/v1.0.1/search/functions_66.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_66.js b/docs/v1.0.1/search/functions_66.js new file mode 100644 index 0000000..a22f813 --- /dev/null +++ b/docs/v1.0.1/search/functions_66.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['flush',['flush',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a7dc1818234ab3f5ae3ebd67bc79d8511',1,'serial::serial::Serial::SerialImpl::flush()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#afe873a403bcca3956437d95aa55c4d06',1,'serial::serial::Serial::SerialImpl::flush()'],['../classserial_1_1_serial.html#a63b7abf172cad25bfc998b3b1f98310f',1,'serial::Serial::flush()']]], + ['flushinput',['flushInput',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a28003745a26c0924fc1d305e947bc3bf',1,'serial::serial::Serial::SerialImpl::flushInput()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a0b4ef99a4b44c3ef153ec7c4802ff194',1,'serial::serial::Serial::SerialImpl::flushInput()'],['../classserial_1_1_serial.html#afa2c1f9114a37b7d140fc2292d1499b9',1,'serial::Serial::flushInput()']]], + ['flushoutput',['flushOutput',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a5b2c81540ca1e1eb962249ca8f538299',1,'serial::serial::Serial::SerialImpl::flushOutput()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ac61932385ea2ce645192e1539349500b',1,'serial::serial::Serial::SerialImpl::flushOutput()'],['../classserial_1_1_serial.html#a256ee4bb93ab0e79d7a66b50f08dce53',1,'serial::Serial::flushOutput()']]] +]; diff --git a/docs/v1.0.1/search/functions_67.html b/docs/v1.0.1/search/functions_67.html new file mode 100644 index 0000000..d0ab42a --- /dev/null +++ b/docs/v1.0.1/search/functions_67.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_67.js b/docs/v1.0.1/search/functions_67.js new file mode 100644 index 0000000..108b85e --- /dev/null +++ b/docs/v1.0.1/search/functions_67.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['get_5ftime_5fnow',['get_time_now',['../unix_8cc.html#ad718e26d8db83d1760a13a80c67b4821',1,'unix.cc']]], + ['getbaudrate',['getBaudrate',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af04d2d662a302d446bf8a99151e7a229',1,'serial::serial::Serial::SerialImpl::getBaudrate() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af04d2d662a302d446bf8a99151e7a229',1,'serial::serial::Serial::SerialImpl::getBaudrate() const '],['../classserial_1_1_serial.html#a9b57d6da619d53f58cddc3621c78c32b',1,'serial::Serial::getBaudrate()']]], + ['getbytesize',['getBytesize',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aafeff74e9aed67a996735dbb46323b25',1,'serial::serial::Serial::SerialImpl::getBytesize() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aafeff74e9aed67a996735dbb46323b25',1,'serial::serial::Serial::SerialImpl::getBytesize() const '],['../classserial_1_1_serial.html#a4fce90ef7a9a46525efa373a94a1bfbd',1,'serial::Serial::getBytesize()']]], + ['getcd',['getCD',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a6f2a8d7ff955fc3f061b513c095859e1',1,'serial::serial::Serial::SerialImpl::getCD()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a9d402e28513e22613658b31e13b76802',1,'serial::serial::Serial::SerialImpl::getCD()'],['../classserial_1_1_serial.html#a9795a3e83e6745a14c64f657e68061fb',1,'serial::Serial::getCD()']]], + ['getcts',['getCTS',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a0801d20b6e906369ad232e460b741d7b',1,'serial::serial::Serial::SerialImpl::getCTS()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#afbfd566cd435f7881826fb0a2f74f746',1,'serial::serial::Serial::SerialImpl::getCTS()'],['../classserial_1_1_serial.html#a809f048546c4c72b74e205139b97648c',1,'serial::Serial::getCTS()']]], + ['getdsr',['getDSR',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a15d1d986dad6ec754919bb38c3470362',1,'serial::serial::Serial::SerialImpl::getDSR()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ae07e012e3630c51baf1b8c7c37dd79a5',1,'serial::serial::Serial::SerialImpl::getDSR()'],['../classserial_1_1_serial.html#a6b9a0c485e1fe599dbb5e9e15b1a65d6',1,'serial::Serial::getDSR()']]], + ['geterrornumber',['getErrorNumber',['../classserial_1_1_i_o_exception.html#a91d5ee5241dd49fb39e8e762564b6cc5',1,'serial::IOException']]], + ['getflowcontrol',['getFlowcontrol',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af1b3fe4ea4d075b76b0c243d4ed768ec',1,'serial::serial::Serial::SerialImpl::getFlowcontrol() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af1b3fe4ea4d075b76b0c243d4ed768ec',1,'serial::serial::Serial::SerialImpl::getFlowcontrol() const '],['../classserial_1_1_serial.html#acdc6da48a5434b936b1db20f36caf41f',1,'serial::Serial::getFlowcontrol()']]], + ['getparity',['getParity',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa7cc3b7bd62ad98d25f2e2e0f27d3b42',1,'serial::serial::Serial::SerialImpl::getParity() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa7cc3b7bd62ad98d25f2e2e0f27d3b42',1,'serial::serial::Serial::SerialImpl::getParity() const '],['../classserial_1_1_serial.html#a89d876e1d3f0afadb0d6c21b08ed8931',1,'serial::Serial::getParity()']]], + ['getport',['getPort',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a1f881c2cf8bfc92a7836ee0dd554ec44',1,'serial::serial::Serial::SerialImpl::getPort() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a1f881c2cf8bfc92a7836ee0dd554ec44',1,'serial::serial::Serial::SerialImpl::getPort() const '],['../classserial_1_1_serial.html#ae95cd057e90258b1b3203ff8972a3567',1,'serial::Serial::getPort()']]], + ['getri',['getRI',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a0ee5f4cd897bc177a179ec4f0ba8c561',1,'serial::serial::Serial::SerialImpl::getRI()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a4b9e1b75dce29e8ed4fa62b389510ae5',1,'serial::serial::Serial::SerialImpl::getRI()'],['../classserial_1_1_serial.html#afb96e6968f040c4bff7576095f4ba6e7',1,'serial::Serial::getRI()']]], + ['getstopbits',['getStopbits',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af52b7b4b1d78b9fc98f7150587ddc8b6',1,'serial::serial::Serial::SerialImpl::getStopbits() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af52b7b4b1d78b9fc98f7150587ddc8b6',1,'serial::serial::Serial::SerialImpl::getStopbits() const '],['../classserial_1_1_serial.html#a42887bb76243bf6bbb3f69ff60f9792e',1,'serial::Serial::getStopbits()']]], + ['gettimeout',['getTimeout',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a3523fd0100ba27787042b257cb1b3e63',1,'serial::serial::Serial::SerialImpl::getTimeout() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a3523fd0100ba27787042b257cb1b3e63',1,'serial::serial::Serial::SerialImpl::getTimeout() const '],['../classserial_1_1_serial.html#a765fccd0e53562773626fb39bb2efcb6',1,'serial::Serial::getTimeout()']]] +]; diff --git a/docs/v1.0.1/search/functions_69.html b/docs/v1.0.1/search/functions_69.html new file mode 100644 index 0000000..e204197 --- /dev/null +++ b/docs/v1.0.1/search/functions_69.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_69.js b/docs/v1.0.1/search/functions_69.js new file mode 100644 index 0000000..4630e34 --- /dev/null +++ b/docs/v1.0.1/search/functions_69.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ioexception',['IOException',['../classserial_1_1_i_o_exception.html#acb2f2cf7a5cc8090945f6cbfcef3ef1e',1,'serial::IOException::IOException(std::string file, int line, int errnum)'],['../classserial_1_1_i_o_exception.html#acc1d2c650832cc8127f2cd777072b2cd',1,'serial::IOException::IOException(std::string file, int line, const char *description)'],['../classserial_1_1_i_o_exception.html#af65196a71b800d11b5e5c367caf5b354',1,'serial::IOException::IOException(const IOException &other)']]], + ['isopen',['isOpen',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a189fe759d2119a6513d5981575a91b8e',1,'serial::serial::Serial::SerialImpl::isOpen() const '],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a189fe759d2119a6513d5981575a91b8e',1,'serial::serial::Serial::SerialImpl::isOpen() const '],['../classserial_1_1_serial.html#af9895af496189f7f0aba7c097f5fa9c1',1,'serial::Serial::isOpen()']]] +]; diff --git a/docs/v1.0.1/search/functions_6d.html b/docs/v1.0.1/search/functions_6d.html new file mode 100644 index 0000000..d01ac53 --- /dev/null +++ b/docs/v1.0.1/search/functions_6d.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_6d.js b/docs/v1.0.1/search/functions_6d.js new file mode 100644 index 0000000..6259fbe --- /dev/null +++ b/docs/v1.0.1/search/functions_6d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['main',['main',['../serial__example_8cc.html#a3c04138a5bfe5d72780bb7e82a18e627',1,'serial_example.cc']]], + ['max',['max',['../structserial_1_1_timeout.html#adc68e33d2f94bfa33ba1062c363b9151',1,'serial::Timeout']]], + ['my_5fsleep',['my_sleep',['../serial__example_8cc.html#a89b7c9d8c710b057346cc9ac52ae3734',1,'serial_example.cc']]] +]; diff --git a/docs/v1.0.1/search/functions_6f.html b/docs/v1.0.1/search/functions_6f.html new file mode 100644 index 0000000..222f0f8 --- /dev/null +++ b/docs/v1.0.1/search/functions_6f.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_6f.js b/docs/v1.0.1/search/functions_6f.js new file mode 100644 index 0000000..65fc001 --- /dev/null +++ b/docs/v1.0.1/search/functions_6f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['open',['open',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#abc447d3fefa173392f5d7b641ffef1ed',1,'serial::serial::Serial::SerialImpl::open()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a279801879f609e1845e3e730f5651aa2',1,'serial::serial::Serial::SerialImpl::open()'],['../classserial_1_1_serial.html#af3644ed1a9d899b70e9d63bb9b808d62',1,'serial::Serial::open()']]] +]; diff --git a/docs/v1.0.1/search/functions_70.html b/docs/v1.0.1/search/functions_70.html new file mode 100644 index 0000000..c62125e --- /dev/null +++ b/docs/v1.0.1/search/functions_70.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_70.js b/docs/v1.0.1/search/functions_70.js new file mode 100644 index 0000000..ecb3695 --- /dev/null +++ b/docs/v1.0.1/search/functions_70.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['portnotopenedexception',['PortNotOpenedException',['../classserial_1_1_port_not_opened_exception.html#acd2213fae864534eae6a580f74c5ab1b',1,'serial::PortNotOpenedException::PortNotOpenedException(const char *description)'],['../classserial_1_1_port_not_opened_exception.html#ae8b466d10d496a53ed8e9f949e9e628c',1,'serial::PortNotOpenedException::PortNotOpenedException(const PortNotOpenedException &other)']]] +]; diff --git a/docs/v1.0.1/search/functions_72.html b/docs/v1.0.1/search/functions_72.html new file mode 100644 index 0000000..a4336f7 --- /dev/null +++ b/docs/v1.0.1/search/functions_72.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_72.js b/docs/v1.0.1/search/functions_72.js new file mode 100644 index 0000000..85d6f08 --- /dev/null +++ b/docs/v1.0.1/search/functions_72.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['read',['read',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa72d6878e104a7fa7a5a635787c4f439',1,'serial::serial::Serial::SerialImpl::read(uint8_t *buf, size_t size=1)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa72d6878e104a7fa7a5a635787c4f439',1,'serial::serial::Serial::SerialImpl::read(uint8_t *buf, size_t size=1)'],['../classserial_1_1_serial.html#a0261dbfb9361784ecb3eee98b85fa103',1,'serial::Serial::read(uint8_t *buffer, size_t size)'],['../classserial_1_1_serial.html#aa3795c6cbc96f504932dd02fd6e9538e',1,'serial::Serial::read(std::vector< uint8_t > &buffer, size_t size=1)'],['../classserial_1_1_serial.html#ac47576244e34abc2e460ba99684c351f',1,'serial::Serial::read(std::string &buffer, size_t size=1)'],['../classserial_1_1_serial.html#a6c71ad1cbacf86cead4d38b48c548405',1,'serial::Serial::read(size_t size=1)']]], + ['readline',['readline',['../classserial_1_1_serial.html#a010b18ec545dfe1a7bb1c95be4bdaa54',1,'serial::Serial::readline(std::string &buffer, size_t size=65536, std::string eol="\n")'],['../classserial_1_1_serial.html#a04177f637cc02f92ec0492d377528b2a',1,'serial::Serial::readline(size_t size=65536, std::string eol="\n")']]], + ['readlines',['readlines',['../classserial_1_1_serial.html#a99f77b9bbdc128b6704cc59db77686c5',1,'serial::Serial']]], + ['readlock',['readLock',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a3536cdcf1a389a2effe27455db31b906',1,'serial::serial::Serial::SerialImpl::readLock()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a284eeedc3dd686ecef0fdcfd83bebc54',1,'serial::serial::Serial::SerialImpl::readLock()']]], + ['readunlock',['readUnlock',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a63f05143ebfa94168e1df5047362ef0e',1,'serial::serial::Serial::SerialImpl::readUnlock()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ab6533e884ba609a1dd6a88b7964d8b52',1,'serial::serial::Serial::SerialImpl::readUnlock()']]], + ['reconfigureport',['reconfigurePort',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a48dcc5d2568edd1ce29df30a95d460d9',1,'serial::serial::Serial::SerialImpl::reconfigurePort()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ad006a2392150daddfa43ae288259c07d',1,'serial::serial::Serial::SerialImpl::reconfigurePort()']]], + ['run',['run',['../serial__example_8cc.html#ac1f545534cdaab9094198a5dc2c2a79f',1,'serial_example.cc']]] +]; diff --git a/docs/v1.0.1/search/functions_73.html b/docs/v1.0.1/search/functions_73.html new file mode 100644 index 0000000..774d577 --- /dev/null +++ b/docs/v1.0.1/search/functions_73.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_73.js b/docs/v1.0.1/search/functions_73.js new file mode 100644 index 0000000..761e893 --- /dev/null +++ b/docs/v1.0.1/search/functions_73.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['scopedreadlock',['ScopedReadLock',['../class_serial_1_1_scoped_read_lock.html#a54f59663807d8adfe6db712ee6103503',1,'Serial::ScopedReadLock']]], + ['scopedwritelock',['ScopedWriteLock',['../class_serial_1_1_scoped_write_lock.html#a662173968431aee3d6f204c354b20225',1,'Serial::ScopedWriteLock']]], + ['sendbreak',['sendBreak',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a3f738264b8236e271d79835f0ec08bf3',1,'serial::serial::Serial::SerialImpl::sendBreak(int duration)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a6a1abcf6f4b94c7f3d7753c3f2dab91a',1,'serial::serial::Serial::SerialImpl::sendBreak(int duration)'],['../classserial_1_1_serial.html#ade90ff8f03525ea6d7b702fcd0f336de',1,'serial::Serial::sendBreak()']]], + ['serial',['Serial',['../classserial_1_1_serial.html#aecbc4cc1723143805ae5a4aa79ba9332',1,'serial::Serial']]], + ['serialexecption',['SerialExecption',['../classserial_1_1_serial_execption.html#aa4b29d2631c6a9a0ebe591834bbc4609',1,'serial::SerialExecption::SerialExecption(const char *description)'],['../classserial_1_1_serial_execption.html#a824b52fe58b37de592d7bd13e7949860',1,'serial::SerialExecption::SerialExecption(const SerialExecption &other)']]], + ['serialimpl',['SerialImpl',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a9baa5dccbb7935163bf6715eb5d9deff',1,'serial::serial::Serial::SerialImpl::SerialImpl(const string &port, unsigned long baudrate, bytesize_t bytesize, parity_t parity, stopbits_t stopbits, flowcontrol_t flowcontrol)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a80885778652ea3c7f7db39ec3f20310c',1,'serial::serial::Serial::SerialImpl::SerialImpl(const string &port, unsigned long baudrate, bytesize_t bytesize, parity_t parity, stopbits_t stopbits, flowcontrol_t flowcontrol)']]], + ['setbaudrate',['setBaudrate',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a9773deb112bc756a7512930ec4bf23b3',1,'serial::serial::Serial::SerialImpl::setBaudrate(unsigned long baudrate)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ad57c0c497d487c2f2115168f60eda146',1,'serial::serial::Serial::SerialImpl::setBaudrate(unsigned long baudrate)'],['../classserial_1_1_serial.html#ad4f7e9edff11b464199e94a43dfd19bf',1,'serial::Serial::setBaudrate()']]], + ['setbreak',['setBreak',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aff11802f071e95c0e88ef6d0fa3bacd7',1,'serial::serial::Serial::SerialImpl::setBreak(bool level)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a4e439ed9ab4e38fb64bba2d49b814179',1,'serial::serial::Serial::SerialImpl::setBreak(bool level)'],['../classserial_1_1_serial.html#a2a27912b1ca5cdad4a4aba7b9ddbc206',1,'serial::Serial::setBreak()']]], + ['setbytesize',['setBytesize',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ac7bde1547ae13c2bbb09126ae7082661',1,'serial::serial::Serial::SerialImpl::setBytesize(bytesize_t bytesize)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ac7bde1547ae13c2bbb09126ae7082661',1,'serial::serial::Serial::SerialImpl::setBytesize(bytesize_t bytesize)'],['../classserial_1_1_serial.html#adba430fd704f6898a5a1d99fd39a94fa',1,'serial::Serial::setBytesize()']]], + ['setdtr',['setDTR',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a741dbda555f51bb7be361a602f72358c',1,'serial::serial::Serial::SerialImpl::setDTR(bool level)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a94cdd2aad19377a0ec435bb6241b98a8',1,'serial::serial::Serial::SerialImpl::setDTR(bool level)'],['../classserial_1_1_serial.html#ac9b0bbf613a5fe68f05d1d40181a1bb3',1,'serial::Serial::setDTR()']]], + ['setflowcontrol',['setFlowcontrol',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a70f3aaa863c4d11c226a983377a37e43',1,'serial::serial::Serial::SerialImpl::setFlowcontrol(flowcontrol_t flowcontrol)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a70f3aaa863c4d11c226a983377a37e43',1,'serial::serial::Serial::SerialImpl::setFlowcontrol(flowcontrol_t flowcontrol)'],['../classserial_1_1_serial.html#ade41650d6bfe91b6432e5a0a60c03969',1,'serial::Serial::setFlowcontrol()']]], + ['setparity',['setParity',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a2619123d52d075967bdb35247f40e51b',1,'serial::serial::Serial::SerialImpl::setParity(parity_t parity)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a2619123d52d075967bdb35247f40e51b',1,'serial::serial::Serial::SerialImpl::setParity(parity_t parity)'],['../classserial_1_1_serial.html#a1e1896aa59ec35ac5bd263b87614ef01',1,'serial::Serial::setParity()']]], + ['setport',['setPort',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aeb3006e2ff05d5bbaa518bb788eebcda',1,'serial::serial::Serial::SerialImpl::setPort(const string &port)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa3b4c490f3246a506dd29135553ecd64',1,'serial::serial::Serial::SerialImpl::setPort(const string &port)'],['../classserial_1_1_serial.html#acecb0a5102ae0c944fe4b78e4adf839a',1,'serial::Serial::setPort()']]], + ['setrts',['setRTS',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#aa6f543e9fb4517fa00835eee15fa5ffa',1,'serial::serial::Serial::SerialImpl::setRTS(bool level)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a7faf4ef9a0f1b13c9155a4cae1e0ace9',1,'serial::serial::Serial::SerialImpl::setRTS(bool level)'],['../classserial_1_1_serial.html#ab43ddc05e5d69ff2778f698aa7062370',1,'serial::Serial::setRTS()']]], + ['setstopbits',['setStopbits',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a697da32867459d1c4e527c3ec468062e',1,'serial::serial::Serial::SerialImpl::setStopbits(stopbits_t stopbits)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a697da32867459d1c4e527c3ec468062e',1,'serial::serial::Serial::SerialImpl::setStopbits(stopbits_t stopbits)'],['../classserial_1_1_serial.html#ab72284b5aab723b81013fb560bd6acc5',1,'serial::Serial::setStopbits()']]], + ['settimeout',['setTimeout',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a18365f4a89637103fafb16bc97b8ec2c',1,'serial::serial::Serial::SerialImpl::setTimeout(Timeout &timeout)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a18365f4a89637103fafb16bc97b8ec2c',1,'serial::serial::Serial::SerialImpl::setTimeout(Timeout &timeout)'],['../classserial_1_1_serial.html#a4fc63af4b800a9f9e757414f38f3e8b3',1,'serial::Serial::setTimeout(Timeout &timeout)'],['../classserial_1_1_serial.html#a4b4be39af3e1c68bc6ac09cb55788c86',1,'serial::Serial::setTimeout(uint32_t inter_byte_timeout, uint32_t read_timeout_constant, uint32_t read_timeout_multiplier, uint32_t write_timeout_constant, uint32_t write_timeout_multiplier)']]], + ['simpletimeout',['simpleTimeout',['../structserial_1_1_timeout.html#aa4fbd72e16f47c9aea9fb3c32ca17828',1,'serial::Timeout']]] +]; diff --git a/docs/v1.0.1/search/functions_74.html b/docs/v1.0.1/search/functions_74.html new file mode 100644 index 0000000..e3c96c3 --- /dev/null +++ b/docs/v1.0.1/search/functions_74.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_74.js b/docs/v1.0.1/search/functions_74.js new file mode 100644 index 0000000..2a6b2d5 --- /dev/null +++ b/docs/v1.0.1/search/functions_74.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['timeout',['Timeout',['../structserial_1_1_timeout.html#a1a454b17f5d653b8e1b04b3ec2fead59',1,'serial::Timeout']]] +]; diff --git a/docs/v1.0.1/search/functions_77.html b/docs/v1.0.1/search/functions_77.html new file mode 100644 index 0000000..8fe9755 --- /dev/null +++ b/docs/v1.0.1/search/functions_77.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_77.js b/docs/v1.0.1/search/functions_77.js new file mode 100644 index 0000000..585547f --- /dev/null +++ b/docs/v1.0.1/search/functions_77.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['waitforchange',['waitForChange',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#abf091b468bdc0d9d338e51e746e0c397',1,'serial::serial::Serial::SerialImpl::waitForChange()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a09f1dcb8e32cb64188daaf8ac0d40215',1,'serial::serial::Serial::SerialImpl::waitForChange()'],['../classserial_1_1_serial.html#a419dc984258956a5adb41fb8c86f5449',1,'serial::Serial::waitForChange()']]], + ['what',['what',['../classserial_1_1_serial_execption.html#a5cb17e5438390e95731ddd230524922d',1,'serial::SerialExecption::what()'],['../classserial_1_1_i_o_exception.html#a5151f78cf0309db2c79f3dc4c779c774',1,'serial::IOException::what()'],['../classserial_1_1_port_not_opened_exception.html#a314c997ecfe3990c4af147b247e8d9ce',1,'serial::PortNotOpenedException::what()']]], + ['write',['write',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a222136f14876f84fd0d95f47a7d9c541',1,'serial::serial::Serial::SerialImpl::write(const uint8_t *data, size_t length)'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a89b50df2562176fd250413833d636d0a',1,'serial::serial::Serial::SerialImpl::write(const uint8_t *data, size_t length)'],['../classserial_1_1_serial.html#aa020880cdff3a370ddc574f594379c3c',1,'serial::Serial::write(const uint8_t *data, size_t size)'],['../classserial_1_1_serial.html#a2c4180b4c7d386c84e9d0e7ef4a267d3',1,'serial::Serial::write(const std::vector< uint8_t > &data)'],['../classserial_1_1_serial.html#a7c92c0307b86a935f6623953eec66460',1,'serial::Serial::write(const std::string &data)']]], + ['writelock',['writeLock',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#ac094e8cb4a5957e1ddeb1d4fdc9d9536',1,'serial::serial::Serial::SerialImpl::writeLock()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a2905e50e9082a757bfafc03356e318ed',1,'serial::serial::Serial::SerialImpl::writeLock()']]], + ['writeunlock',['writeUnlock',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#afeac86484622bbeb08303e98db24efe0',1,'serial::serial::Serial::SerialImpl::writeUnlock()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#adaec2b322f0b0793929da24f5bf09949',1,'serial::serial::Serial::SerialImpl::writeUnlock()']]] +]; diff --git a/docs/v1.0.1/search/functions_7e.html b/docs/v1.0.1/search/functions_7e.html new file mode 100644 index 0000000..fd1d3ce --- /dev/null +++ b/docs/v1.0.1/search/functions_7e.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/functions_7e.js b/docs/v1.0.1/search/functions_7e.js new file mode 100644 index 0000000..e8440ac --- /dev/null +++ b/docs/v1.0.1/search/functions_7e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['_7eioexception',['~IOException',['../classserial_1_1_i_o_exception.html#a026ae2e6abc57c6069915f0f8c701390',1,'serial::IOException']]], + ['_7escopedreadlock',['~ScopedReadLock',['../class_serial_1_1_scoped_read_lock.html#a5c061909b95231cec776c40094c878b4',1,'Serial::ScopedReadLock']]], + ['_7escopedwritelock',['~ScopedWriteLock',['../class_serial_1_1_scoped_write_lock.html#aebeef5b2d16f409b60094cfac092ada2',1,'Serial::ScopedWriteLock']]], + ['_7eserial',['~Serial',['../classserial_1_1_serial.html#a5b32c394c0ff923a4ef1c13cfb20a6ba',1,'serial::Serial']]], + ['_7eserialimpl',['~SerialImpl',['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#a7972685753e76e0068b754601442a8a5',1,'serial::serial::Serial::SerialImpl::~SerialImpl()'],['../classserial_1_1serial_1_1_serial_1_1_serial_impl.html#af9f0a13782d7870cf66a49001dcc64e7',1,'serial::serial::Serial::SerialImpl::~SerialImpl()']]] +]; diff --git a/docs/v1.0.1/search/mag_sel.png b/docs/v1.0.1/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/docs/v1.0.1/search/mag_sel.png differ diff --git a/docs/v1.0.1/search/namespaces_73.html b/docs/v1.0.1/search/namespaces_73.html new file mode 100644 index 0000000..5ebf8e4 --- /dev/null +++ b/docs/v1.0.1/search/namespaces_73.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/namespaces_73.js b/docs/v1.0.1/search/namespaces_73.js new file mode 100644 index 0000000..ed4fe68 --- /dev/null +++ b/docs/v1.0.1/search/namespaces_73.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['serial',['serial',['../namespaceserial.html',1,'']]], + ['serial',['Serial',['../namespaceserial_1_1serial_1_1_serial.html',1,'serial::serial']]], + ['serial',['serial',['../namespaceserial_1_1serial.html',1,'serial']]] +]; diff --git a/docs/v1.0.1/search/nomatches.html b/docs/v1.0.1/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/docs/v1.0.1/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/docs/v1.0.1/search/search.css b/docs/v1.0.1/search/search.css new file mode 100644 index 0000000..d18c1da --- /dev/null +++ b/docs/v1.0.1/search/search.css @@ -0,0 +1,238 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/docs/v1.0.1/search/search.js b/docs/v1.0.1/search/search.js new file mode 100644 index 0000000..cef6337 --- /dev/null +++ b/docs/v1.0.1/search/search.js @@ -0,0 +1,811 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111011101000101101111110000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101001101000101101110010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000001000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 7: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 8: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "enums", + 7: "enumvalues", + 8: "defines" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/variables_69.js b/docs/v1.0.1/search/variables_69.js new file mode 100644 index 0000000..c0d7081 --- /dev/null +++ b/docs/v1.0.1/search/variables_69.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['inter_5fbyte_5ftimeout',['inter_byte_timeout',['../structserial_1_1_timeout.html#ada15f2a0ae478cbb62ef79d1633b2b81',1,'serial::Timeout']]] +]; diff --git a/docs/v1.0.1/search/variables_72.html b/docs/v1.0.1/search/variables_72.html new file mode 100644 index 0000000..29b87f0 --- /dev/null +++ b/docs/v1.0.1/search/variables_72.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/variables_72.js b/docs/v1.0.1/search/variables_72.js new file mode 100644 index 0000000..dd94aea --- /dev/null +++ b/docs/v1.0.1/search/variables_72.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['read_5ftimeout_5fconstant',['read_timeout_constant',['../structserial_1_1_timeout.html#a099244649dec66b6e0548480edeb2b9f',1,'serial::Timeout']]], + ['read_5ftimeout_5fmultiplier',['read_timeout_multiplier',['../structserial_1_1_timeout.html#a64412753eb2edf1621716dd9f1a4e71e',1,'serial::Timeout']]] +]; diff --git a/docs/v1.0.1/search/variables_77.html b/docs/v1.0.1/search/variables_77.html new file mode 100644 index 0000000..25c3e3a --- /dev/null +++ b/docs/v1.0.1/search/variables_77.html @@ -0,0 +1,25 @@ + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/v1.0.1/search/variables_77.js b/docs/v1.0.1/search/variables_77.js new file mode 100644 index 0000000..43fa260 --- /dev/null +++ b/docs/v1.0.1/search/variables_77.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['write_5ftimeout_5fconstant',['write_timeout_constant',['../structserial_1_1_timeout.html#accf01b97f83564f4ce3d6e5f63e21006',1,'serial::Timeout']]], + ['write_5ftimeout_5fmultiplier',['write_timeout_multiplier',['../structserial_1_1_timeout.html#a31ddae32907cff9c3d27fa763981317d',1,'serial::Timeout']]] +]; diff --git a/docs/v1.0.1/serial_8cc.html b/docs/v1.0.1/serial_8cc.html new file mode 100644 index 0000000..cd4d097 --- /dev/null +++ b/docs/v1.0.1/serial_8cc.html @@ -0,0 +1,125 @@ + + + + + +serial: src/serial.cc File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
src/serial.cc File Reference
+
+
+
#include <alloca.h>
+#include "serial/serial.h"
+#include "serial/impl/unix.h"
+
+Include dependency graph for serial.cc:
+
+
+ + +
+
+ + + +

+Data Structures

class  serial::Serial::ScopedReadLock
class  serial::Serial::ScopedWriteLock
+
+ + + + + + diff --git a/docs/v1.0.1/serial_8cc__incl.map b/docs/v1.0.1/serial_8cc__incl.map new file mode 100644 index 0000000..9b93ade --- /dev/null +++ b/docs/v1.0.1/serial_8cc__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/v1.0.1/serial_8cc__incl.md5 b/docs/v1.0.1/serial_8cc__incl.md5 new file mode 100644 index 0000000..3cbf1cc --- /dev/null +++ b/docs/v1.0.1/serial_8cc__incl.md5 @@ -0,0 +1 @@ +c658af7c9cee1bc94ae43edfaee9db94 \ No newline at end of file diff --git a/docs/v1.0.1/serial_8cc__incl.png b/docs/v1.0.1/serial_8cc__incl.png new file mode 100644 index 0000000..574e4e8 Binary files /dev/null and b/docs/v1.0.1/serial_8cc__incl.png differ diff --git a/docs/v1.0.1/serial_8dox.html b/docs/v1.0.1/serial_8dox.html new file mode 100644 index 0000000..02a947d --- /dev/null +++ b/docs/v1.0.1/serial_8dox.html @@ -0,0 +1,107 @@ + + + + + +serial: doc/serial.dox File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
doc/serial.dox File Reference
+
+
+
+ + + + + + diff --git a/docs/v1.0.1/serial_8h.html b/docs/v1.0.1/serial_8h.html new file mode 100644 index 0000000..df6a099 --- /dev/null +++ b/docs/v1.0.1/serial_8h.html @@ -0,0 +1,215 @@ + + + + + +serial: include/serial/serial.h File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
include/serial/serial.h File Reference
+
+
+
#include <limits>
+#include <vector>
+#include <string>
+#include <cstring>
+#include <sstream>
+#include <exception>
+#include <stdexcept>
+#include <serial/v8stdint.h>
+
+Include dependency graph for serial.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Data Structures

struct  serial::Timeout
class  serial::Serial
class  serial::SerialExecption
class  serial::IOException
class  serial::PortNotOpenedException

+Namespaces

namespace  serial

+Defines

#define THROW(exceptionClass, message)

+Enumerations

enum  serial::bytesize_t { serial::fivebits = 5, +serial::sixbits = 6, +serial::sevenbits = 7, +serial::eightbits = 8 + }
enum  serial::parity_t { serial::parity_none = 0, +serial::parity_odd = 1, +serial::parity_even = 2 + }
enum  serial::stopbits_t { serial::stopbits_one = 1, +serial::stopbits_one_point_five, +serial::stopbits_two = 2 + }
enum  serial::flowcontrol_t { serial::flowcontrol_none = 0, +serial::flowcontrol_software, +serial::flowcontrol_hardware + }
+

Detailed Description

+
Author:
William Woodall wjwwo.nosp@m.od@g.nosp@m.mail..nosp@m.com
+
+John Harrison ash.g.nosp@m.ti@g.nosp@m.mail..nosp@m.com
+
Version:
0.1
+

+LICENSE

+

The MIT License

+

Copyright (c) 2012 William Woodall

+

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

+DESCRIPTION

+

This provides a cross platform interface for interacting with Serial Ports.

+

Define Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define THROW( exceptionClass,
 message 
)
+
+
+Value:
throw exceptionClass(__FILE__, \
+__LINE__, (message) )
+
+
+
+
+ + + + + + diff --git a/docs/v1.0.1/serial_8h__dep__incl.map b/docs/v1.0.1/serial_8h__dep__incl.map new file mode 100644 index 0000000..0c1cf0d --- /dev/null +++ b/docs/v1.0.1/serial_8h__dep__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/v1.0.1/serial_8h__dep__incl.md5 b/docs/v1.0.1/serial_8h__dep__incl.md5 new file mode 100644 index 0000000..880bd7b --- /dev/null +++ b/docs/v1.0.1/serial_8h__dep__incl.md5 @@ -0,0 +1 @@ +c98d963b631b13d25afd23d112f3e739 \ No newline at end of file diff --git a/docs/v1.0.1/serial_8h__dep__incl.png b/docs/v1.0.1/serial_8h__dep__incl.png new file mode 100644 index 0000000..d7f6ae6 Binary files /dev/null and b/docs/v1.0.1/serial_8h__dep__incl.png differ diff --git a/docs/v1.0.1/serial_8h__incl.map b/docs/v1.0.1/serial_8h__incl.map new file mode 100644 index 0000000..8c11f01 --- /dev/null +++ b/docs/v1.0.1/serial_8h__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/v1.0.1/serial_8h__incl.md5 b/docs/v1.0.1/serial_8h__incl.md5 new file mode 100644 index 0000000..f84a942 --- /dev/null +++ b/docs/v1.0.1/serial_8h__incl.md5 @@ -0,0 +1 @@ +b5d1de374ff6278767e5c67477d92fc7 \ No newline at end of file diff --git a/docs/v1.0.1/serial_8h__incl.png b/docs/v1.0.1/serial_8h__incl.png new file mode 100644 index 0000000..9bdc47e Binary files /dev/null and b/docs/v1.0.1/serial_8h__incl.png differ diff --git a/docs/v1.0.1/serial_8h_source.html b/docs/v1.0.1/serial_8h_source.html new file mode 100644 index 0000000..75a1b1c --- /dev/null +++ b/docs/v1.0.1/serial_8h_source.html @@ -0,0 +1,422 @@ + + + + + +serial: include/serial/serial.h Source File + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
include/serial/serial.h
+
+
+Go to the documentation of this file.
00001 
+00036 #ifndef SERIAL_H
+00037 #define SERIAL_H
+00038 
+00039 #include <limits>
+00040 #include <vector>
+00041 #include <string>
+00042 #include <cstring>
+00043 #include <sstream>
+00044 #include <exception>
+00045 #include <stdexcept>
+00046 #include <serial/v8stdint.h>
+00047 
+00048 #define THROW(exceptionClass, message) throw exceptionClass(__FILE__, \
+00049 __LINE__, (message) )
+00050 
+00051 namespace serial {
+00052 
+00056 typedef enum {
+00057   fivebits = 5,
+00058   sixbits = 6,
+00059   sevenbits = 7,
+00060   eightbits = 8
+00061 } bytesize_t;
+00062 
+00066 typedef enum {
+00067   parity_none = 0,
+00068   parity_odd = 1,
+00069   parity_even = 2
+00070 } parity_t;
+00071 
+00075 typedef enum {
+00076   stopbits_one = 1,
+00077   stopbits_one_point_five,
+00078   stopbits_two = 2
+00079 } stopbits_t;
+00080 
+00084 typedef enum {
+00085   flowcontrol_none = 0,
+00086   flowcontrol_software,
+00087   flowcontrol_hardware
+00088 } flowcontrol_t;
+00089 
+00096 struct Timeout {
+00097 #ifdef max
+00098 # undef max
+00099 #endif
+00100   static uint32_t max() {return std::numeric_limits<uint32_t>::max();}
+00110   static Timeout simpleTimeout(uint32_t timeout) {
+00111     return Timeout(max(), timeout, 0, timeout, 0);
+00112   }
+00113 
+00115   uint32_t inter_byte_timeout;
+00117   uint32_t read_timeout_constant;
+00121   uint32_t read_timeout_multiplier;
+00123   uint32_t write_timeout_constant;
+00127   uint32_t write_timeout_multiplier;
+00128 
+00129   explicit Timeout (uint32_t inter_byte_timeout_=0,
+00130                     uint32_t read_timeout_constant_=0,
+00131                     uint32_t read_timeout_multiplier_=0,
+00132                     uint32_t write_timeout_constant_=0,
+00133                     uint32_t write_timeout_multiplier_=0)
+00134   : inter_byte_timeout(inter_byte_timeout_),
+00135     read_timeout_constant(read_timeout_constant_),
+00136     read_timeout_multiplier(read_timeout_multiplier_),
+00137     write_timeout_constant(write_timeout_constant_),
+00138     write_timeout_multiplier(write_timeout_multiplier_)
+00139   {}
+00140 };
+00141 
+00145 class Serial {
+00146 public:
+00176   Serial (const std::string &port = "",
+00177           uint32_t baudrate = 9600,
+00178           Timeout timeout = Timeout(),
+00179           bytesize_t bytesize = eightbits,
+00180           parity_t parity = parity_none,
+00181           stopbits_t stopbits = stopbits_one,
+00182           flowcontrol_t flowcontrol = flowcontrol_none);
+00183 
+00185   virtual ~Serial ();
+00186 
+00200   void
+00201   open ();
+00202 
+00207   bool
+00208   isOpen () const;
+00209 
+00211   void
+00212   close ();
+00213 
+00215   size_t
+00216   available ();
+00217 
+00243   size_t
+00244   read (uint8_t *buffer, size_t size);
+00245 
+00254   size_t
+00255   read (std::vector<uint8_t> &buffer, size_t size = 1);
+00256 
+00265   size_t
+00266   read (std::string &buffer, size_t size = 1);
+00267 
+00275   std::string
+00276   read (size_t size = 1);
+00277 
+00288   size_t
+00289   readline (std::string &buffer, size_t size = 65536, std::string eol = "\n");
+00290 
+00300   std::string
+00301   readline (size_t size = 65536, std::string eol = "\n");
+00302 
+00314   std::vector<std::string>
+00315   readlines (size_t size = 65536, std::string eol = "\n");
+00316 
+00328   size_t
+00329   write (const uint8_t *data, size_t size);
+00330 
+00339   size_t
+00340   write (const std::vector<uint8_t> &data);
+00341 
+00350   size_t
+00351   write (const std::string &data);
+00352 
+00361   void
+00362   setPort (const std::string &port);
+00363 
+00370   std::string
+00371   getPort () const;
+00372 
+00407   void
+00408   setTimeout (Timeout &timeout);
+00409 
+00411   void
+00412   setTimeout (uint32_t inter_byte_timeout, uint32_t read_timeout_constant,
+00413               uint32_t read_timeout_multiplier, uint32_t write_timeout_constant,
+00414               uint32_t write_timeout_multiplier)
+00415   {
+00416     Timeout timeout(inter_byte_timeout, read_timeout_constant,
+00417                     read_timeout_multiplier, write_timeout_constant,
+00418                     write_timeout_multiplier);
+00419     return setTimeout(timeout);
+00420   }
+00421 
+00429   Timeout
+00430   getTimeout () const;
+00431 
+00444   void
+00445   setBaudrate (uint32_t baudrate);
+00446 
+00455   uint32_t
+00456   getBaudrate () const;
+00457 
+00466   void
+00467   setBytesize (bytesize_t bytesize);
+00468 
+00475   bytesize_t
+00476   getBytesize () const;
+00477 
+00485   void
+00486   setParity (parity_t parity);
+00487 
+00494   parity_t
+00495   getParity () const;
+00496 
+00504   void
+00505   setStopbits (stopbits_t stopbits);
+00506 
+00513   stopbits_t
+00514   getStopbits () const;
+00515 
+00524   void
+00525   setFlowcontrol (flowcontrol_t flowcontrol);
+00526 
+00533   flowcontrol_t
+00534   getFlowcontrol () const;
+00535 
+00537   void
+00538   flush ();
+00539 
+00541   void
+00542   flushInput ();
+00543 
+00545   void
+00546   flushOutput ();
+00547 
+00549   void
+00550   sendBreak (int duration);
+00551 
+00553   void
+00554   setBreak (bool level = true);
+00555 
+00557   void
+00558   setRTS (bool level = true);
+00559 
+00561   void
+00562   setDTR (bool level = true);
+00563 
+00578   bool
+00579   waitForChange ();
+00580 
+00582   bool
+00583   getCTS ();
+00584 
+00586   bool
+00587   getDSR ();
+00588 
+00590   bool
+00591   getRI ();
+00592 
+00594   bool
+00595   getCD ();
+00596 
+00597 private:
+00598   // Disable copy constructors
+00599   Serial(const Serial&);
+00600   void operator=(const Serial&);
+00601   const Serial& operator=(Serial);
+00602 
+00603   std::string read_cache_; 
+00604 
+00605   // Pimpl idiom, d_pointer
+00606   class SerialImpl;
+00607   SerialImpl *pimpl_;
+00608 
+00609   // Scoped Lock Classes
+00610   class ScopedReadLock;
+00611   class ScopedWriteLock;
+00612 
+00613   // Read common function
+00614   size_t
+00615   read_ (uint8_t *buffer, size_t size);
+00616   // Write common function
+00617   size_t
+00618   write_ (const uint8_t *data, size_t length);
+00619 
+00620 };
+00621 
+00622 class SerialExecption : public std::exception
+00623 {
+00624   // Disable copy constructors
+00625   void operator=(const SerialExecption&);
+00626   const SerialExecption& operator=(SerialExecption);
+00627   const char* e_what_;
+00628 public:
+00629   SerialExecption (const char *description) : e_what_ (description) {}
+00630   SerialExecption (const SerialExecption& other) {
+00631     e_what_ = other.e_what_;
+00632   }
+00633 
+00634   virtual const char* what () const throw ()
+00635   {
+00636     std::stringstream ss;
+00637     ss << "SerialException " << e_what_ << " failed.";
+00638     return ss.str ().c_str ();
+00639   }
+00640 };
+00641 
+00642 class IOException : public std::exception
+00643 {
+00644   // Disable copy constructors
+00645   void operator=(const IOException&);
+00646   const IOException& operator=(IOException);
+00647   std::string file_;
+00648   int line_;
+00649   const char* e_what_;
+00650   int errno_;
+00651 public:
+00652   explicit IOException (std::string file, int line, int errnum)
+00653   : file_(file), line_(line), e_what_ (strerror (errnum)), errno_(errnum) {}
+00654   explicit IOException (std::string file, int line, const char * description)
+00655   : file_(file), line_(line), e_what_ (description), errno_(0) {}
+00656   virtual ~IOException() throw() {}
+00657   IOException (const IOException& other) {
+00658     e_what_ = other.e_what_;
+00659   }
+00660 
+00661   int getErrorNumber () { return errno_; }
+00662 
+00663   virtual const char* what () const throw ()
+00664   {
+00665     std::stringstream ss;
+00666     if (errno_ == 0)
+00667       ss << "IO Exception: " << e_what_;
+00668     else
+00669       ss << "IO Exception (" << errno_ << "): " << e_what_;
+00670     ss << ", file " << file_ << ", line " << line_ << ".";
+00671     return ss.str ().c_str ();
+00672   }
+00673 };
+00674 
+00675 class PortNotOpenedException : public std::exception
+00676 {
+00677   // Disable copy constructors
+00678   void operator=(const PortNotOpenedException&);
+00679   const PortNotOpenedException& operator=(PortNotOpenedException);
+00680   const char * e_what_;
+00681 public:
+00682   PortNotOpenedException (const char * description) : e_what_ (description) {}
+00683   PortNotOpenedException (const PortNotOpenedException& other) {
+00684     e_what_ = other.e_what_;
+00685   }
+00686 
+00687   virtual const char* what () const throw ()
+00688   {
+00689     std::stringstream ss;
+00690     ss << e_what_ << " called before port was opened.";
+00691     return ss.str ().c_str ();
+00692   }
+00693 };
+00694 
+00695 } // namespace serial
+00696 
+00697 #endif
+
+ + + + + + diff --git a/docs/v1.0.1/serial__example_8cc.html b/docs/v1.0.1/serial__example_8cc.html new file mode 100644 index 0000000..4790ddc --- /dev/null +++ b/docs/v1.0.1/serial__example_8cc.html @@ -0,0 +1,307 @@ + + + + + +serial: examples/serial_example.cc File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
examples/serial_example.cc File Reference
+
+
+
#include <string>
+#include <iostream>
+#include <cstdio>
+#include <unistd.h>
+#include "serial/serial.h"
+
+Include dependency graph for serial_example.cc:
+
+
+ + +
+
+ + + + +

+Functions

void my_sleep (unsigned long milliseconds)
int run (int argc, char **argv)
int main (int argc, char **argv)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char ** argv 
)
+
+
+
                                {
+  try {
+    return run(argc, argv);
+  } catch (exception &e) {
+    cerr << "Unhandled Exception: " << e.what() << endl;
+  }
+}
+
+
+
+ +
+
+ + + + + + + + +
void my_sleep (unsigned long milliseconds)
+
+
+
                                          {
+#ifdef _WIN32
+      Sleep(milliseconds); // 100 ms
+#else
+      usleep(milliseconds*1000); // 100 ms
+#endif
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int run (int argc,
char ** argv 
)
+
+
+
{
+  if(argc < 3) {
+    cerr << "Usage: test_serial <serial port address> ";
+    cerr << "<baudrate> [test string]" << endl;
+    return 0;
+  }
+  // Argument 1 is the serial port
+  string port(argv[1]);
+
+  // Argument 2 is the baudrate
+  unsigned long baud = 0;
+  sscanf(argv[2], "%lu", &baud);
+
+  // port, baudrate, timeout in milliseconds
+  serial::Serial my_serial(port, baud, serial::Timeout::simpleTimeout(1000));
+
+  cout << "Is the serial port open?";
+  if(my_serial.isOpen())
+    cout << " Yes." << endl;
+  else
+    cout << " No." << endl;
+
+  // Get the Test string
+  int count = 0;
+  string test_string;
+  if (argc == 4) {
+    test_string = argv[3];
+  } else {
+    test_string = "Testing.";
+  }
+
+  // Test the timeout, there should be 1 second between prints
+  cout << "Timeout == 1000ms, asking for 1 more byte than written." << endl;
+  while (count < 10) {
+    size_t bytes_wrote = my_serial.write(test_string);
+
+    string result = my_serial.read(test_string.length()+1);
+
+    cout << "Iteration: " << count << ", Bytes written: ";
+    cout << bytes_wrote << ", Bytes read: ";
+    cout << result.length() << ", String read: " << result << endl;
+
+    count += 1;
+  }
+
+  // Test the timeout at 250ms
+  my_serial.setTimeout(serial::Timeout::max(), 250, 0, 250, 0);
+  count = 0;
+  cout << "Timeout == 250ms, asking for 1 more byte than written." << endl;
+  while (count < 10) {
+    size_t bytes_wrote = my_serial.write(test_string);
+
+    string result = my_serial.read(test_string.length()+1);
+
+    cout << "Iteration: " << count << ", Bytes written: ";
+    cout << bytes_wrote << ", Bytes read: ";
+    cout << result.length() << ", String read: " << result << endl;
+
+    count += 1;
+  }
+
+  // Test the timeout at 250ms, but asking exactly for what was written
+  count = 0;
+  cout << "Timeout == 250ms, asking for exactly what was written." << endl;
+  while (count < 10) {
+    size_t bytes_wrote = my_serial.write(test_string);
+
+    string result = my_serial.read(test_string.length());
+
+    cout << "Iteration: " << count << ", Bytes written: ";
+    cout << bytes_wrote << ", Bytes read: ";
+    cout << result.length() << ", String read: " << result << endl;
+
+    count += 1;
+  }
+
+  // Test the timeout at 250ms, but asking for 1 less than what was written
+  count = 0;
+  cout << "Timeout == 250ms, asking for 1 less than was written." << endl;
+  while (count < 10) {
+    size_t bytes_wrote = my_serial.write(test_string);
+
+    string result = my_serial.read(test_string.length()-1);
+
+    cout << "Iteration: " << count << ", Bytes written: ";
+    cout << bytes_wrote << ", Bytes read: ";
+    cout << result.length() << ", String read: " << result << endl;
+
+    count += 1;
+  }
+
+  return 0;
+}
+
+
+
+
+ + + + + + diff --git a/docs/v1.0.1/serial__example_8cc__incl.map b/docs/v1.0.1/serial__example_8cc__incl.map new file mode 100644 index 0000000..e416595 --- /dev/null +++ b/docs/v1.0.1/serial__example_8cc__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/v1.0.1/serial__example_8cc__incl.md5 b/docs/v1.0.1/serial__example_8cc__incl.md5 new file mode 100644 index 0000000..41f231c --- /dev/null +++ b/docs/v1.0.1/serial__example_8cc__incl.md5 @@ -0,0 +1 @@ +ef764addfbad6889cc99705661c2273d \ No newline at end of file diff --git a/docs/v1.0.1/serial__example_8cc__incl.png b/docs/v1.0.1/serial__example_8cc__incl.png new file mode 100644 index 0000000..90473f8 Binary files /dev/null and b/docs/v1.0.1/serial__example_8cc__incl.png differ diff --git a/docs/v1.0.1/structserial_1_1_timeout.html b/docs/v1.0.1/structserial_1_1_timeout.html new file mode 100644 index 0000000..77e3e8b --- /dev/null +++ b/docs/v1.0.1/structserial_1_1_timeout.html @@ -0,0 +1,311 @@ + + + + + +serial: serial::Timeout Struct Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
serial::Timeout Struct Reference
+
+
+ +

#include <serial.h>

+ + + + + + + + + + + + +

+Public Member Functions

 Timeout (uint32_t inter_byte_timeout_=0, uint32_t read_timeout_constant_=0, uint32_t read_timeout_multiplier_=0, uint32_t write_timeout_constant_=0, uint32_t write_timeout_multiplier_=0)

+Static Public Member Functions

static uint32_t max ()
static Timeout simpleTimeout (uint32_t timeout)

+Data Fields

uint32_t inter_byte_timeout
uint32_t read_timeout_constant
uint32_t read_timeout_multiplier
uint32_t write_timeout_constant
uint32_t write_timeout_multiplier
+

Detailed Description

+

Structure for setting the timeout of the serial port, times are in milliseconds.

+

In order to disable the interbyte timeout, set it to Timeout::max().

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
serial::Timeout::Timeout (uint32_t inter_byte_timeout_ = 0,
uint32_t read_timeout_constant_ = 0,
uint32_t read_timeout_multiplier_ = 0,
uint32_t write_timeout_constant_ = 0,
uint32_t write_timeout_multiplier_ = 0 
) [inline, explicit]
+
+
+
  : inter_byte_timeout(inter_byte_timeout_),
+    read_timeout_constant(read_timeout_constant_),
+    read_timeout_multiplier(read_timeout_multiplier_),
+    write_timeout_constant(write_timeout_constant_),
+    write_timeout_multiplier(write_timeout_multiplier_)
+  {}
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
static uint32_t serial::Timeout::max () [inline, static]
+
+ +
+ +
+
+ + + + + + + + +
static Timeout serial::Timeout::simpleTimeout (uint32_t timeout) [inline, static]
+
+
+

Convenience function to generate Timeout structs using a single absolute timeout.

+
Parameters:
+ + +
timeoutA long that defines the time in milliseconds until a timeout occurs after a call to read or write is made.
+
+
+
Returns:
Timeout struct that represents this simple timeout provided.
+
                                                 {
+    return Timeout(max(), timeout, 0, timeout, 0);
+  }
+
+
+
+

Field Documentation

+ +
+ +
+

Number of milliseconds between bytes received to timeout on.

+ +
+
+ +
+ +
+

A constant number of milliseconds to wait after calling read.

+ +
+
+ +
+ +
+

A multiplier against the number of requested bytes to wait after calling read.

+ +
+
+ +
+ +
+

A constant number of milliseconds to wait after calling write.

+ +
+
+ +
+ +
+

A multiplier against the number of requested bytes to wait after calling write.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + + + diff --git a/docs/v1.0.1/tab_a.png b/docs/v1.0.1/tab_a.png new file mode 100644 index 0000000..2d99ef2 Binary files /dev/null and b/docs/v1.0.1/tab_a.png differ diff --git a/docs/v1.0.1/tab_b.png b/docs/v1.0.1/tab_b.png new file mode 100644 index 0000000..b2c3d2b Binary files /dev/null and b/docs/v1.0.1/tab_b.png differ diff --git a/docs/v1.0.1/tab_h.png b/docs/v1.0.1/tab_h.png new file mode 100644 index 0000000..c11f48f Binary files /dev/null and b/docs/v1.0.1/tab_h.png differ diff --git a/docs/v1.0.1/tab_s.png b/docs/v1.0.1/tab_s.png new file mode 100644 index 0000000..978943a Binary files /dev/null and b/docs/v1.0.1/tab_s.png differ diff --git a/docs/v1.0.1/tabs.css b/docs/v1.0.1/tabs.css new file mode 100644 index 0000000..2192056 --- /dev/null +++ b/docs/v1.0.1/tabs.css @@ -0,0 +1,59 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/docs/v1.0.1/unix_8cc.html b/docs/v1.0.1/unix_8cc.html new file mode 100644 index 0000000..75cce10 --- /dev/null +++ b/docs/v1.0.1/unix_8cc.html @@ -0,0 +1,187 @@ + + + + + +serial: src/impl/unix.cc File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
src/impl/unix.cc File Reference
+
+
+
#include <stdio.h>
+#include <string.h>
+#include <sstream>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <sys/signal.h>
+#include <errno.h>
+#include <paths.h>
+#include <sysexits.h>
+#include <termios.h>
+#include <sys/param.h>
+#include <pthread.h>
+#include <sys/select.h>
+#include <sys/time.h>
+#include <time.h>
+#include "serial/impl/unix.h"
+
+Include dependency graph for unix.cc:
+
+
+ + +
+
+ + + + +

+Defines

#define TIOCINQ   0x541B

+Functions

void get_time_now (struct timespec &time)
+

Define Documentation

+ +
+
+ + + + +
#define TIOCINQ   0x541B
+
+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void get_time_now (struct timespec & time) [inline]
+
+
+
{
+# ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
+  clock_serv_t cclock;
+  mach_timespec_t mts;
+  host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
+  clock_get_time(cclock, &mts);
+  mach_port_deallocate(mach_task_self(), cclock);
+  time.tv_sec = mts.tv_sec;
+  time.tv_nsec = mts.tv_nsec;
+# else
+  clock_gettime(CLOCK_REALTIME, &time);
+# endif
+}
+
+
+
+
+ + + + + + diff --git a/docs/v1.0.1/unix_8cc__incl.map b/docs/v1.0.1/unix_8cc__incl.map new file mode 100644 index 0000000..84ddac5 --- /dev/null +++ b/docs/v1.0.1/unix_8cc__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/v1.0.1/unix_8cc__incl.md5 b/docs/v1.0.1/unix_8cc__incl.md5 new file mode 100644 index 0000000..1097a78 --- /dev/null +++ b/docs/v1.0.1/unix_8cc__incl.md5 @@ -0,0 +1 @@ +6fe186826ba1650b64f7ddad091f4012 \ No newline at end of file diff --git a/docs/v1.0.1/unix_8cc__incl.png b/docs/v1.0.1/unix_8cc__incl.png new file mode 100644 index 0000000..2abfad2 Binary files /dev/null and b/docs/v1.0.1/unix_8cc__incl.png differ diff --git a/docs/v1.0.1/unix_8h.html b/docs/v1.0.1/unix_8h.html new file mode 100644 index 0000000..3cec1aa --- /dev/null +++ b/docs/v1.0.1/unix_8h.html @@ -0,0 +1,151 @@ + + + + + +serial: include/serial/impl/unix.h File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
include/serial/impl/unix.h File Reference
+
+
+
#include "serial/serial.h"
+#include <pthread.h>
+
+Include dependency graph for unix.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Data Structures

class  serial::serial::Serial::SerialImpl

+Namespaces

namespace  serial
+

Detailed Description

+
Author:
William Woodall wjwwo.nosp@m.od@g.nosp@m.mail..nosp@m.com
+
+John Harrison ash@g.nosp@m.reat.nosp@m.ertha.nosp@m.ninf.nosp@m.inity.nosp@m..com
+
Version:
0.1
+

+LICENSE

+

The MIT License

+

Copyright (c) 2012 William Woodall, John Harrison

+

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

+DESCRIPTION

+

This provides a unix based pimpl for the Serial class. This implementation is based off termios.h and uses select for multiplexing the IO ports.

+
+ + + + + + diff --git a/docs/v1.0.1/unix_8h__dep__incl.map b/docs/v1.0.1/unix_8h__dep__incl.map new file mode 100644 index 0000000..9716d93 --- /dev/null +++ b/docs/v1.0.1/unix_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/v1.0.1/unix_8h__dep__incl.md5 b/docs/v1.0.1/unix_8h__dep__incl.md5 new file mode 100644 index 0000000..604000a --- /dev/null +++ b/docs/v1.0.1/unix_8h__dep__incl.md5 @@ -0,0 +1 @@ +5404c7ca3dbfca28900fc5af87992483 \ No newline at end of file diff --git a/docs/v1.0.1/unix_8h__dep__incl.png b/docs/v1.0.1/unix_8h__dep__incl.png new file mode 100644 index 0000000..bd648c8 Binary files /dev/null and b/docs/v1.0.1/unix_8h__dep__incl.png differ diff --git a/docs/v1.0.1/unix_8h__incl.map b/docs/v1.0.1/unix_8h__incl.map new file mode 100644 index 0000000..c6ec8dc --- /dev/null +++ b/docs/v1.0.1/unix_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/v1.0.1/unix_8h__incl.md5 b/docs/v1.0.1/unix_8h__incl.md5 new file mode 100644 index 0000000..706bd41 --- /dev/null +++ b/docs/v1.0.1/unix_8h__incl.md5 @@ -0,0 +1 @@ +c644a77c41f65cf3d129ecef9919893c \ No newline at end of file diff --git a/docs/v1.0.1/unix_8h__incl.png b/docs/v1.0.1/unix_8h__incl.png new file mode 100644 index 0000000..c3972bb Binary files /dev/null and b/docs/v1.0.1/unix_8h__incl.png differ diff --git a/docs/v1.0.1/unix_8h_source.html b/docs/v1.0.1/unix_8h_source.html new file mode 100644 index 0000000..2308329 --- /dev/null +++ b/docs/v1.0.1/unix_8h_source.html @@ -0,0 +1,270 @@ + + + + + +serial: include/serial/impl/unix.h Source File + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
include/serial/impl/unix.h
+
+
+Go to the documentation of this file.
00001 
+00038 #ifndef SERIAL_IMPL_UNIX_H
+00039 #define SERIAL_IMPL_UNIX_H
+00040 
+00041 #include "serial/serial.h"
+00042 
+00043 #include <pthread.h>
+00044 
+00045 namespace serial {
+00046 
+00047 using std::string;
+00048 using std::invalid_argument;
+00049 
+00050 using serial::SerialExecption;
+00051 using serial::IOException;
+00052 
+00053 class serial::Serial::SerialImpl {
+00054 public:
+00055   SerialImpl (const string &port,
+00056               unsigned long baudrate,
+00057               bytesize_t bytesize,
+00058               parity_t parity,
+00059               stopbits_t stopbits,
+00060               flowcontrol_t flowcontrol);
+00061 
+00062   virtual ~SerialImpl ();
+00063 
+00064   void
+00065   open ();
+00066 
+00067   void
+00068   close ();
+00069 
+00070   bool
+00071   isOpen () const;
+00072 
+00073   size_t
+00074   available ();
+00075 
+00076   size_t
+00077   read (uint8_t *buf, size_t size = 1);
+00078 
+00079   size_t
+00080   write (const uint8_t *data, size_t length);
+00081 
+00082   void
+00083   flush ();
+00084 
+00085   void
+00086   flushInput ();
+00087 
+00088   void
+00089   flushOutput ();
+00090 
+00091   void
+00092   sendBreak (int duration);
+00093 
+00094   void
+00095   setBreak (bool level);
+00096 
+00097   void
+00098   setRTS (bool level);
+00099 
+00100   void
+00101   setDTR (bool level);
+00102 
+00103   bool
+00104   waitForChange ();
+00105 
+00106   bool
+00107   getCTS ();
+00108 
+00109   bool
+00110   getDSR ();
+00111 
+00112   bool
+00113   getRI ();
+00114 
+00115   bool
+00116   getCD ();
+00117 
+00118   void
+00119   setPort (const string &port);
+00120 
+00121   string
+00122   getPort () const;
+00123 
+00124   void
+00125   setTimeout (Timeout &timeout);
+00126 
+00127   Timeout
+00128   getTimeout () const;
+00129 
+00130   void
+00131   setBaudrate (unsigned long baudrate);
+00132 
+00133   unsigned long
+00134   getBaudrate () const;
+00135 
+00136   void
+00137   setBytesize (bytesize_t bytesize);
+00138 
+00139   bytesize_t
+00140   getBytesize () const;
+00141 
+00142   void
+00143   setParity (parity_t parity);
+00144 
+00145   parity_t
+00146   getParity () const;
+00147 
+00148   void
+00149   setStopbits (stopbits_t stopbits);
+00150 
+00151   stopbits_t
+00152   getStopbits () const;
+00153 
+00154   void
+00155   setFlowcontrol (flowcontrol_t flowcontrol);
+00156 
+00157   flowcontrol_t
+00158   getFlowcontrol () const;
+00159 
+00160   void
+00161   readLock ();
+00162 
+00163   void
+00164   readUnlock ();
+00165 
+00166   void
+00167   writeLock ();
+00168 
+00169   void
+00170   writeUnlock ();
+00171 
+00172 protected:
+00173   void reconfigurePort ();
+00174 
+00175 private:
+00176   string port_;               // Path to the file descriptor
+00177   int fd_;                    // The current file descriptor
+00178 
+00179   bool is_open_;
+00180   bool xonxoff_;
+00181   bool rtscts_;
+00182 
+00183   Timeout timeout_;         // Timeout for read operations
+00184   unsigned long baudrate_;    // Baudrate
+00185 
+00186   parity_t parity_;           // Parity
+00187   bytesize_t bytesize_;       // Size of the bytes
+00188   stopbits_t stopbits_;       // Stop Bits
+00189   flowcontrol_t flowcontrol_; // Flow Control
+00190 
+00191   // Mutex used to lock the read functions
+00192   pthread_mutex_t read_mutex;
+00193   // Mutex used to lock the write functions
+00194   pthread_mutex_t write_mutex;
+00195 };
+00196 
+00197 }
+00198 
+00199 #endif // SERIAL_IMPL_UNIX_H
+
+ + + + + + diff --git a/docs/v1.0.1/v8stdint_8h.html b/docs/v1.0.1/v8stdint_8h.html new file mode 100644 index 0000000..a38dff3 --- /dev/null +++ b/docs/v1.0.1/v8stdint_8h.html @@ -0,0 +1,126 @@ + + + + + +serial: include/serial/v8stdint.h File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
include/serial/v8stdint.h File Reference
+
+
+
#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+
+Include dependency graph for v8stdint.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+
+ + + + + + diff --git a/docs/v1.0.1/v8stdint_8h__dep__incl.map b/docs/v1.0.1/v8stdint_8h__dep__incl.map new file mode 100644 index 0000000..bb2cdf6 --- /dev/null +++ b/docs/v1.0.1/v8stdint_8h__dep__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/v1.0.1/v8stdint_8h__dep__incl.md5 b/docs/v1.0.1/v8stdint_8h__dep__incl.md5 new file mode 100644 index 0000000..bdb0b26 --- /dev/null +++ b/docs/v1.0.1/v8stdint_8h__dep__incl.md5 @@ -0,0 +1 @@ +af57361690e99b803f0462c8bdb7cff4 \ No newline at end of file diff --git a/docs/v1.0.1/v8stdint_8h__dep__incl.png b/docs/v1.0.1/v8stdint_8h__dep__incl.png new file mode 100644 index 0000000..bb17550 Binary files /dev/null and b/docs/v1.0.1/v8stdint_8h__dep__incl.png differ diff --git a/docs/v1.0.1/v8stdint_8h__incl.map b/docs/v1.0.1/v8stdint_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/v1.0.1/v8stdint_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/v1.0.1/v8stdint_8h__incl.md5 b/docs/v1.0.1/v8stdint_8h__incl.md5 new file mode 100644 index 0000000..1ca1357 --- /dev/null +++ b/docs/v1.0.1/v8stdint_8h__incl.md5 @@ -0,0 +1 @@ +f6bf6cb6422db640ba7e37d5916453b2 \ No newline at end of file diff --git a/docs/v1.0.1/v8stdint_8h__incl.png b/docs/v1.0.1/v8stdint_8h__incl.png new file mode 100644 index 0000000..00352a8 Binary files /dev/null and b/docs/v1.0.1/v8stdint_8h__incl.png differ diff --git a/docs/v1.0.1/v8stdint_8h_source.html b/docs/v1.0.1/v8stdint_8h_source.html new file mode 100644 index 0000000..ef71001 --- /dev/null +++ b/docs/v1.0.1/v8stdint_8h_source.html @@ -0,0 +1,164 @@ + + + + + +serial: include/serial/v8stdint.h Source File + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
include/serial/v8stdint.h
+
+
+Go to the documentation of this file.
00001 // This header is from the v8 google project: 
+00002 // http://code.google.com/p/v8/source/browse/trunk/include/v8stdint.h
+00003 
+00004 // Copyright 2012 the V8 project authors. All rights reserved.
+00005 // Redistribution and use in source and binary forms, with or without
+00006 // modification, are permitted provided that the following conditions are
+00007 // met:
+00008 //
+00009 //     * Redistributions of source code must retain the above copyright
+00010 //       notice, this list of conditions and the following disclaimer.
+00011 //     * Redistributions in binary form must reproduce the above
+00012 //       copyright notice, this list of conditions and the following
+00013 //       disclaimer in the documentation and/or other materials provided
+00014 //       with the distribution.
+00015 //     * Neither the name of Google Inc. nor the names of its
+00016 //       contributors may be used to endorse or promote products derived
+00017 //       from this software without specific prior written permission.
+00018 //
+00019 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+00023 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+00024 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+00025 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+00026 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+00027 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+00028 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+00029 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030 
+00031 // Load definitions of standard types.
+00032 
+00033 #ifndef V8STDINT_H_
+00034 #define V8STDINT_H_
+00035 
+00036 #include <stddef.h>
+00037 #include <stdio.h>
+00038 
+00039 #if defined(_WIN32) && !defined(__MINGW32__)
+00040 
+00041 typedef signed char int8_t;
+00042 typedef unsigned char uint8_t;
+00043 typedef short int16_t;  // NOLINT
+00044 typedef unsigned short uint16_t;  // NOLINT
+00045 typedef int int32_t;
+00046 typedef unsigned int uint32_t;
+00047 typedef __int64 int64_t;
+00048 typedef unsigned __int64 uint64_t;
+00049 // intptr_t and friends are defined in crtdefs.h through stdio.h.
+00050 
+00051 #else
+00052 
+00053 #include <stdint.h>
+00054 
+00055 #endif
+00056 
+00057 #endif  // V8STDINT_H_
+
+ + + + + + diff --git a/docs/v1.0.1/win_8cc.html b/docs/v1.0.1/win_8cc.html new file mode 100644 index 0000000..5a42f31 --- /dev/null +++ b/docs/v1.0.1/win_8cc.html @@ -0,0 +1,115 @@ + + + + + +serial: src/impl/win.cc File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
src/impl/win.cc File Reference
+
+
+
#include "serial/impl/win.h"
+
+Include dependency graph for win.cc:
+
+
+ + +
+
+ + + + + + diff --git a/docs/v1.0.1/win_8cc__incl.map b/docs/v1.0.1/win_8cc__incl.map new file mode 100644 index 0000000..9bcf43b --- /dev/null +++ b/docs/v1.0.1/win_8cc__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/v1.0.1/win_8cc__incl.md5 b/docs/v1.0.1/win_8cc__incl.md5 new file mode 100644 index 0000000..f28adf1 --- /dev/null +++ b/docs/v1.0.1/win_8cc__incl.md5 @@ -0,0 +1 @@ +ac617508eef9f03d290dd09ec479c335 \ No newline at end of file diff --git a/docs/v1.0.1/win_8cc__incl.png b/docs/v1.0.1/win_8cc__incl.png new file mode 100644 index 0000000..13da985 Binary files /dev/null and b/docs/v1.0.1/win_8cc__incl.png differ diff --git a/docs/v1.0.1/win_8h.html b/docs/v1.0.1/win_8h.html new file mode 100644 index 0000000..3280710 --- /dev/null +++ b/docs/v1.0.1/win_8h.html @@ -0,0 +1,136 @@ + + + + + +serial: include/serial/impl/win.h File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
include/serial/impl/win.h File Reference
+
+
+
#include "serial/serial.h"
+#include "windows.h"
+
+Include dependency graph for win.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + +

+Data Structures

class  serial::serial::Serial::SerialImpl

+Namespaces

namespace  serial
+
+ + + + + + diff --git a/docs/v1.0.1/win_8h__dep__incl.map b/docs/v1.0.1/win_8h__dep__incl.map new file mode 100644 index 0000000..2ae6fa6 --- /dev/null +++ b/docs/v1.0.1/win_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/v1.0.1/win_8h__dep__incl.md5 b/docs/v1.0.1/win_8h__dep__incl.md5 new file mode 100644 index 0000000..977746a --- /dev/null +++ b/docs/v1.0.1/win_8h__dep__incl.md5 @@ -0,0 +1 @@ +dbf5e18357478e7fe097f14bb0558aea \ No newline at end of file diff --git a/docs/v1.0.1/win_8h__dep__incl.png b/docs/v1.0.1/win_8h__dep__incl.png new file mode 100644 index 0000000..682dbc1 Binary files /dev/null and b/docs/v1.0.1/win_8h__dep__incl.png differ diff --git a/docs/v1.0.1/win_8h__incl.map b/docs/v1.0.1/win_8h__incl.map new file mode 100644 index 0000000..c6ec8dc --- /dev/null +++ b/docs/v1.0.1/win_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/v1.0.1/win_8h__incl.md5 b/docs/v1.0.1/win_8h__incl.md5 new file mode 100644 index 0000000..f2d5af9 --- /dev/null +++ b/docs/v1.0.1/win_8h__incl.md5 @@ -0,0 +1 @@ +bffdfff16bef6b02682a3561852c9429 \ No newline at end of file diff --git a/docs/v1.0.1/win_8h__incl.png b/docs/v1.0.1/win_8h__incl.png new file mode 100644 index 0000000..4ded21c Binary files /dev/null and b/docs/v1.0.1/win_8h__incl.png differ diff --git a/docs/v1.0.1/win_8h_source.html b/docs/v1.0.1/win_8h_source.html new file mode 100644 index 0000000..50d55ac --- /dev/null +++ b/docs/v1.0.1/win_8h_source.html @@ -0,0 +1,268 @@ + + + + + +serial: include/serial/impl/win.h Source File + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
serial +  1.0.1 +
+
Cross-platform serial port library written in C++
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
include/serial/impl/win.h
+
+
+Go to the documentation of this file.
00001 
+00037 #ifndef SERIAL_IMPL_WINDOWS_H
+00038 #define SERIAL_IMPL_WINDOWS_H
+00039 
+00040 #include "serial/serial.h"
+00041 
+00042 #include "windows.h"
+00043 
+00044 namespace serial {
+00045 
+00046 using std::string;
+00047 using std::invalid_argument;
+00048 
+00049 using serial::SerialExecption;
+00050 using serial::IOException;
+00051 
+00052 class serial::Serial::SerialImpl {
+00053 public:
+00054   SerialImpl (const string &port,
+00055               unsigned long baudrate,
+00056               bytesize_t bytesize,
+00057               parity_t parity,
+00058               stopbits_t stopbits,
+00059               flowcontrol_t flowcontrol);
+00060 
+00061   virtual ~SerialImpl ();
+00062 
+00063   void
+00064   open ();
+00065 
+00066   void
+00067   close ();
+00068 
+00069   bool
+00070   isOpen () const;
+00071 
+00072   size_t
+00073   available ();
+00074 
+00075   size_t
+00076   read (uint8_t *buf, size_t size = 1);
+00077 
+00078   size_t
+00079   write (const uint8_t *data, size_t length);
+00080 
+00081   void
+00082   flush ();
+00083 
+00084   void
+00085   flushInput ();
+00086 
+00087   void
+00088   flushOutput ();
+00089 
+00090   void
+00091   sendBreak (int duration);
+00092 
+00093   void
+00094   setBreak (bool level);
+00095 
+00096   void
+00097   setRTS (bool level);
+00098 
+00099   void
+00100   setDTR (bool level);
+00101 
+00102   bool
+00103   waitForChange ();
+00104 
+00105   bool
+00106   getCTS ();
+00107 
+00108   bool
+00109   getDSR ();
+00110 
+00111   bool
+00112   getRI ();
+00113 
+00114   bool
+00115   getCD ();
+00116 
+00117   void
+00118   setPort (const string &port);
+00119 
+00120   string
+00121   getPort () const;
+00122 
+00123   void
+00124   setTimeout (Timeout &timeout);
+00125 
+00126   Timeout
+00127   getTimeout () const;
+00128 
+00129   void
+00130   setBaudrate (unsigned long baudrate);
+00131 
+00132   unsigned long
+00133   getBaudrate () const;
+00134 
+00135   void
+00136   setBytesize (bytesize_t bytesize);
+00137 
+00138   bytesize_t
+00139   getBytesize () const;
+00140 
+00141   void
+00142   setParity (parity_t parity);
+00143 
+00144   parity_t
+00145   getParity () const;
+00146 
+00147   void
+00148   setStopbits (stopbits_t stopbits);
+00149 
+00150   stopbits_t
+00151   getStopbits () const;
+00152 
+00153   void
+00154   setFlowcontrol (flowcontrol_t flowcontrol);
+00155 
+00156   flowcontrol_t
+00157   getFlowcontrol () const;
+00158 
+00159   void
+00160   readLock ();
+00161 
+00162   void
+00163   readUnlock ();
+00164 
+00165   void
+00166   writeLock ();
+00167 
+00168   void
+00169   writeUnlock ();
+00170 
+00171 protected:
+00172   void reconfigurePort ();
+00173 
+00174 private:
+00175   string port_;               // Path to the file descriptor
+00176   HANDLE fd_;
+00177 
+00178   bool is_open_;
+00179 
+00180   Timeout timeout_;           // Timeout for read operations
+00181   unsigned long baudrate_;    // Baudrate
+00182 
+00183   parity_t parity_;           // Parity
+00184   bytesize_t bytesize_;       // Size of the bytes
+00185   stopbits_t stopbits_;       // Stop Bits
+00186   flowcontrol_t flowcontrol_; // Flow Control
+00187 
+00188   // Mutex used to lock the read functions
+00189   HANDLE read_mutex;
+00190   // Mutex used to lock the write functions
+00191   HANDLE write_mutex;
+00192 };
+00193 
+00194 }
+00195 
+00196 #endif // SERIAL_IMPL_WINDOWS_H
+
+ + + + + +