1 #ifndef XSENS_MONOLITHIC 24 #ifndef XSENS_MONOLITHIC 67 __attribute__((__packed__)) ;
71 #define swapEndian16(src) (((src) >> 8) | ((src) << 8)) 72 #define swapEndian32(src) (((src) >> 24) | ((src) >> 8 & 0xFF00) | ((src) << 8 & 0xFF0000) | ((src) << 24)) 88 {
return computeChecksum(((uint8_t*)m_buffer) + 1, getTotalMessageSize()-2); }
90 uint8_t* getDataStart(
void)
const;
104 Message(
const uint8_t msgId = 0,
const uint16_t length = 0,
const uint16_t maxLength =
CMT_MAXMSGLEN);
133 {
return &((getDataStart())[offset]); }
135 {
return &((getDataStart())[offset]); }
141 {
return (getDataStart()[offset]); }
146 double getDataDouble(
const uint16_t offset=0)
const;
151 float getDataFloat(
const uint16_t offset=0)
const;
156 double getDataF1220(
const uint16_t offset=0)
const;
161 double getDataFP1632(
const uint16_t offset=0)
const;
167 double getDataFPValue(
const uint64_t outputSettings,
const uint16_t offset = 0)
const;
175 void getDataFPValue(
double *dest,
const uint64_t outputSettings, uint16_t offset,
const int16_t numValues)
const;
180 uint32_t getDataLong(
const uint16_t offset=0)
const;
185 uint16_t getDataShort(
const uint16_t offset=0)
const;
187 uint16_t getDataSize(
void)
const;
195 {
return (uint8_t*) m_buffer; }
202 uint16_t getTotalMessageSize(
void)
const;
204 bool isChecksumOk(
void)
const;
212 XsensResultValue loadFromString(
const uint8_t* source,
const uint16_t size);
220 void resizeData(
const uint16_t newSize);
222 void setBusId(
const uint8_t busId);
231 void setDataBuffer(
const uint8_t* data,
const uint16_t offset = 0,
232 const uint16_t count = 0);
238 void setDataByte(
const uint8_t data,
const uint16_t offset = 0);
244 void setDataDouble(
const double data,
const uint16_t offset=0);
250 void setDataFloat(
const float data,
const uint16_t offset = 0);
256 void setDataF1220(
const double data,
const uint16_t offset = 0);
262 void setDataFP1632(
const double data,
const uint16_t offset = 0);
269 void setDataFPValue(
const uint64_t outputSettings,
const double data,
const uint16_t offset = 0);
277 void setDataFPValue(
const uint64_t outputSettings,
const double *data, uint16_t offset,
const uint16_t numValues);
283 void setDataLong(
const uint32_t data,
const uint16_t offset = 0);
289 void setDataShort(
const uint16_t data,
const uint16_t offset = 0);
291 void setMessageId(
const uint8_t msgId);
294 void operator = (
const Message& src);
297 void deleteData(uint16_t size, uint16_t offset = 0);
299 void insertData(uint16_t size, uint16_t offset = 0);
304 #endif // CMTMESSAGE_H uint8_t getMessageId(void) const
Return the current value of the m_messageId field.
Definition: cmtmessage.h:189
uint8_t calcChecksum(void) const
Internal checksum computation.
Definition: cmtmessage.h:87
#define CMT_MAXDATALEN
Definition: cmtdef.h:96
const uint8_t * getDataBuffer(const uint16_t offset=0) const
Definition: cmtmessage.h:134
bool m_autoUpdateChecksum
Definition: cmtmessage.h:93
void recomputeChecksum(void)
Compute the checksum field and fill it.
Definition: cmtmessage.h:218
uint8_t getBusId(void) const
Return the current value of the m_busId field.
Definition: cmtmessage.h:127
#define CMT_MAXMSGLEN
Definition: cmtdef.h:98
XsensResultValue
Xsens return values.
Definition: xsens_std.h:43
uint8_t * m_checksum
The checksum in the m_data or m_extendedData buffer.
Definition: cmtmessage.h:82
uint8_t computeChecksum(const uint8_t *buffer, uint32_t length)
Compute the checksum of the given byte string.
Definition: cmtmessage.cpp:733
uint32_t m_maxLength
The maximum size of the message, including header and footer.
Definition: cmtmessage.h:84
Class for storing a single message.
Definition: cmtmessage.h:76
Macros and types for use in the Xsens communication protocol and CMT classes.
MessageHeader * m_buffer
The message header is the data buffer with interpretation.
Definition: cmtmessage.h:80
uint8_t getDataByte(const uint16_t offset=0) const
Return the current value of the data as an unsigned byte (8 bits).
Definition: cmtmessage.h:140
The namespace of all Xsens software since 2006.
Definition: cmt1.cpp:62
Contains the CMT Level 1 interface.
uint8_t * getDataBuffer(const uint16_t offset=0)
Return a pointer to the data buffer.
Definition: cmtmessage.h:132
const uint8_t * getMessageStart(void) const
Return the start of the message buffer.
Definition: cmtmessage.h:194