The low-level serial communication class. More...
#include <Robots/SeaBeeIII/IMUDataServer/cmt1.h>
Public Member Functions | |
Cmt1s () | |
Default constructor, initializes all members to their default values. | |
~Cmt1s () | |
Destructor, de-initializes, frees memory allocated for buffers, etc. | |
XsensResultValue | close (void) |
Close the serial communication port. | |
XsensResultValue | escape (const CmtControlLine mask, const CmtControlLine state) |
Manipulate the Serial control lines. | |
XsensResultValue | flushData (void) |
Flush all data to be transmitted / received. | |
uint32_t | getBaudrate (void) const |
Return the baudrate that is currently being used by the port. | |
HANDLE | getHandle (void) const |
Return the handle of the port. | |
uint16_t | getPortNr (void) const |
Retrieve the port number that was last successfully opened. | |
void | getPortName (char *portname) const |
Retrieve the port name that was last successfully opened. | |
XsensResultValue | getLastResult (void) const |
Return the error code of the last operation. | |
uint32_t | getTimeout (void) const |
Return the current timeout value. | |
bool | isOpen (void) const |
Return whether the communication port is open or not. | |
XsensResultValue | open (const char *portName, const uint32_t baudRate=CMT_DEFAULT_BAUD_RATE, uint32_t readBufSize=CMT_DEFAULT_READ_BUFFER_SIZE, uint32_t writeBufSize=CMT_DEFAULT_WRITE_BUFFER_SIZE) |
Open a communcation channel to the given serial port name. | |
XsensResultValue | readData (const uint32_t maxLength, uint8_t *data, uint32_t *length=NULL) |
Read data from the serial port and put it into the data buffer. | |
XsensResultValue | setCallbackFunction (CmtCallbackType tp, int32_t instance, CmtCallbackFunction func, void *param) |
Set the callback function for when bytes have been received. | |
XsensResultValue | setTimeout (const uint32_t ms=CMT1_DEFAULT_TIMEOUT) |
Set the default timeout value to use in blocking operations. | |
XsensResultValue | waitForData (const uint32_t maxLength, uint8_t *data, uint32_t *length=NULL) |
Wait for data to arrive or a timeout to occur. | |
XsensResultValue | writeData (const uint32_t length, const uint8_t *data, uint32_t *written) |
Write the data to the serial port. | |
Protected Types | |
typedef int32_t | HANDLE |
Protected Attributes | |
uint32_t | m_baudrate |
The baudrate that was last set to be used by the port. | |
uint32_t | m_endTime |
The time at which an operation will end in ms, used by several functions. | |
bool | m_isOpen |
Indicates if the port is open or not. | |
XsensResultValue | m_lastResult |
The last result of an operation. | |
uint16_t | m_port |
The opened COM port nr. | |
char | m_portname [32] |
uint32_t | m_timeout |
termios | m_commState |
Stored settings about the serial port. | |
int32_t | m_handle |
The serial port handle. |
The low-level serial communication class.
Definition at line 65 of file cmt1.h.
xsens::Cmt1s::Cmt1s | ( | ) |
Default constructor, initializes all members to their default values.
Definition at line 154 of file cmt1.cpp.
References CMT1_DEFAULT_TIMEOUT, m_baudrate, m_endTime, m_isOpen, m_lastResult, m_port, and m_timeout.
xsens::Cmt1s::~Cmt1s | ( | ) |
XsensResultValue xsens::Cmt1s::close | ( | void | ) |
Close the serial communication port.
Definition at line 179 of file cmt1.cpp.
References m_endTime, m_handle, m_isOpen, and m_lastResult.
Referenced by xsens::Cmt2s::close(), and ~Cmt1s().
XsensResultValue xsens::Cmt1s::escape | ( | const CmtControlLine | mask, | |
const CmtControlLine | state | |||
) |
Manipulate the Serial control lines.
The function manipulates the serial control lines that are indicated by the mask parameter. Note that only the DTR and RTS lines can be set by win32.
mask | Indicates which lines are to be manipulated and which should be left alone. | |
state | Contains the new state of the control lines. |
Definition at line 219 of file cmt1.cpp.
References m_handle, m_isOpen, and m_lastResult.
XsensResultValue xsens::Cmt1s::flushData | ( | void | ) |
Flush all data to be transmitted / received.
This function tries to send and receive any remaining data immediately and does not return until the buffers are empty.
Definition at line 278 of file cmt1.cpp.
References m_endTime, m_handle, and m_lastResult.
Referenced by xsens::Cmt3::gotoConfig().
uint32_t xsens::Cmt1s::getBaudrate | ( | void | ) | const [inline] |
Return the baudrate that is currently being used by the port.
Definition at line 133 of file cmt1.h.
References m_baudrate.
Referenced by xsens::Cmt2s::getBaudrate().
HANDLE xsens::Cmt1s::getHandle | ( | void | ) | const [inline] |
XsensResultValue xsens::Cmt1s::getLastResult | ( | void | ) | const [inline] |
Return the error code of the last operation.
Definition at line 141 of file cmt1.h.
References m_lastResult.
void xsens::Cmt1s::getPortName | ( | char * | portname | ) | const [inline] |
uint16_t xsens::Cmt1s::getPortNr | ( | void | ) | const [inline] |
Retrieve the port number that was last successfully opened.
Definition at line 137 of file cmt1.h.
References m_port.
Referenced by xsens::Cmt2s::close(), xsens::Cmt2s::getPortNr(), xsens::Cmt3::gotoConfig(), xsens::Cmt3::gotoMeasurement(), xsens::Cmt3::initBus(), xsens::Cmt2s::readMessage(), xsens::Cmt2s::waitForMessage(), and xsens::Cmt2s::writeMessage().
uint32_t xsens::Cmt1s::getTimeout | ( | void | ) | const [inline] |
bool xsens::Cmt1s::isOpen | ( | void | ) | const [inline] |
Return whether the communication port is open or not.
Definition at line 145 of file cmt1.h.
References m_isOpen.
Referenced by xsens::Cmt2s::isOpen().
XsensResultValue xsens::Cmt1s::open | ( | const char * | portName, | |
const uint32_t | baudRate = CMT_DEFAULT_BAUD_RATE , |
|||
uint32_t | readBufSize = CMT_DEFAULT_READ_BUFFER_SIZE , |
|||
uint32_t | writeBufSize = CMT_DEFAULT_WRITE_BUFFER_SIZE | |||
) |
Open a communcation channel to the given serial port name.
The port is automatically initialized to the given baudrate. If the baudrate is set to 0, the baud rate is automatically detected. If possible.
Definition at line 292 of file cmt1.cpp.
References m_baudrate, m_commState, m_endTime, m_handle, m_isOpen, m_lastResult, m_port, m_timeout, and setTimeout().
Referenced by xsens::Cmt2s::open().
XsensResultValue xsens::Cmt1s::readData | ( | const uint32_t | maxLength, | |
uint8_t * | data, | |||
uint32_t * | length = NULL | |||
) |
Read data from the serial port and put it into the data buffer.
This function reads as much data as possible from the com port (non-blocking) and put as much data as will fit into the data buffer. Any excess data is stored in the m_readBuffer
member variable. If there was enough data in m_readBuffer to fulfill the request, the data parameter is first filled and the port is polled afterwards.
maxLength | The maximum amount of data read. | |
data | Pointer to a buffer that will store the received data. | |
length | The number of bytes placed into data . |
Definition at line 449 of file cmt1.cpp.
References CMT_CALLBACK_ONBYTESRECEIVED, m_baudrate, m_handle, m_isOpen, m_lastResult, and m_port.
Referenced by xsens::Cmt2s::readMessage(), waitForData(), and xsens::Cmt2s::waitForMessage().
XsensResultValue xsens::Cmt1s::setCallbackFunction | ( | CmtCallbackType | tp, | |
int32_t | instance, | |||
CmtCallbackFunction | func, | |||
void * | param | |||
) |
Set the callback function for when bytes have been received.
Definition at line 503 of file cmt1.cpp.
References CMT_CALLBACK_ONBYTESRECEIVED, and m_lastResult.
XsensResultValue xsens::Cmt1s::setTimeout | ( | const uint32_t | ms = CMT1_DEFAULT_TIMEOUT |
) |
Set the default timeout value to use in blocking operations.
This function sets the value of m_timeout. There is no infinity value. The value 0 means that all blocking operations now become polling (non-blocking) operations. If the value is set to or from 0, the low-level serial port settings may be changed in addition to the m_timeout value.
Definition at line 517 of file cmt1.cpp.
References m_commState, m_handle, m_isOpen, m_lastResult, and m_timeout.
Referenced by open(), and xsens::Cmt2s::setTimeout().
XsensResultValue xsens::Cmt1s::waitForData | ( | const uint32_t | maxLength, | |
uint8_t * | data, | |||
uint32_t * | length = NULL | |||
) |
Wait for data to arrive or a timeout to occur.
The function waits until maxLength
data is available or until a timeout occurs. The function returns success if data is available or XsensResultValue::TIMEOUT if a timeout occurred. A timeout value of 0 indicates that the default timeout stored in the class should be used.
Definition at line 562 of file cmt1.cpp.
References xsens::getTimeOfDay(), m_lastResult, m_timeout, and readData().
XsensResultValue xsens::Cmt1s::writeData | ( | const uint32_t | length, | |
const uint8_t * | data, | |||
uint32_t * | written | |||
) |
Write the data to the serial port.
The function writes the given data to the connected COM port. The default timeout is respected in this operation.
Definition at line 590 of file cmt1.cpp.
References m_baudrate, m_handle, m_isOpen, m_lastResult, and m_port.
Referenced by xsens::Cmt2s::writeMessage().
uint32_t xsens::Cmt1s::m_baudrate [protected] |
The baudrate that was last set to be used by the port.
Definition at line 87 of file cmt1.h.
Referenced by Cmt1s(), getBaudrate(), open(), readData(), and writeData().
termios xsens::Cmt1s::m_commState [protected] |
Stored settings about the serial port.
Definition at line 106 of file cmt1.h.
Referenced by open(), and setTimeout().
uint32_t xsens::Cmt1s::m_endTime [protected] |
int32_t xsens::Cmt1s::m_handle [protected] |
The serial port handle.
Definition at line 107 of file cmt1.h.
Referenced by close(), escape(), flushData(), getHandle(), open(), readData(), setTimeout(), and writeData().
bool xsens::Cmt1s::m_isOpen [protected] |
Indicates if the port is open or not.
Definition at line 91 of file cmt1.h.
Referenced by close(), Cmt1s(), escape(), isOpen(), open(), readData(), setTimeout(), and writeData().
XsensResultValue xsens::Cmt1s::m_lastResult [mutable, protected] |
The last result of an operation.
Definition at line 93 of file cmt1.h.
Referenced by close(), Cmt1s(), escape(), flushData(), getLastResult(), open(), readData(), setCallbackFunction(), setTimeout(), waitForData(), and writeData().
uint16_t xsens::Cmt1s::m_port [protected] |
The opened COM port nr.
Definition at line 95 of file cmt1.h.
Referenced by Cmt1s(), getPortNr(), open(), readData(), and writeData().
uint32_t xsens::Cmt1s::m_timeout [protected] |
The default timeout value to use during blocking operations. A value of 0 means that all operations become non-blocking.
Definition at line 100 of file cmt1.h.
Referenced by Cmt1s(), getTimeout(), open(), setTimeout(), and waitForData().