cereal::CerealPort Class Reference

C++ serial port class for ROS. More...

#include <inc/CerealPort.h>

List of all members.

Public Member Functions

int baudRate ()
 Get the current baud rate.
 CerealPort ()
 Constructor.
void close ()
 Close the serial port.
int flush ()
 Wrapper around tcflush.
void open (const char *port_name, int baud_rate=115200)
 Open the serial port.
void pauseStream ()
 Pause streaming.
bool portOpen ()
 Check whether the port is open or not.
int read (char *data, int max_length, int timeout=-1)
 Read from the port.
bool readBetween (std::string *data, char start, char end, int timeout=-1)
 Read from the serial port between a start char and an end char.
int readBytes (char *data, int length, int timeout=-1)
 Read a fixed number of bytes from the serial port.
bool readLine (std::string *data, int timeout=-1)
 Read a line from the serial port.
int readLine (char *data, int length, int timeout=-1)
 Read a line from the serial port.
void resumeStream ()
 Resume streaming.
bool startReadBetweenStream (boost::function< void(std::string *)> f, char start, char end)
 Start a stream of readBetween().
bool startReadLineStream (boost::function< void(std::string *)> f)
 Start a stream of readLine(std::string*, int).
bool startReadStream (boost::function< void(char *, int)> f)
 Start a stream of read().
void stopStream ()
 Stop streaming.
int write (const char *data, int length=-1)
 Write to the port.
 ~CerealPort ()
 Destructor.

Private Member Functions

void readBetweenThread (char start, char end)
 Thread for a stream of readBetween().
void readLineThread ()
 Thread for a stream of readLine(std::string*, int).
void readThread ()
 Thread for a stream of read().

Private Attributes

int baud_
 Baud rate.
int fd_
 File descriptor.
boost::function< void(std::string *) readBetweenCallback )
 Stream readBetween callback boost function.
boost::function< void(char *, int) readCallback )
 Stream read callback boost function.
boost::function< void(std::string *) readLineCallback )
 Stream readLine callback boost function.
bool stream_paused_
 Whether streaming is paused or not.
bool stream_stopped_
 Whether streaming is stopped or not.
boost::thread * stream_thread_
 Stream thread.

Detailed Description

C++ serial port class for ROS.

This class was based on the serial port code found on the hokuyo_node as suggested by Blaise Gassend on the ros-users mailling list.

Definition at line 70 of file CerealPort.h.


Constructor & Destructor Documentation

cereal::CerealPort::CerealPort (  ) 

Constructor.

Definition at line 59 of file CerealPort.cpp.

cereal::CerealPort::~CerealPort (  ) 

Destructor.

Definition at line 64 of file CerealPort.cpp.


Member Function Documentation

int cereal::CerealPort::baudRate (  )  [inline]

Get the current baud rate.

Definition at line 98 of file CerealPort.h.

void cereal::CerealPort::close (  ) 

Close the serial port.

This call essentially wraps close.

Definition at line 133 of file CerealPort.cpp.

int cereal::CerealPort::flush (  ) 

Wrapper around tcflush.

Definition at line 341 of file CerealPort.cpp.

void cereal::CerealPort::open ( const char *  port_name,
int  baud_rate = 115200 
)

Open the serial port.

This opens the serial port for communication. Wrapper for open.

Parameters:
port_name A null terminated character array containing the name of the port.
baud_rate Baud rate of the serial port. Defaults to 115200.

Todo:
tcsetattr returns true if at least one attribute was set. Hence, we might not have set everything on success.

Definition at line 69 of file CerealPort.cpp.

void cereal::CerealPort::pauseStream (  ) 

Pause streaming.

Definition at line 467 of file CerealPort.cpp.

bool cereal::CerealPort::portOpen (  )  [inline]

Check whether the port is open or not.

Definition at line 95 of file CerealPort.h.

int cereal::CerealPort::read ( char *  data,
int  max_length,
int  timeout = -1 
)

Read from the port.

This function allows to read data from the serial port. Simple wrapper for read.

Parameters:
data Data coming from the serial port.
max_length Maximum length of the incoming data.
timeout Timeout in milliseconds.
Returns:
Number of bytes read.

Definition at line 159 of file CerealPort.cpp.

bool cereal::CerealPort::readBetween ( std::string *  data,
char  start,
char  end,
int  timeout = -1 
)

Read from the serial port between a start char and an end char.

This function allows to read data from the serial port between a start and an end char.

Parameters:
data Data coming from the serial port.
start Start character of the incoming data stream.
end End character of the incoming data stream.
timeout Timeout in milliseconds.
Returns:
Whether the read was successful or not.

Definition at line 289 of file CerealPort.cpp.

