Public Member Functions | Private Member Functions | Private Attributes | List of all members
cereal::CerealPort Class Reference

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

#include "inc/CerealPort.h"

Public Member Functions

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

Private Member Functions

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

Private Attributes

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

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_nameA null terminated character array containing the name of the port.
baud_rateBaud 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
dataData coming from the serial port.
max_lengthMaximum length of the incoming data.
timeoutTimeout 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
dataData coming from the serial port.
startStart character of the incoming data stream.
endEnd character of the incoming data stream.
timeoutTimeout 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
startStart character of the incoming data stream.
endEnd 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
dataData coming from the serial port.
lengthFixed length of the incoming data.
timeoutTimeout in milliseconds.
See Also
read()
Returns
Number of bytes read.

Definition at line 183 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
dataData coming from the serial port.
lengthLength of the incoming data.
timeoutTimeout in milliseconds.
See Also
readLine(std::string*, int)
Returns
Number of bytes read.

Definition at line 212 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
dataData coming from the serial port.
timeoutTimeout in milliseconds.
See Also
readLine(char*, int, int)
Returns
Whether the read was successful or not.

Definition at line 245 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
fCallback boost function to receive the data.
startStart character of the incoming data stream.
endEnd 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
fCallback 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
fCallback 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
dataData to send in a character array or null terminated c string.
lengthNumber 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

int cereal::CerealPort::baud_
private

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.

bool cereal::CerealPort::stream_paused_
private

Whether streaming is paused or not.

Definition at line 269 of file CerealPort.h.

bool cereal::CerealPort::stream_stopped_
private

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:


cereal_port
Author(s): Gonçalo Cabrita and Pedro Sousa
autogenerated on Mon Mar 2 2015 01:31:33