39 # define CMT2LOG CMTLOG 59 if (pre >= bufferLength)
102 return res + pre + 1;
112 m_onMessageReceived(NULL),
113 m_onMessageSent(NULL)
147 if (strlen(portname) < 6)
176 CMT2LOG(
"L2: Opening port %s @baud %d\n", portName, baudRate);
189 CMT2LOG(
"L2: Opening port %d @baud %d\n",(
int32_t)portNumber,baudRate);
228 CMT2LOG(
"L2: readMessage no preamble found in buffer\n");
233 CMT2LOG(
"L2: readMessage preamble found at position %u\n",(
uint32_t) pre);
244 CMT2LOG(
"L2: readMessage not enough header data read\n");
254 CMT2LOG(
"L2: readMessage not enough extended header data read\n");
268 CMT2LOG(
"L2: readMessage invalid message length %u\n",(
uint32_t) target);
290 CMT2LOG(
"L2: readMessage OK\n");
298 #ifdef _LOG_CALLBACKS 320 CMT2LOG(
"L2: readMessage timed out\n");
351 CMT2LOG(
"L2: Setting timeout to %u ms\n",ms);
378 if (timeoutOverride != 0)
427 CMT2LOG(
"L2: waitForMessage timeout occurred trying to read header\n");
441 CMT2LOG(
"L2: waitForMessage timeout occurred trying to read extended header\n");
466 CMT2LOG(
"L2: waitForMessage timeout occurred\n");
482 #ifdef _LOG_CALLBACKS 506 CMT2LOG(
"L2: waitForMessage load from string failed\n");
518 CMT2LOG(
"L2: waitForMessage found message in message\n");
570 #ifdef _LOG_CALLBACKS 576 CMT2LOG(
"L2: writeMessage successful\n");
void BASE_IMPEXP memcpy(void *dest, size_t destSize, const void *src, size_t copyCount) MRPT_NO_THROWS
An OS and compiler independent version of "memcpy".
Operation was performed successfully.
unsigned __int16 uint16_t
XsensResultValue appendData(const uint32_t length, const void *data)
Write data to the end of the file.
void getPortName(char *portname) const
Retrieve the port name that was last successfully opened.
XsensResultValue setReadPos(const CmtFilePos pos)
Set the new absolute read position.
XsensResultValue open(const char *filename, const bool readOnly=false)
Open a file and read the header.
XsensResultValue writeData(const uint32_t length, const uint8_t *data, uint32_t *written)
Write the data to the serial port.
XsensResultValue getName(char *filename) const
Retrieve the filename that was last successfully opened.
#define XSENS_MS_PER_DAY
The number of milliseconds in a normal day.
CmtCallbackFunction m_onMessageReceived
The message received function.
Operation aborted because of no data read.
XsensResultValue getPortNr(uint8_t &port) const
Retrieve the port that the object is connected to.
XsensResultValue setCallbackFunction(CmtCallbackSelector tp, int32_t instance, CmtCallbackFunction func, void *param)
Set the callback function for when a message has been received or sent.
bool isOpen(void) const
Return whether the file is open or not.
#define CMT_DEFAULT_BAUD_RATE
The default baud rate of the Cmt1s serial communication.
CmtFilePos getReadPos(void) const
Return the current read position.
XsensResultValue readData(const uint32_t maxLength, void *data, uint32_t *length)
Read data from the file and put it into the data buffer.
XsensResultValue writeData(const uint32_t length, const void *data)
Write data to the file.
XsensResultValue closeAndDelete(void)
Close the file and delete it.
void clear(void)
Clear all data in the message.
Callback function, called when a full message has been received from a port.
XsensResultValue deleteData(const CmtFilePos start, const uint32_t length)
Delete the given data from the file.
CmtCallbackFunction m_onMessageSent
The message sent function.
XsensResultValue getName(char *filename) const
Retrieve the filename that was last successfully opened.
uint32_t m_toEnd
The timestamp at which to end an operation.
uint32_t getTimeOfDay(tm *date_, time_t *secs_)
A platform-independent clock.
#define CMT2_DEFAULT_TIMEOUT
Timeout in ms for level 2.
Cmt1s m_cmt1s
The CMT level 1 object that this class operates on.
XsensResultValue getPortName(char *portname) const
XsensResultValue open(const char *filename, const bool create, const bool readOnly)
Open a file.
Callback function, called when a full message has been sent by a port.
int32_t m_onMessageReceivedInstance
Custom, user supplied parameter for the OnMessageReceived callback function, passed as the first argu...
XsensResultValue setTimeout(const uint32_t ms=CMT1_DEFAULT_TIMEOUT)
Set the default timeout value to use in blocking operations.
Tried to change a read-only value.
void * m_onMessageSentParam
Custom, user supplied parameter for the OnMessageSent callback function, passed as the last argument...
int32_t m_onMessageSentInstance
Custom, user supplied parameter for the OnMessageSent callback function, passed as the first argument...
XsensResultValue close(void)
Close the file.
No serial port opened for reading/writing.
XsensResultValue(__cdecl * CmtCallbackFunction)(int32_t, CmtCallbackSelector, void *, void *)
XsensResultValue
Xsens return values.
XsensResultValue closeAndDelete(void)
Close the file and delete it.
CmtFilePos getReadPosition(void)
Get the current read position.
XsensResultValue find(const void *needle, const uint32_t needleLength, CmtFilePos &pos)
Find a string of bytes in the file.
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.
Cmt2s()
Default constructor, initialize all members to their default values.
#define CMT_LEN_MSGEXTHEADERCS
XsensResultValue open(const char *portName, const uint32_t baudRate=CMT_DEFAULT_BAUD_RATE)
Open a communication channel to the given serial port name.
XsensResultValue waitForMessage(Message *rcv, const uint8_t msgId, uint32_t timeoutOverride, bool acceptErrorMessage)
Wait for a message to arrive.
uint16_t m_readBufferCount
The number of valid bytes in the readBuffer.
uint8_t m_readBuffer[CMT_DEFAULT_READ_BUFFER_SIZE]
Buffer for reading data until a valid message is read. Should be rarely used.
XsensResultValue loadFromString(const uint8_t *source, const uint16_t size)
Read the entire message from the given source string.
XsensResultValue close(void)
Close the file.
void * m_onMessageReceivedParam
Custom, user supplied parameter for the OnMessageReceived callback function, passed as the last argum...
int32_t findValidMessage(const uint8_t *buffer, const uint16_t bufferLength)
Find a valid message in the given buffer. If nothing is found, the function returns -1...
CmtFilePos getFileSize(void)
Get the current file size.
XsensResultValue setReadPosition(CmtFilePos pos)
Set the read position to the given position.
uint8_t getMessageId(void) const
Return the current value of the m_messageId field.
XsensResultValue close(void)
Close the serial communication port.
Cmt1f * getCmt1f(void)
Get a reference to the embedded Cmt1f object.
const uint8_t * getMessageStart(void) const
Return the start of the message buffer.
XsensResultValue getLastResult(void) const
Return the error code of the last operation.
uint8_t getPortNr(void) const
Retrieve the port number that was last successfully opened.
XsensResultValue setTimeout(const uint32_t ms=CMT2_DEFAULT_TIMEOUT)
Set the default timeout value to use in blocking operations.
~Cmt2s()
Destructor, de-initialize, free memory allocated for buffers, etc.
CmtFilePos getFileSize(void) const
Return the size of the file.
XsensResultValue writeMessage(Message *msg)
Send a message over the COM port.
#define CMT_LEN_MSGHEADERCS
XsensResultValue m_lastResult
The last result of an operation.
XsensResultValue create(const char *filename)
Create a new file with level 2 header.
GLuint GLsizei GLsizei * length
An invalid parameter is supplied.
const char * xsensResultText(const XsensResultValue result)
The low-level file communication class.
XsensResultValue readMessage(Message *msg, const uint8_t msgId=0)
Read the next message from the file, when msgId is non-zero, the first matching message will be retur...
bool isOpen(void) const
Return whether the file is open or not.
The namespace of all Xsens software since 2006.
Cmt2f()
Default constructor.
A generic error occurred.
XsensResultValue create(const char *filename)
Open an empty file.
XsensResultValue close(void)
Close the serial communication port.
#define CMT_LEN_MSGHEADER
Cmt1f m_cmt1f
The Cmt1f object that is used for the low-level operations.
uint16_t getTotalMessageSize(void) const
Return the length of the message buffer.
XsensResultValue writeMessage(const Message *msg)
Write a message to the end of the file.
unsigned __int32 uint32_t
bool isChecksumOk(void) const
Compute the checksum and compare it with the stored checksum. Equal is ok.
uint32_t m_baudrate
The baudrate that was last set to be used by the port.
uint32_t m_timeout
Timeout in ms for blocking operations.
An I/O device is already opened with this object.
uint8_t m_data[CMT_MAXMSGLEN]
bool m_readOnly
When set to true, the file is read-only and attempts to write to it will fail.
Class for storing a single message.
No file opened for reading/writing.
XsensResultValue readMessage(Message *rcv)
Read a message from the COM port.
XsensResultValue m_lastResult
The last result of an operation.