void cereal::CerealPort::readBetweenThread ( char  start,
char  end 
) [private]

Thread for a stream of readBetween().

Stream version of the readBetween function.

Parameters:
start Start character of the incoming data stream.
end End character of the incoming data stream.

Definition at line 437 of file CerealPort.cpp.

int cereal::CerealPort::readBytes ( char *  data,
int  length,
int  timeout = -1 
)

Read a fixed number of bytes from the serial port.

This function allows to read a fixed number of data bytes from the serial port, no more, no less.

Parameters:
data Data coming from the serial port.
length Fixed length of the incoming data.
timeout Timeout in milliseconds.
See also:
read()
Returns:
Number of bytes read.

Definition at line 183 of file CerealPort.cpp.

bool cereal::CerealPort::readLine ( std::string *  data,
int  timeout = -1 
)

Read a line from the serial port.

This function allows to read a line from the serial port. Data is return as std::string

Parameters:
data Data coming from the serial port.
timeout Timeout in milliseconds.
See also:
readLine(char*, int, int)
Returns:
Whether the read was successful or not.

Definition at line 245 of file CerealPort.cpp.

int cereal::CerealPort::readLine ( char *  data,
int  length,
int  timeout = -1 
)

Read a line from the serial port.

This function allows to read a line from the serial port. Data is return as char*

Parameters:
data Data coming from the serial port.
length Length of the incoming data.
timeout Timeout in milliseconds.
See also:
readLine(std::string*, int)
Returns:
Number of bytes read.

Definition at line 212 of file CerealPort.cpp.

void cereal::CerealPort::readLineThread (  )  [private]

Thread for a stream of readLine(std::string*, int).

Stream version of the readLine function.

Definition at line 403 of file CerealPort.cpp.

void cereal::CerealPort::readThread (  )  [private]

Thread for a stream of read().

Stream version of the read function.

Definition at line 362 of file CerealPort.cpp.

void cereal::CerealPort::resumeStream (  ) 

Resume streaming.

Definition at line 472 of file CerealPort.cpp.

bool cereal::CerealPort::startReadBetweenStream ( boost::function< void(std::string *)>  f,
char  start,
char  end 
)

Start a stream of readBetween().

Stream version of the readBetween() function.

Parameters:
f Callback boost function to receive the data.
start Start character of the incoming data stream.
end End character of the incoming data stream.
See also:
readBetween()
Returns:
True if successful false if a stream is already running.

Definition at line 424 of file CerealPort.cpp.

bool cereal::CerealPort::startReadLineStream ( boost::function< void(std::string *)>  f  ) 

Start a stream of readLine(std::string*, int).

Stream version of the readLine(std::string*, int) function.

Parameters:
f Callback boost function to receive the data.
See also:
readLine(std::string*, int)
Returns:
True if successful false if a stream is already running.

Definition at line 390 of file CerealPort.cpp.

bool cereal::CerealPort::startReadStream ( boost::function< void(char *, int)>  f  ) 

Start a stream of read().

Stream version of the read function.

Parameters:
f Callback boost function to receive the data.
See also:
read()
Returns:
True if successful false if a stream is already running.

Definition at line 349 of file CerealPort.cpp.

void cereal::CerealPort::stopStream (  ) 

Stop streaming.

Definition at line 458 of file CerealPort.cpp.

int cereal::CerealPort::write ( const char *  data,
int  length = -1 
)

Write to the port.

This function allows to send data through the serial port. Wraper for write.

Parameters:
data Data to send in a character array or null terminated c string.
length Number of bytes being sent. Defaults to -1 if sending a c string.
Returns:
Number of bytes writen.

Definition at line 145 of file CerealPort.cpp.


Member Data Documentation

Baud rate.

Definition at line 232 of file CerealPort.h.

int cereal::CerealPort::fd_ [private]

File descriptor.

Definition at line 230 of file CerealPort.h.

boost::function<void(std::string*) cereal::CerealPort::readBetweenCallback) [private]

Stream readBetween callback boost function.

Definition at line 266 of file CerealPort.h.

boost::function<void(char*, int) cereal::CerealPort::readCallback) [private]

Stream read callback boost function.

Definition at line 262 of file CerealPort.h.

boost::function<void(std::string*) cereal::CerealPort::readLineCallback) [private]

Stream readLine callback boost function.

Definition at line 264 of file CerealPort.h.

Whether streaming is paused or not.

Definition at line 269 of file CerealPort.h.

Whether streaming is stopped or not.

Definition at line 271 of file CerealPort.h.

boost::thread* cereal::CerealPort::stream_thread_ [private]

Stream thread.

Definition at line 259 of file CerealPort.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Defines


cereal_port
Author(s): $author
autogenerated on Wed Jul 23 04:33:36 2014