Go to the documentation of this file.
73 #define MAP (*thisPtr->d)
77 using namespace XsDataPacket_Private;
81 if (thisPtr->
d->m_refCount == 1)
85 if (--old->m_refCount == 0)
96 return new SimpleVariant<double>(
id);
99 return new XsTimeInfoVariant(
id);
101 return new SimpleVariant<uint16_t>(
id);
103 return new SimpleVariant<uint32_t>(
id);
105 return new SimpleVariant<uint8_t>(
id);
107 return new SimpleVariant<uint8_t>(
id);
110 return new SimpleVariant<uint32_t>(
id);
112 return new XsRangeVariant(
id);
114 return new SimpleVariant<uint8_t>(
id);
116 return new SimpleVariant<uint64_t>(
id);
120 return new XsQuaternionVariant(
id);
122 return new XsMatrixVariant(
id);
124 return new XsEulerVariant(
id);
128 return new SimpleVariant<uint32_t>(
id);
135 return new XsVector3Variant(
id);
140 return new SimpleVariant<double>(
id);
142 return new XsVector3Variant(
id);
144 return new XsVector2Variant(
id);
150 return new XsAwindaSnapshotVariant(
id);
152 return new XsFullSnapshotVariant(
id);
156 return new XsRawGnssPvtDataVariant(
id);
158 return new XsRawGnssSatInfoVariant(
id);
160 return new SimpleVariant<uint32_t>(
id);
165 return new XsVector3Variant(
id);
167 return new XsQuaternionVariant(
id);
173 return new XsScrDataVariant(
id);
179 return new XsUShortVectorVariant(
id);
182 return new XsQuaternionVariant(
id);
184 return new XsVector3Variant(
id);
189 return new SimpleVariant<uint16_t>(
id);
197 return new XsVector3Variant(
id);
201 return new SimpleVariant<uint8_t>(
id);
203 return new SimpleVariant<uint32_t>(
id);
205 return new SimpleVariant<uint8_t>(
id);
207 return new SimpleVariant<uint32_t>(
id);
209 return new SimpleVariant<uint16_t>(
id);
214 return new XsTriggerIndicationDataVariant(
id);
217 return new XsByteArrayVariant(
id);
221 return new XsGloveSnapshotVariant(
id);
225 return new XsGloveDataVariant(
id);
239 *returnVal = it->second->toDerived<XsScrDataVariant>().m_data.*field;
244 *returnVal = it->second->toDerived<XsUShortVectorVariant>().
m_data;
254 it->second->toDerived<XsScrDataVariant>().m_data.*field = *vec;
259 it->second->toDerived<XsUShortVectorVariant>().m_data = *vec;
261 MAP.insert(
id,
new XsUShortVectorVariant(
id, *vec));
265 template <
typename T,
typename V>
269 auto it =
MAP.find(
id);
271 *returnVal = it->second->toDerived<V>().m_data;
273 *returnVal = failValue;
277 template <
typename T,
typename V>
282 auto it =
MAP.find(
id);
285 it->second->toDerived<V>().m_data = *val;
286 it->second->setDataId(
id);
289 MAP.insert(
id,
new V(
id, *val));
292 template <
typename T,
typename V = SimpleVariant<T>>
297 auto it =
MAP.find(
id);
299 return it->second->toDerived<V>().m_data;
306 auto it =
MAP.find(
id);
308 it->second->toDerived<V>().m_data = val;
310 MAP.insert(
id,
new V(
id, val));
316 return MAP.find(
id) !=
MAP.end();
324 int XsDataPacket_containsOrientationQuaternion(
const XsDataPacket* thisPtr)
333 int XsDataPacket_containsOrientationEuler(
const XsDataPacket* thisPtr)
342 int XsDataPacket_containsOrientationMatrix(
const XsDataPacket* thisPtr)
354 static const XsQuaternion q_enu2nwu(1.4142135623730950488016887242097 * 0.5, 0, 0, -1.4142135623730950488016887242097 * 0.5);
355 static const XsQuaternion q_enu2ned(0, -1.4142135623730950488016887242097 * 0.5, -1.4142135623730950488016887242097 * 0.5, 0);
358 static const XsQuaternion q_nwu2enu(1.4142135623730950488016887242097 * 0.5, 0, 0, 1.4142135623730950488016887242097 * 0.5);
359 static const XsQuaternion q_ned2enu(0, 1.4142135623730950488016887242097 * 0.5, 1.4142135623730950488016887242097 * 0.5, 0);
439 ++src->
d->m_refCount;
451 if (thisPtr->
d && --thisPtr->
d->m_refCount == 0)
453 thisPtr->
d =
nullptr;
477 if (copy->
d != src->
d)
479 ++src->
d->m_refCount;
480 if (--copy->
d->m_refCount == 0)
496 swap(thisPtr->
d, other->
d);
508 return 0 !=
MAP.empty();
517 return (
int)
MAP.size();
530 auto it =
MAP.find(
id);
643 return it->second->toDerived<XsScrDataVariant>().m_data.m_temp;
664 it->second->toDerived<XsScrDataVariant>().m_data.m_temp = temp;
668 v->m_data.m_temp = temp;
684 *returnVal = it->second->toDerived<XsUShortVectorVariant>().m_data;
704 it->second->toDerived<XsUShortVectorVariant>().m_data = *vec;
722 *returnVal = it->second->toDerived<XsScrDataVariant>().m_data;
725 for (
XsSize i = 0; i < 3; ++i)
727 returnVal->
m_acc[i] = 0;
728 returnVal->
m_gyr[i] = 0;
729 returnVal->
m_mag[i] = 0;
752 it->second->toDerived<XsScrDataVariant>().m_data = *
data;
767 return genericGet<XsVector, XsVector3Variant>(thisPtr, returnVal,
XDI_DeltaV);
794 return genericGet<XsVector, XsVector3Variant>(thisPtr, returnVal,
XDI_Acceleration);
820 return genericGet<XsQuaternion, XsQuaternionVariant>(thisPtr, returnVal,
XDI_DeltaQ);
847 return genericGet<XsVector, XsVector3Variant>(thisPtr, returnVal,
XDI_RateOfTurn);
874 return genericGet<XsVector, XsVector3Variant>(thisPtr, returnVal,
XDI_MagneticField);
971 *returnVal = it->second->toDerived<XsQuaternionVariant>().m_data;
976 rot = preRotFromXdi(foundId, coordinateSystem);
980 else if (XsDataPacket_containsOrientationMatrix(thisPtr))
984 returnVal->fromRotationMatrix(m);
986 else if (XsDataPacket_containsOrientationEuler(thisPtr))
990 returnVal->fromEulerAngles(eul);
1030 if (it !=
MAP.end())
1032 *returnVal = it->second->toDerived<XsEulerVariant>().m_data;
1037 rot = preRotFromXdi(foundId, coordinateSystem);
1043 else if (XsDataPacket_containsOrientationMatrix(thisPtr))
1048 q.fromRotationMatrix(m);
1049 returnVal->fromQuaternion(q);
1051 else if (XsDataPacket_containsOrientationQuaternion(thisPtr))
1055 returnVal->fromQuaternion(q);
1090 if (it !=
MAP.end())
1092 *returnVal = it->second->toDerived<XsMatrixVariant>().m_data;
1097 rot = preRotFromXdi(foundId, coordinateSystem);
1103 else if (XsDataPacket_containsOrientationQuaternion(thisPtr))
1107 returnVal->fromQuaternion(q);
1109 else if (XsDataPacket_containsOrientationEuler(thisPtr))
1114 q.fromEulerAngles(eul);
1115 returnVal->fromQuaternion(q);
1150 if (it !=
MAP.end())
1151 return it->second->dataId();
1154 if (it !=
MAP.end())
1155 return it->second->dataId();
1158 if (it !=
MAP.end())
1159 return it->second->dataId();
1198 if (it !=
MAP.end())
1200 returnVal->
m_pressure = it->second->toDerived<SimpleVariant<uint32_t>>().m_data;
1205 if (it !=
MAP.end())
1206 returnVal->
m_pressureAge = it->second->toDerived<SimpleVariant<uint8_t>>().m_data;
1228 if (it !=
MAP.end())
1229 returnVal->setOrientationIncrement(it->second->toDerived<XsQuaternionVariant>().m_data);
1232 if (it !=
MAP.end())
1233 returnVal->setVelocityIncrement(it->second->toDerived<XsVector3Variant>().m_data);
1266 return genericGet<XsGloveData, XsGloveDataVariant>(thisPtr, returnVal,
XDI_GloveDataLeft);
1268 return genericGet<XsGloveData, XsGloveDataVariant>(thisPtr, returnVal,
XDI_GloveDataRight);
1323 return genericGet<XsDeviceId, SimpleVariant<uint32_t>>(thisPtr, returnVal,
XDI_DeviceId);
1399 return genericGet<XsAnalogInData, SimpleVariant<uint16_t>>(thisPtr, returnVal,
XDI_AnalogIn1);
1425 return genericGet<XsAnalogInData, SimpleVariant<uint16_t>>(thisPtr, returnVal,
XDI_AnalogIn2);
1454 returnVal->setSize(3);
1457 genericGet<XsVector, XsVector2Variant>(thisPtr, &latlon,
XDI_LatLon);
1458 if (!latlon.empty())
1460 (*returnVal)[0] = latlon[0];
1461 (*returnVal)[1] = latlon[1];
1465 (*returnVal)[0] = 0;
1466 (*returnVal)[1] = 0;
1490 latlon[0] = (*data)[0];
1491 latlon[1] = (*data)[1];
1507 return genericGet<XsVector, XsVector2Variant>(thisPtr, returnVal,
XDI_LatLon);
1597 if (it !=
MAP.end())
1599 *returnVal = it->second->toDerived<XsVector3Variant>().m_data;
1602 if (actualCsys != desiredCsys)
1607 switch (desiredCsys)
1690 if (it !=
MAP.end())
1702 if (it !=
MAP.end())
1703 return it->second->dataId();
1722 if (it !=
MAP.end())
1723 return it->second->toDerived<SimpleVariant<uint32_t>>().m_data;
1726 if (it !=
MAP.end())
1727 return it->second->toDerived<SimpleVariant<uint8_t>>().m_data;
1758 word = ((word & (~0xFF)) |
data);
1772 if (it !=
MAP.end())
1787 return genericGet<XsTriggerIndicationData, XsTriggerIndicationDataVariant>(thisPtr, returnVal, triggerId);
1805 genericSet<XsTriggerIndicationData, XsTriggerIndicationDataVariant>(thisPtr, triggerIndicationData, triggerId);
1847 if (it !=
MAP.end())
1848 return it->second->toDerived<SimpleVariant<uint16_t>>().m_data;
1851 if (it !=
MAP.end())
1852 return static_cast<uint16_t
>(
static_cast<unsigned int>(it->second->toDerived<XsRangeVariant>().m_data.last()));
1899 if (it !=
MAP.end())
1901 auto& var = it->second->toDerived<SimpleVariant<uint64_t>>();
1928 if (it !=
MAP.end())
1930 auto& var = it->second->toDerived<SimpleVariant<uint64_t>>();
1941 if (it !=
MAP.end())
1942 return it->second->toDerived<SimpleVariant<uint64_t>>().m_data;
1946 bool hasSampletimeCoarse =
false;
1948 if (it !=
MAP.end())
1950 hasSampletimeCoarse =
true;
1951 rv += ((uint64_t) it->second->toDerived<SimpleVariant<uint32_t>>().m_data) *
coarseFactor;
1955 if (it !=
MAP.end())
1957 uint32_t sampletimeFine = it->second->toDerived<SimpleVariant<uint32_t>>().m_data;
1958 if (hasSampletimeCoarse)
1960 rv += sampletimeFine;
1991 return genericGet<XsTimeInfo, XsTimeInfoVariant>(thisPtr, returnVal,
XDI_UtcTime);
2007 genericSet<XsTimeInfo, XsTimeInfoVariant>(thisPtr,
data,
XDI_UtcTime);
2047 return genericGet<XsRange, XsRangeVariant>(thisPtr, returnVal,
XDI_FrameRange);
2102 return genericGet<XsRawGnssPvtData, XsRawGnssPvtDataVariant>(thisPtr, returnVal,
XDI_GnssPvtData);
2118 genericSet<XsRawGnssPvtData, XsRawGnssPvtDataVariant>(thisPtr, r,
XDI_GnssPvtData);
2176 return genericGet<XsRawGnssSatInfo, XsRawGnssSatInfoVariant>(thisPtr, returnVal,
XDI_GnssSatInfo);
2209 bool over = !!overwrite;
2210 thisPtr->
d->merge(*other->
d, over);
2219 if ((gc && !over) || (!gc && over))
2255 while (offset + 3 <= sz)
2259 if (offset + itemSize + 3 > sz)
2265 itemSize = var->readFromMessage(*
msg, offset + 3, itemSize);
2266 MAP.insert(
id, var);
2268 offset += 3 + itemSize;
2289 msg->resizeData(2048);
2290 for (
auto const& i :
MAP)
2292 XsSize sz = i.second->sizeInMsg();
2295 msg->setDataShort((uint16_t) i.second->dataId(), offset);
2296 msg->setDataByte((uint8_t)sz, offset + 2);
2297 i.second->writeToMessage(*
msg, offset + 3);
2306 msg->setDataShort((uint16_t) i.second->dataId(), offset2);
2307 msg->setDataByte((uint8_t)255, offset2 + 2);
2311 msg->setDataShort((uint16_t) i.second->dataId(), offset2);
2312 msg->setDataByte((uint8_t)sz2, offset2 + 2);
2313 i.second->writeToMessage(*
msg, offset + 3);
2314 offset = offset2 + 3 + sz2;
2317 msg->resizeData(offset);
2329 genericGet<XsSnapshot, XsFullSnapshotVariant>(thisPtr, returnVal,
XDI_FullSnapshot);
2361 return genericGet<XsSnapshot, XsAwindaSnapshotVariant>(thisPtr, returnVal,
XDI_AwindaSnapshot);
2389 if (it ==
MAP.end())
2407 return genericGet<XsGloveSnapshot, XsGloveSnapshotVariant>(thisPtr, returnVal,
XDI_GloveSnapshotLeft);
2461 returnVal.setSize(3);
2464 for (
XsSize i = 0; i < 3; i++)
2465 returnVal[i] = caster(input[i]);
2480 if (it !=
MAP.end())
2481 tmp = it->second->toDerived<XsScrDataVariant>().m_data.*field;
2485 if (it !=
MAP.end())
2486 tmp = it->second->toDerived<XsUShortVectorVariant>().
m_data;
2537 if (it !=
MAP.end())
2538 tmp = it->second->toDerived<XsUShortVectorVariant>().m_data;
2549 return genericGet<XsByteArray, XsByteArrayVariant>(thisPtr, returnVal,
XDI_RawBlob);
2565 genericSet<XsByteArray, XsByteArrayVariant>(thisPtr,
data,
XDI_RawBlob);
2574 return genericGet<XsVector, XsVector3Variant>(thisPtr, returnVal,
XDI_AccelerationHR);
2599 return genericGet<XsVector, XsVector3Variant>(thisPtr, returnVal,
XDI_RateOfTurnHR);
2624 return DataPacketPrivate::creationDiff();
XsDataIdentifier XsDataPacket_coordinateSystemVelocity(const XsDataPacket *thisPtr)
Returns the coordinate system of the first velocity data of any kind in the packet.
int XsDataPacket_containsCalibratedData(const XsDataPacket *thisPtr)
Check if data item contains calibrated Data.
XsPressure * XsDataPacket_pressure(const XsDataPacket *thisPtr, XsPressure *returnVal)
The air pressure component of a data item.
void XsQuaternion_fromRotationMatrix(XsQuaternion *thisPtr, const XsMatrix *ori)
Create a quaternion representation of orientation matrix ori.
XsTimeInfo * XsDataPacket_utcTime(const XsDataPacket *thisPtr, XsTimeInfo *returnVal)
The utc time component of a data item.
XsSdiData * XsDataPacket_sdiData(const XsDataPacket *thisPtr, XsSdiData *returnVal)
Return the strapdown integration data component of a data item.
void XsDataPacket_swap(XsDataPacket *thisPtr, XsDataPacket *other)
Swaps the XsDataPackets in thisPtr and other.
@ XDI_RateOfTurnHR
Rate of turn HR data.
@ XDI_Itow
Itow. Time Of Week from the GNSS receiver.
int64_t m_packetId
64 bit packet id, based on, depending on availability: (1) packet counter (2) sample time (3) arrival...
XsRawGnssPvtData * XsDataPacket_rawGnssPvtData(const XsDataPacket *thisPtr, XsRawGnssPvtData *returnVal)
Returns a struct with RawGnssPvtData.
int XsDataPacket_containsCorrectedMagneticField(const XsDataPacket *thisPtr)
Check if data item contains corrected magnetometer data (ICC result).
@ XDI_GnssPvtData
Gnss position, velocity and time data.
A class that represents a matrix of real numbers.
@ XDI_RotationMatrix
Orientation in rotation matrix format.
bool genericContains(const XsDataPacket *thisPtr, XsDataIdentifier id)
Variant * createVariant(XsDataIdentifier id)
void XsDataPacket_toMessage(const XsDataPacket *thisPtr, XsMessage *msg)
Write the contents of the XsDataPacket to an XsMessage in MtData2 format.
int XsDataPacket_containsTriggerIndication(const XsDataPacket *thisPtr, XsDataIdentifier triggerId)
Check if data item contains trigger indication data.
@ XDI_PacketCounter8
8 bit packet counter, wraps at 256
void XsDataPacket_setStoredDeviceId(XsDataPacket *thisPtr, const XsDeviceId *data)
Add or update device id for the item.
void XsDataPacket_setGnssPvtPulse(XsDataPacket *thisPtr, uint32_t counter)
Add/update pvt pulse timestamp data for the item.
A class that represents a vector of real numbers.
void XsDataPacket_setOrientationEuler(XsDataPacket *thisPtr, const XsEuler *data, XsDataIdentifier coordinateSystem)
Add/update quaternion orientation Data for the item.
@ XDI_TriggerIn1
Trigger in 1 indication.
void XsDataPacket_setSdiData(XsDataPacket *thisPtr, const XsSdiData *data)
Add/update strapdown integration data for the item.
void XsDataPacket_setTriggerIndication(XsDataPacket *thisPtr, XsDataIdentifier triggerId, const XsTriggerIndicationData *triggerIndicationData)
Add/update trigger indication data for the item.
XsUShortVector m_mag
The raw magnetometer data.
@ XDI_LatLon
Position in latitude, longitude.
@ XDI_RawAcc
Raw acceleration data.
void XsDataPacket_setFullSnapshot(XsDataPacket *thisPtr, XsSnapshot const *data, int retransmission)
Sets the Awinda Snapshot part of the XsDataPacket.
@ XDI_RawGyr
Raw gyroscope data.
A list of uint8_t values.
XsQuaternion * XsDataPacket_orientationIncrement(const XsDataPacket *thisPtr, XsQuaternion *returnVal)
The delta quaternion (deltaQ) component of a data item.
int XsDataPacket_containsFrameRange(const XsDataPacket *thisPtr)
Returns whether the datapacket contains a framerange.
@ XDI_FrameRange
Reserved.
int XsDataPacket_rssi(const XsDataPacket *thisPtr)
Returns the rssi value contained in the datapacket.
void XsDataPacket_setRawData(XsDataPacket *thisPtr, const XsScrData *data)
Add/update raw data for the item.
void XsDataPacket_setCalibratedMagneticField(XsDataPacket *thisPtr, const XsVector *vec)
Add/update calibrated magnetometer data for the item.
int XsDataPacket_containsStoredDeviceId(const XsDataPacket *thisPtr)
Return non-zero if this data packet stores a device ID.
A container for Glove Snapshot data.
XsVector * XsDataPacket_rateOfTurnHR(const XsDataPacket *thisPtr, XsVector *returnVal)
Returns RateOfTurnHR.
XsQuaternion * XsDataPacket_orientationQuaternion(const XsDataPacket *thisPtr, XsQuaternion *returnVal, XsDataIdentifier coordinateSystem)
Return the orientation component of a data item as a quaternion.
@ XDI_RateOfTurn
Rate of turn data in rad/sec.
int XsDataPacket_containsAccelerationHR(const XsDataPacket *thisPtr)
Check if data item contains AccelerationHR.
int XsDataPacket_containsRawAcceleration(const XsDataPacket *thisPtr)
Check if data item contains Raw Accelerometer data.
void XsDataPacket_setGloveData(XsDataPacket *thisPtr, const XsGloveData *data, XsHandId hand)
Add/update strapdown integration data for the item.
@ XDI_BaroPressure
Pressure output recorded from the barometer.
@ XDI_SampleTimeCoarse
Sample Time Coarse.
uint16_t m_temp
The temperature data.
void XsDataPacket_setCalibratedGyroscopeData(XsDataPacket *thisPtr, const XsVector *vec)
Add/update calibrated gyroscope data for the item.
@ XDI_None
Empty datatype.
int XsDataPacket_containsPacketCounter(const XsDataPacket *thisPtr)
Check if data item contains a packet counter.
void XsDataPacket_setRawGyroscopeTemperatureData(XsDataPacket *thisPtr, const XsUShortVector *vec)
Add/update raw gyroscope temperature data for the item.
@ XDI_AnalogIn2
Data containing adc data from analog in 2 line (if present)
int XsDataPacket_containsSdiData(const XsDataPacket *thisPtr)
Check if data item contains strapdown integration data.
void XsDataPacket_clear(XsDataPacket *thisPtr, XsDataIdentifier id)
Clears all data in an XsDataPacket.
uint16_t XsDataPacket_storedLocationId(const XsDataPacket *thisPtr)
The location ID of a data item.
XsDeviceId m_deviceId
The ID of the device that created the data.
int XsDataPacket_containsRawBlob(const XsDataPacket *thisPtr)
Returns true if the XsDataPacket contains raw blob data.
@ XHI_RightHand
The Right Hand.
@ XDI_DeviceId
DeviceId output.
void XsDataPacket_copyConstruct(XsDataPacket *thisPtr, XsDataPacket const *src)
Initializes a data packet as a (referenced) copy of src.
A container for glove data.
@ XDI_GloveDataLeft
Glove Data for Left Hand.
int XsDataPacket_containsFullSnapshot(const XsDataPacket *thisPtr)
Returns true if the XsDataPacket contains Full Snapshot data.
void XsDataPacket_setPositionLLA(XsDataPacket *thisPtr, const XsVector *data)
Add/update position lat lon alt data for the item.
XsVector3 m_gyr
Gyroscope data.
void XsDataPacket_setAltitude(XsDataPacket *thisPtr, double data)
Add/update altitude data for the item.
XsByteArray * XsDataPacket_rawBlob(const XsDataPacket *thisPtr, XsByteArray *returnVal)
Returns the raw blob part of the XsDataPacket.
XsVector * XsDataPacket_accelerationHR(const XsDataPacket *thisPtr, XsVector *returnVal)
Returns AccelerationHR.
XsUShortVector m_gyr
The raw gyroscope data.
uint8_t XsDataPacket_packetCounter8(const XsDataPacket *thisPtr)
Return the 8 bit packet counter of a packet.
void XsDataPacket_setRawMagneticField(XsDataPacket *thisPtr, const XsUShortVector *vec)
Add/update raw magnetometer data for the item.
@ XDI_UtcTime
Utc time from the GNSS receiver.
XsVector * XsDataPacket_freeAcceleration(const XsDataPacket *thisPtr, XsVector *returnVal)
The free acceleration component of a data item.
@ XDI_GnssSatInfo
Gnss satellite information.
int XsDataPacket_containsAltitudeMsl(const XsDataPacket *thisPtr)
Check if data item contains position altitude above MSL data.
XsDataIdentifier XsDataPacket_dataFormat(const XsDataPacket *thisPtr, XsDataIdentifier id)
Returns the dataformat of a specific data identifier in the packet.
int XsDataPacket_containsRawData(const XsDataPacket *thisPtr)
Check if data item contains raw data.
int XsDataPacket_containsRawGnssPvtData(const XsDataPacket *thisPtr)
Returns 1 if data item contains RawGnssPvtData, 0 otherwise.
void XsDataPacket_setPressure(XsDataPacket *thisPtr, const XsPressure *data)
Add/update pressure data for the item.
Contains an interpreted data message. The class provides easy access to the contained data through it...
XsHandId
This is an enumerator that contains the left and right hand.
@ XDI_CoordSysEnu
East North Up orientation output.
XsVector * XsDataPacket_positionLLA(const XsDataPacket *thisPtr, XsVector *returnVal)
The position lat lon alt component of a data item.
int XsDataPacket_containsGloveSnapshot(const XsDataPacket *thisPtr, XsHandId hand)
Returns true if the XsDataPacket contains Glove Snapshot data.
int XsDataPacket_containsAwindaSnapshot(const XsDataPacket *thisPtr)
Returns true if the XsDataPacket contains Awinda Snapshot data.
XsAnalogInData * XsDataPacket_analogIn2Data(const XsDataPacket *thisPtr, XsAnalogInData *returnVal)
The analog in 2 component of a data item.
int XsDataPacket_containsGloveData(const XsDataPacket *thisPtr, XsHandId hand)
Check if data item contains glove data.
int XsDataPacket_containsFreeAcceleration(const XsDataPacket *thisPtr)
Check if data item contains free acceleration.
uint32_t XsDataPacket_sampleTimeFine(const XsDataPacket *thisPtr)
Return the fine sample time of a packet.
XsDeviceId * XsDataPacket_storedDeviceId(const XsDataPacket *thisPtr, XsDeviceId *returnVal)
The device id of a data item.
XsUShortVector * XsDataPacket_rawMagneticField(const XsDataPacket *thisPtr, XsUShortVector *returnVal)
The raw magnetometer component of a data item.
XsVector * XsDataPacket_rawGyroscopeDataConverted(const XsDataPacket *thisPtr, XsVector *returnVal)
The raw gyroscope component of a data item, converted to floating point values.
void XsDataPacket_construct(XsDataPacket *thisPtr)
Inits a data packet, the packet will be empty after construction.
int XsDataPacket_containsRawTemperature(const XsDataPacket *thisPtr)
Check if data item contains raw temperature data.
XsUShortVector m_acc
The raw accelerometer data.
XsUShortVector * rawVector(const XsDataPacket *thisPtr, XsUShortVector *returnVal, XsDataIdentifier id, XsUShortVector XsScrData::*field)
static void detach(XsDataPacket *thisPtr)
XsUShortVector * XsDataPacket_rawGyroscopeTemperatureData(const XsDataPacket *thisPtr, XsUShortVector *returnVal)
The raw gyroscope temperature component of a data item.
A class that implements a quaternion.
@ XDI_GnssPvtPulse
Time of the PVT timepulse (4Hz upsampled from the 1PPS)
@ XDI_CoordSysNwu
North West Up orientation output.
XsVector * XsDataPacket_calibratedGyroscopeData(const XsDataPacket *thisPtr, XsVector *returnVal)
The calibrated gyroscope component of a data item.
XsGloveSnapshot * XsDataPacket_gloveSnapshot(const XsDataPacket *thisPtr, XsGloveSnapshot *returnVal, XsHandId hand)
Returns the Glove Snapshot part of the XsDataPacket.
void XsDataPacket_destruct(XsDataPacket *thisPtr)
Clears and frees data in an XsDataPacket.
@ XDI_AnalogIn1
Data containing adc data from analog in 1 line (if present)
@ XDI_SampleTime64
64 bit sample time
void XsDataPacket_setAnalogIn2Data(XsDataPacket *thisPtr, const XsAnalogInData *data)
Add/update analog in 2 data for the item.
@ XDI_TriggerIn2
Trigger in 2 indication.
static T get(const XsDataPacket *thisPtr, XsDataIdentifier id, T const &failValue=T())
A container for GNSS Position Velocity and Time data.
void XsDataPacket_setVelocity(XsDataPacket *thisPtr, const XsVector *data, XsDataIdentifier coordinateSystem)
Add/update velocity NED data for the item.
@ XDI_PacketCounter
Packet counter, increments every packet.
uint8_t XsMessage_getDataByte(XsMessage const *thisPtr, XsSize offset)
Returns the byte value at offset in the data of the message.
int XsDataPacket_containsAnalogIn2Data(const XsDataPacket *thisPtr)
Check if data item contains analog in 2 data.
void XsDataPacket_setStatusByte(XsDataPacket *thisPtr, uint8_t data)
Add/update status data for the item.
A class whose objects can be used to store a range. It provides method to check whether a value is in...
@ XDI_FullTypeMask
Mask to get the type of data, without the data format.
void XsDataPacket_setCalibratedAcceleration(XsDataPacket *thisPtr, const XsVector *vec)
Add/update calibrated accelerometer data for the item.
@ XDI_Quaternion
Orientation in quaternion format.
int XsDataPacket_containsPositionLLA(const XsDataPacket *thisPtr)
Check if data item contains position lat lon alt data.
int XsDataPacket_containsGnssPvtPulse(const XsDataPacket *thisPtr)
Check if data item XsDataPacket_contains a pvt pulse.
@ XDI_LocationId
LocationId output.
uint32_t XsDataPacket_sampleTimeCoarse(const XsDataPacket *thisPtr)
XsUShortVector * XsDataPacket_rawAcceleration(const XsDataPacket *thisPtr, XsUShortVector *returnVal)
The raw accelerometer component of a data item.
@ XDI_MagneticField
Magnetic field data in a.u.
void XsDataPacket_setTemperature(XsDataPacket *thisPtr, double temperature)
Adds or updates the temperature data in the datapacket.
int XsDataPacket_containsOrientationIncrement(const XsDataPacket *thisPtr)
Check if data item contains delta quaternion data.
int XsDataPacket_containsRawGnssSatInfo(const XsDataPacket *thisPtr)
Returns 1 if data item contains RawGnssPvtData, 0 otherwise.
XsScrData * XsDataPacket_rawData(const XsDataPacket *thisPtr, XsScrData *returnVal)
Return the raw data component of a data item.
static const uint64_t coarseFactor
double XsDataPacket_altitude(const XsDataPacket *thisPtr)
The position altitude component of a data item.
Data from analog inputs from sensors.
void XsDataPacket_setRawTemperature(XsDataPacket *thisPtr, uint16_t temp)
Add/update raw temperature data for the item.
@ XDI_StatusByte
Status byte.
Contains StrapDown Integration (SDI) data.
int XsDataPacket_containsRawGyroscopeTemperatureData(const XsDataPacket *thisPtr)
Check if data item contains raw gyroscope temperature data.
void XsDataPacket_setOrientationQuaternion(XsDataPacket *thisPtr, const XsQuaternion *data, XsDataIdentifier coordinateSystem)
Add/update quaternion orientation Data for the item.
XsDataIdentifier
Defines the data identifiers.
XsCalibratedData * XsDataPacket_calibratedData(const XsDataPacket *thisPtr, XsCalibratedData *returnVal)
Return the calibrated Data component of a data item.
int XsDataPacket_containsLatitudeLongitude(const XsDataPacket *thisPtr)
Check if data item contains position latitude longitude data.
int XsDataPacket_containsVelocity(const XsDataPacket *thisPtr)
Check if data item contains velocity NED data.
void XsDataPacket_setMessage(XsDataPacket *thisPtr, const XsMessage *msg)
Overwrite the contents of the XsDataPacket with the contents of the supplied XsMessage.
static void convertRawVector(XsUShortVector const &input, XsDataIdentifier id, XsVector &returnVal)
Converts input vector input with data identifier id to output XsVector returnVal.
void XsDataPacket_setFreeAcceleration(XsDataPacket *thisPtr, const XsVector *g)
Add/update free acceleration data for the item.
@ XDI_RetransmissionMask
Mask for the retransmission bit in the snapshot data.
XsDataPacket * XsDataPacket_merge(XsDataPacket *thisPtr, const XsDataPacket *other, int overwrite)
Merge the data items from other into the packet.
void XsDataPacket_setRateOfTurnHR(XsDataPacket *thisPtr, const XsVector *vec)
Add/update the RateOfTurnHR for the item.
@ XDI_RawMag
Raw magnetometer data.
XsMatrix * XsDataPacket_orientationMatrix(const XsDataPacket *thisPtr, XsMatrix *returnVal, XsDataIdentifier coordinateSystem)
Return the orientation component of a data item as a orientation matrix.
Data for a trigger indication message.
int XsDataPacket_containsGnssAge(const XsDataPacket *thisPtr)
Returns 1 if data item contains GnssAge, 0 otherwise.
@ XDI_GloveDataRight
Glove Data for Right Hand.
void XsDataPacket_setAwindaSnapshot(XsDataPacket *thisPtr, XsSnapshot const *data, int retransmission)
Sets the Awinda Snapshot part of the XsDataPacket.
void XsDataPacket_setAnalogIn1Data(XsDataPacket *thisPtr, const XsAnalogInData *data)
Add/update analog in 1 data for the item.
double XsReal
Defines the floating point type used by the Xsens libraries.
static XsReal signed_cast(uint16_t v)
helper for XsDataPacket_convertRawVector
A vector containing 3 short values.
A container for GNSS Satellite Information.
void XsDataPacket_setCalibratedData(XsDataPacket *thisPtr, const XsCalibratedData *data)
Add/update calibrated Data for the item.
void XsDataPacket_setSampleTimeFine(XsDataPacket *thisPtr, uint32_t counter)
Add/update sample tine fine data for the item.
int XsDataPacket_empty(const XsDataPacket *thisPtr)
Returns whether the datapacket is empty.
XsVector * XsDataPacket_latitudeLongitude(const XsDataPacket *thisPtr, XsVector *returnVal)
The position latitude longitude component of a data item.
@ XDI_DataFormatMask
Mask for extracting just the data format /sa XDI_SubFormat.
@ XHI_Unknown
Used as uninitialized or unknown side.
struct XSNOEXPORT DataPacketPrivate
void XsQuaternion_multiply(const XsQuaternion *left, const XsQuaternion *right, XsQuaternion *dest)
Multiply left quaternion with right quaternion and put the result in dest. The parameters may point t...
uint32_t XsDataPacket_gnssPvtPulse(const XsDataPacket *thisPtr)
Returns the timestamp of a PVT Pulse.
XsGloveData * XsDataPacket_gloveData(const XsDataPacket *thisPtr, XsGloveData *returnVal, XsHandId hand)
Return the glove data component of a data item.
static void removeAllOrientations(XsDataPacket *thisPtr)
Removes all orientations from the datapacket.
void XsDataPacket_copy(XsDataPacket *copy, XsDataPacket const *src)
Copy the XsDataPacket to copy.
void XsDataPacket_setOrientationIncrement(XsDataPacket *thisPtr, const XsQuaternion *quat)
Add/update delta quaternion data for the item.
void XsDataPacket_setGnssAge(XsDataPacket *thisPtr, uint8_t age)
Sets or updates the GnssAge value in the datapacket.
XsSnapshot * XsDataPacket_fullSnapshot(const XsDataPacket *thisPtr, XsSnapshot *returnVal)
Returns the Full Snapshot part of the XsDataPacket.
XsEuler * XsDataPacket_orientationEuler(const XsDataPacket *thisPtr, XsEuler *returnVal, XsDataIdentifier coordinateSystem)
Return the orientation component of a data item as a euler angles.
@ XDI_SubFormatDouble
Double format.
int XsDataPacket_containsPressure(const XsDataPacket *thisPtr)
Check if data item contains pressure data.
int XsDataPacket_containsPressureAge(const XsDataPacket *thisPtr)
Check if data item contains pressure age data.
struct XSNOEXPORT DataPacketPrivate * d
uint32_t XsDataPacket_status(const XsDataPacket *thisPtr)
The status component of a data item.
@ XDI_RawSigned
Tracker produces signed raw values, usually fixed behavior.
@ XDI_Temperature
Temperature.
@ XDI_RawBlob
Raw blob data.
XsTriggerIndicationData * XsDataPacket_triggerIndication(const XsDataPacket *thisPtr, XsDataIdentifier triggerId, XsTriggerIndicationData *returnVal)
Returns the trigger indication data of a packet If the packet does not contain the requested data,...
int XsDataPacket_containsRateOfTurnHR(const XsDataPacket *thisPtr)
Check if data item contains RateOfTurnHR.
void XsDataPacket_setAccelerationHR(XsDataPacket *thisPtr, const XsVector *vec)
Add/update the AccelerationHR for the item.
@ XDI_GloveSnapshotRight
Glove Snapshot for Right Hand.
size_t XsSize
XsSize must be unsigned number!
A class that represents a fixed size (3x3) matrix.
uint8_t m_pressureAge
Age of pressure data in samples.
int XsDataPacket_containsVelocityIncrement(const XsDataPacket *thisPtr)
Check if data item contains delta velocity data.
XsVector * XsDataPacket_velocityIncrement(const XsDataPacket *thisPtr, XsVector *returnVal)
The delta velocity (deltaV) component of a data item.
void genericSet(XsDataPacket *thisPtr, T const *val, XsDataIdentifier id)
int XsDataPacket_containsRssi(const XsDataPacket *thisPtr)
Returns whether the datapacket contains an rssi value.
void XsDataPacket_setSampleTime64(XsDataPacket *thisPtr, uint64_t counter)
Add/update sample tine coarse data for the item.
T * genericGet(const XsDataPacket *thisPtr, T *returnVal, XsDataIdentifier id, T const &failValue=T())
void XsDataPacket_setCorrectedMagneticField(XsDataPacket *thisPtr, const XsVector *vec)
Add/update corrected magnetometer data for the item (ICC result).
@ XHI_LeftHand
The Left Hand.
void XsDataPacket_setRawBlob(XsDataPacket *thisPtr, const XsByteArray *data)
Sets the raw blob part of the XsDataPacket.
int XsDataPacket_containsCalibratedGyroscopeData(const XsDataPacket *thisPtr)
Check if data item contains calibrated gyroscope data.
double m_pressure
Pressure in Pascal.
XsVector * XsDataPacket_calibratedAcceleration(const XsDataPacket *thisPtr, XsVector *returnVal)
The calibrated accelerometer component of a data item.
void XsDataPacket_setPacketCounter8(XsDataPacket *thisPtr, uint8_t counter)
Add/update 8 bit packet counter data for the item.
int XsDataPacket_containsSampleTimeFine(const XsDataPacket *thisPtr)
Check if data item XsDataPacket_contains a sample time fine.
XsVector * XsDataPacket_calibratedMagneticField(const XsDataPacket *thisPtr, XsVector *returnVal)
The calibrated magnetometer component of a data item.
@ XDI_CoordSysMask
Mask for the coordinate system part of the orientation data identifier.
XsUShortVector * XsDataPacket_rawGyroscopeData(const XsDataPacket *thisPtr, XsUShortVector *returnVal)
The raw gyroscope component of a data item.
Structure for storing a single message.
int XsDataPacket_containsSampleTimeCoarse(const XsDataPacket *thisPtr)
Check if data item XsDataPacket_contains a sample time coarse.
@ XDI_DeltaQ
DeltaQ SDI data.
@ XDI_SubFormatMask
Determines, float, fp12.20, fp16.32, double output... (where applicable)
int XsDataPacket_itemCount(const XsDataPacket *thisPtr)
Returns the number of individual items in the XsDataPacket.
Contains an Xsens device ID and provides operations for determining the type of device.
void XsDataPacket_setRawGnssSatInfo(XsDataPacket *thisPtr, const XsRawGnssSatInfo *data)
Sets or updates the RawGnssSatInfo value in the datapacket.
@ XDI_FreeAcceleration
Free acceleration output in m/s2.
Container for combined calibrated measurement data from accelerometers, gyroscopes and magnetometers.
int XsDataPacket_containsDetailedStatus(const XsDataPacket *thisPtr)
Check if data item contains detailed status data.
XsDeviceId m_deviceId
The device Id to which the message belongs.
XsAnalogInData * XsDataPacket_analogIn1Data(const XsDataPacket *thisPtr, XsAnalogInData *returnVal)
The analog in 1 component of a data item.
static XsReal unsigned_cast(uint16_t v)
helper for XsDataPacket_convertRawVector
void XsDataPacket_setUtcTime(XsDataPacket *thisPtr, const XsTimeInfo *data)
Add/update utc time data for the item.
double XsDataPacket_altitudeMsl(const XsDataPacket *thisPtr)
The position altitude above MSL component of a data item.
uint16_t XsDataPacket_rawTemperature(const XsDataPacket *thisPtr)
The raw temperature component of a data item.
XsVector * XsDataPacket_rawAccelerationConverted(const XsDataPacket *thisPtr, XsVector *returnVal)
The raw accelerometer component of a data item, converted to floating point values.
int XsDataPacket_privateCount()
Returns the number of private data items for all XsDataPacket combined currently in memory.
void XsDataPacket_setLatitudeLongitude(XsDataPacket *thisPtr, const XsVector *data)
Add/update position latitude longitude data for the item.
Container for raw sensor measurement data.
@ XDI_RetransmissionFlag
Bit indicating if the snapshot if from a retransmission.
int XsDataPacket_containsOrientation(const XsDataPacket *thisPtr)
Check if data item contains orientation Data of any kind.
@ XDI_RawDeltaQ
Raw deltaQ SDI data.
void XsDataPacket_setRawGyroscopeData(XsDataPacket *thisPtr, const XsUShortVector *vec)
Add/update raw gyroscope data for the item.
static void set(XsDataPacket *thisPtr, T val, XsDataIdentifier id)
A container for Snapshot data.
XsVector3 m_mag
Magnetometer data.
void XsDataPacket_setRawGnssPvtData(XsDataPacket *thisPtr, const XsRawGnssPvtData *r)
Sets or updates the RawGnssPvtData value in the datapacket.
void setRawVector(XsDataPacket *thisPtr, const XsUShortVector *vec, XsDataIdentifier id, XsUShortVector XsScrData::*field)
@ XDI_DeltaV
DeltaV SDI data output.
XsVector * XsDataPacket_rawGyroscopeTemperatureDataConverted(const XsDataPacket *thisPtr, XsVector *returnVal)
The raw gyroscope temperature component of a data item, converted to floating point values.
void XsDataPacket_setFrameRange(XsDataPacket *thisPtr, const XsRange *r)
Sets or updates the frame range in the datapacket.
void XsDataPacket_setVelocityIncrement(XsDataPacket *thisPtr, const XsVector *vec)
Add/update delta velocity data for the item.
@ XDI_AltitudeMsl
Altitude at Mean Sea Level.
void XsEuler_fromQuaternion(XsEuler *thisPtr, const XsQuaternion *quat)
Get an euler angle representation of the quaternion.
uint64_t XsDataPacket_sampleTime64(const XsDataPacket *thisPtr)
Return the full 64-bit sample time of a packet, combined from the fine and coarse sample times or rec...
XsDataIdentifier XsDataPacket_coordinateSystemOrientation(const XsDataPacket *thisPtr)
Returns the coordinate system of the first orientation data of any kind in the packet.
int XsDataPacket_containsAnalogIn1Data(const XsDataPacket *thisPtr)
Check if data item contains analog in 1 data.
XsVector3 m_acc
Accelerometer data.
@ XDI_FullSnapshot
Full snapshot.
int XsDataPacket_isAwindaSnapshotARetransmission(const XsDataPacket *thisPtr)
Returns true if the contained Awinda Snapshot is marked as a retransmission.
int XsDataPacket_containsRawMagneticField(const XsDataPacket *thisPtr)
Check if data item contains raw magnetometer data.
void XsMatrix_fromQuaternion(XsMatrix *thisPtr, const XsQuaternion *quat)
Get an orientation matrix representation of the quaternion.
XsVector * XsDataPacket_rawMagneticFieldConverted(const XsDataPacket *thisPtr, XsVector *returnVal)
The raw magnetometer component of a data item, converted to floating point values.
uint16_t XsDataPacket_packetCounter(const XsDataPacket *thisPtr)
Return the packet/frame counter of a packet.
XsRange * XsDataPacket_frameRange(const XsDataPacket *thisPtr, XsRange *returnVal)
Returns the frame range contained in the datapacket.
int XsDataPacket_containsSampleTime64(const XsDataPacket *thisPtr)
Check if data item XsDataPacket contains a full 64-bit sample time.
void XsDataPacket_setRawAcceleration(XsDataPacket *thisPtr, const XsUShortVector *vec)
Add/update raw accelerometer data for the item.
Contains Euler Angle data and conversion from Quaternion.
@ XDI_GloveSnapshotLeft
Glove Snapshot for Left Hand.
XsTimeStamp m_etos
Estimated Time of Sampling (live packets only)
@ XDI_AltitudeEllipsoid
Altitude at ellipsoid.
XsDataIdentifier XsDataPacket_velocityIdentifier(const XsDataPacket *thisPtr)
Returns the data identifier of the first velocity data of any kind in the packet.
@ XDI_Acceleration
Acceleration output in m/s2.
int XsDataPacket_containsPacketCounter8(const XsDataPacket *thisPtr)
Check if data item contains an 8 bit packet counter.
static XsVector * convertedVector(const XsDataPacket *thisPtr, XsVector *returnVal, XsDataIdentifier id, XsUShortVector XsScrData::*field)
void XsDataPacket_setStoredLocationId(XsDataPacket *thisPtr, uint16_t data)
Add or update location ID for the item.
@ XDI_SampleTimeFine
Sample Time Fine.
int XsDataPacket_containsStatus(const XsDataPacket *thisPtr)
Check if data item contains legacy status data.
@ XDI_RawAccGyrMagTemp
Raw acceleration, gyroscope, magnetometer and temperature data.
int XsDataPacket_containsCalibratedMagneticField(const XsDataPacket *thisPtr)
Check if data item contains calibrated magnetometer data.
@ XDI_MagneticFieldCorrected
Corrected Magnetic field data in a.u. (ICC result)
@ XDI_PositionEcef
Position in earth-centered, earth-fixed format.
A class that represents a fixed size (3) vector.
XsVector * XsDataPacket_correctedMagneticField(const XsDataPacket *thisPtr, XsVector *returnVal)
The corrected magnetometer component of a data item (ICC result).
XsSnapshot * XsDataPacket_awindaSnapshot(const XsDataPacket *thisPtr, XsSnapshot *returnVal)
Returns the Awinda Snapshot part of the XsDataPacket.
double XsDataPacket_temperature(const XsDataPacket *thisPtr)
The temperature component of a data item.
void XsDataPacket_setRssi(XsDataPacket *thisPtr, int r)
Sets or updates the rssi value in the datapacket.
uint8_t XsDataPacket_gnssAge(const XsDataPacket *thisPtr)
Returns the age of the GNSS data (in samples)
int XsDataPacket_containsStoredLocationId(const XsDataPacket *thisPtr)
Return non-zero if this data packet stores a location ID.
@ XDI_Rssi
Rssi information.
void XsDataPacket_setOrientationMatrix(XsDataPacket *thisPtr, const XsMatrix *data, XsDataIdentifier coordinateSystem)
Add/update quaternion orientation Data for the item.
XsTimeStamp m_toa
Time Of Arrival (live packets only)
int XsDataPacket_containsCalibratedAcceleration(const XsDataPacket *thisPtr)
Check if data item contains calibrated accelerometer data.
@ XDI_GnssAge
Gnss age from the GNSS receiver.
@ XDI_RawDeltaV
Raw deltaV SDI data.
void XsDataPacket_setSampleTimeCoarse(XsDataPacket *thisPtr, uint32_t counter)
Add/update sample tine coarse data for the item.
void XsDataPacket_setAltitudeMsl(XsDataPacket *thisPtr, double data)
Add/update altitude above MSL data for the item.
int XsDataPacket_containsTemperature(const XsDataPacket *thisPtr)
Check if data item contains temperature data.
XsVector * XsDataPacket_velocity(const XsDataPacket *thisPtr, XsVector *returnVal, XsDataIdentifier coordinateSystem)
The velocity NWU component of a data item.
void XsDataPacket_setStatus(XsDataPacket *thisPtr, uint32_t data)
Add/update status data for the item.
@ XDI_CoordSysNed
North East Down orientation output.
@ XDI_AwindaSnapshot
Awinda type snapshot.
void XsGloveData_destruct(struct XsGloveData *thisPtr)
Destruct an XsGloveData object.
void XsDataPacket_setGloveSnapshot(XsDataPacket *thisPtr, XsGloveSnapshot const *data, int retransmission, XsHandId hand)
Sets the Glove Snapshot part of the XsDataPacket.
int XsDataPacket_containsUtcTime(const XsDataPacket *thisPtr)
Check if data item contains utc time data.
@ XDI_PressureAge
Age of a pressure sample, in packet counts.
XsDataIdentifier XsDataPacket_orientationIdentifier(const XsDataPacket *thisPtr)
Returns the data identifier of the first orientation data of any kind in the packet.
XsRawGnssSatInfo * XsDataPacket_rawGnssSatInfo(const XsDataPacket *thisPtr, XsRawGnssSatInfo *returnVal)
Returns a struct with RawGnssSatInfo.
@ XDI_StatusWord
Status word.
void XsQuaternion_fromEulerAngles(XsQuaternion *thisPtr, const XsEuler *src)
Create a quaternion representation from euler angles.
void XsDataPacket_setPacketCounter(XsDataPacket *thisPtr, uint16_t counter)
Add/update packet counter data for the item.
int XsDataPacket_containsAltitude(const XsDataPacket *thisPtr)
Check if data item contains position altitude data.
@ XDI_EulerAngles
Orientation in euler angles format.
@ XDI_RawGyroTemp
Raw gyroscope and temperature data.
@ XDI_AccelerationHR
AccelerationHR output.
int XsDataPacket_containsRawGyroscopeData(const XsDataPacket *thisPtr)
Check if data item contains raw gyroscope data.
@ XDI_VelocityXYZ
Velocity in XYZ coordinate frame.
unsigned short m_data[3]
vector component storage
uint16_t XsMessage_getDataShort(XsMessage const *thisPtr, XsSize offset)
Returns the short value at offset in the data of the message.
A structure for storing Time values.