QtFit  0.1
Internal library development documentation
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
RecordMessagePrivate Class Reference
Inheritance diagram for RecordMessagePrivate:
[legend]
Collaboration diagram for RecordMessagePrivate:
[legend]

Public Member Functions

 RecordMessagePrivate (RecordMessage *const q)
 
virtual ~RecordMessagePrivate ()
 
- Public Member Functions inherited from AbstractDataMessagePrivate
 AbstractDataMessagePrivate (AbstractDataMessage *const q)
 
virtual ~AbstractDataMessagePrivate ()
 
bool setFields (const DataDefinition *const defn, const QByteArray &record)
 

Public Attributes

DateTime timestamp
 The RecordMessage FIT message's timestamp field.
 
qint32 positionLat
 The RecordMessage FIT message's positionLat field.
 
qint32 positionLong
 The RecordMessage FIT message's positionLong field.
 
quint16 altitude
 The RecordMessage FIT message's altitude field.
 
quint8 heartRate
 The RecordMessage FIT message's heartRate field.
 
quint8 cadence
 The RecordMessage FIT message's cadence field.
 
quint32 distance
 The RecordMessage FIT message's distance field.
 
quint16 speed
 The RecordMessage FIT message's speed field.
 
quint16 power
 The RecordMessage FIT message's power field.
 
quint8 compressedSpeedDistance
 The RecordMessage FIT message's compressedSpeedDistance field.
 
qint16 grade
 The RecordMessage FIT message's grade field.
 
quint8 resistance
 The RecordMessage FIT message's resistance field. More...
 
qint32 timeFromCourse
 The RecordMessage FIT message's timeFromCourse field.
 
quint8 cycleLength
 The RecordMessage FIT message's cycleLength field.
 
qint8 temperature
 The RecordMessage FIT message's temperature field.
 
quint8 speed1s
 The RecordMessage FIT message's speed1s field. More...
 
quint8 cycles
 The RecordMessage FIT message's cycles field.
 
quint32 totalCycles
 The RecordMessage FIT message's totalCycles field.
 
quint16 compressedAccumulatedPower
 The RecordMessage FIT message's compressedAccumulatedPower field.
 
quint32 accumulatedPower
 The RecordMessage FIT message's accumulatedPower field.
 
LeftRightBalance leftRightBalance
 The RecordMessage FIT message's leftRightBalance field.
 
quint8 gpsAccuracy
 The RecordMessage FIT message's gpsAccuracy field.
 
qint16 verticalSpeed
 The RecordMessage FIT message's verticalSpeed field.
 
quint16 calories
 The RecordMessage FIT message's calories field.
 
quint16 verticalOscillation
 The RecordMessage FIT message's verticalOscillation field.
 
quint16 stanceTimePercent
 The RecordMessage FIT message's stanceTimePercent field.
 
quint16 stanceTime
 The RecordMessage FIT message's stanceTime field.
 
ActivityType activityType
 The RecordMessage FIT message's activityType field.
 
quint8 leftTorqueEffectiveness
 The RecordMessage FIT message's leftTorqueEffectiveness field.
 
quint8 rightTorqueEffectiveness
 The RecordMessage FIT message's rightTorqueEffectiveness field.
 
quint8 leftPedalSmoothness
 The RecordMessage FIT message's leftPedalSmoothness field.
 
quint8 rightPedalSmoothness
 The RecordMessage FIT message's rightPedalSmoothness field.
 
quint8 combinedPedalSmoothness
 The RecordMessage FIT message's combinedPedalSmoothness field.
 
quint8 time128
 The RecordMessage FIT message's time128 field.
 
StrokeType strokeType
 The RecordMessage FIT message's strokeType field.
 
quint8 zone
 The RecordMessage FIT message's zone field.
 
quint16 ballSpeed
 The RecordMessage FIT message's ballSpeed field.
 
quint16 cadence256
 The RecordMessage FIT message's cadence256 field. More...
 
quint8 fractionalCadence
 The RecordMessage FIT message's fractionalCadence field.
 
quint16 totalHemoglobinConc
 The RecordMessage FIT message's totalHemoglobinConc field. More...
 
quint16 totalHemoglobinConcMin
 The RecordMessage FIT message's totalHemoglobinConcMin field. More...
 
quint16 totalHemoglobinConcMax
 The RecordMessage FIT message's totalHemoglobinConcMax field. More...
 
quint16 saturatedHemoglobinPercent
 The RecordMessage FIT message's saturatedHemoglobinPercent field. More...
 
quint16 saturatedHemoglobinPercentMin
 The RecordMessage FIT message's saturatedHemoglobinPercentMin field. More...
 
quint16 saturatedHemoglobinPercentMax
 The RecordMessage FIT message's saturatedHemoglobinPercentMax field. More...
 
DeviceIndex deviceIndex
 The RecordMessage FIT message's deviceIndex field.
 
qint8 leftPco
 The RecordMessage FIT message's leftPco field. More...
 
qint8 rightPco
 The RecordMessage FIT message's rightPco field. More...
 
quint8 leftPowerPhase
 The RecordMessage FIT message's leftPowerPhase field. More...
 
quint8 leftPowerPhasePeak
 The RecordMessage FIT message's leftPowerPhasePeak field. More...
 
quint8 rightPowerPhase
 The RecordMessage FIT message's rightPowerPhase field. More...
 
quint8 rightPowerPhasePeak
 The RecordMessage FIT message's rightPowerPhasePeak field. More...
 
quint32 enhancedSpeed
 The RecordMessage FIT message's enhancedSpeed field.
 
quint32 enhancedAltitude
 The RecordMessage FIT message's enhancedAltitude field.
 
quint8 batterySoc
 The RecordMessage FIT message's batterySoc field. More...
 
quint16 motorPower
 The RecordMessage FIT message's motorPower field. More...
 
quint16 verticalRatio
 The RecordMessage FIT message's verticalRatio field.
 
quint16 stanceTimeBalance
 The RecordMessage FIT message's stanceTimeBalance field.
 
quint16 stepLength
 The RecordMessage FIT message's stepLength field.
 
quint32 absolutePressure
 The RecordMessage FIT message's absolutePressure field. More...
 
quint32 depth
 The RecordMessage FIT message's depth field. More...
 
quint32 nextStopDepth
 The RecordMessage FIT message's nextStopDepth field. More...
 
quint32 nextStopTime
 The RecordMessage FIT message's nextStopTime field.
 
quint32 timeToSurface
 The RecordMessage FIT message's timeToSurface field.
 
quint32 ndlTime
 The RecordMessage FIT message's ndlTime field.
 
quint8 cnsLoad
 The RecordMessage FIT message's cnsLoad field.
 
quint16 n2Load
 The RecordMessage FIT message's n2Load field.
 
float grit
 The RecordMessage FIT message's grit field. More...
 
float flow
 The RecordMessage FIT message's flow field. More...
 
quint16 ebikeTravelRange
 The RecordMessage FIT message's ebikeTravelRange field.
 
quint8 ebikeBatteryLevel
 The RecordMessage FIT message's ebikeBatteryLevel field.
 
quint8 ebikeAssistMode
 The RecordMessage FIT message's ebikeAssistMode field.
 
quint8 ebikeAssistLevelPercent
 The RecordMessage FIT message's ebikeAssistLevelPercent field.
 
quint16 coreTemperature
 The RecordMessage FIT message's coreTemperature field.
 
- Public Attributes inherited from AbstractDataMessagePrivate
MesgNum globalMessageNumber
 FIT Globla Message Number for this FIT Data Message.
 

Protected Member Functions

bool setField (const int fieldId, const QByteArray &data, const FitBaseType baseType, const bool bigEndian) override
 
- Protected Member Functions inherited from AbstractDataMessagePrivate
bool verify (const QByteArray &data, const FitBaseType actualType, const int expectedSize, const FitBaseType expectedType, const char *messageFieldName)
 

Additional Inherited Members

- Protected Attributes inherited from AbstractDataMessagePrivate
AbstractDataMessage *const q_ptr
 Internal q-pointer.
 

Detailed Description

The RecordMessagePrivate class provides private implementation for the RecordMessage.

See also
RecordMessage

Definition at line 38 of file recordmessage_p.h.

Constructor & Destructor Documentation

◆ RecordMessagePrivate()

RecordMessagePrivate::RecordMessagePrivate ( RecordMessage *const  q)
explicit

Constructs a RecordMessagePrivate object with public implementation q.

Parameters
qPointer to public implementaton.

Definition at line 1689 of file recordmessage.cpp.

1691  , timestamp(static_cast<DateTime>(-1))
1692  , positionLat(0x7FFFFFFF)
1693  , positionLong(0x7FFFFFFF)
1694  , altitude(0xFFFF)
1695  , heartRate(0xFF)
1696  , cadence(0xFF)
1697  , distance(0xFFFFFFFF)
1698  , speed(0xFFFF)
1699  , power(0xFFFF)
1700  , compressedSpeedDistance(0xFF)
1701  , grade(0x7FFF)
1702  , resistance(0xFF)
1703  , timeFromCourse(0x7FFFFFFF)
1704  , cycleLength(0xFF)
1705  , temperature(0x7F)
1706  , speed1s(0xFF)
1707  , cycles(0xFF)
1708  , totalCycles(0xFFFFFFFF)
1709  , compressedAccumulatedPower(0xFFFF)
1710  , accumulatedPower(0xFFFFFFFF)
1711  , leftRightBalance(static_cast<LeftRightBalance>(-1))
1712  , gpsAccuracy(0xFF)
1713  , verticalSpeed(0x7FFF)
1714  , calories(0xFFFF)
1715  , verticalOscillation(0xFFFF)
1716  , stanceTimePercent(0xFFFF)
1717  , stanceTime(0xFFFF)
1718  , activityType(static_cast<ActivityType>(-1))
1719  , leftTorqueEffectiveness(0xFF)
1720  , rightTorqueEffectiveness(0xFF)
1721  , leftPedalSmoothness(0xFF)
1722  , rightPedalSmoothness(0xFF)
1723  , combinedPedalSmoothness(0xFF)
1724  , time128(0xFF)
1725  , strokeType(static_cast<StrokeType>(-1))
1726  , zone(0xFF)
1727  , ballSpeed(0xFFFF)
1728  , cadence256(0xFFFF)
1729  , fractionalCadence(0xFF)
1730  , totalHemoglobinConc(0xFFFF)
1731  , totalHemoglobinConcMin(0xFFFF)
1732  , totalHemoglobinConcMax(0xFFFF)
1733  , saturatedHemoglobinPercent(0xFFFF)
1736  , deviceIndex(static_cast<DeviceIndex>(-1))
1737  , leftPco(0x7F)
1738  , rightPco(0x7F)
1739  , leftPowerPhase(0xFF)
1740  , leftPowerPhasePeak(0xFF)
1741  , rightPowerPhase(0xFF)
1742  , rightPowerPhasePeak(0xFF)
1743  , enhancedSpeed(0xFFFFFFFF)
1744  , enhancedAltitude(0xFFFFFFFF)
1745  , batterySoc(0xFF)
1746  , motorPower(0xFFFF)
1747  , verticalRatio(0xFFFF)
1748  , stanceTimeBalance(0xFFFF)
1749  , stepLength(0xFFFF)
1750  , absolutePressure(0xFFFFFFFF)
1751  , depth(0xFFFFFFFF)
1752  , nextStopDepth(0xFFFFFFFF)
1753  , nextStopTime(0xFFFFFFFF)
1754  , timeToSurface(0xFFFFFFFF)
1755  , ndlTime(0xFFFFFFFF)
1756  , cnsLoad(0xFF)
1757  , n2Load(0xFFFF)
1758  , grit(static_cast<float>(-1))
1759  , flow(static_cast<float>(-1))
1760  , ebikeTravelRange(0xFFFF)
1761  , ebikeBatteryLevel(0xFF)
1762  , ebikeAssistMode(0xFF)
1763  , ebikeAssistLevelPercent(0xFF)
1764  , coreTemperature(0xFFFF)
1765 {
1766  globalMessageNumber = MesgNum::Record;
1767 }
MesgNum globalMessageNumber
FIT Globla Message Number for this FIT Data Message.
qint8 rightPco
The RecordMessage FIT message's rightPco field.
quint16 speed
The RecordMessage FIT message's speed field.
quint8 ebikeBatteryLevel
The RecordMessage FIT message's ebikeBatteryLevel field.
quint16 ebikeTravelRange
The RecordMessage FIT message's ebikeTravelRange field.
DateTime timestamp
The RecordMessage FIT message's timestamp field.
quint16 altitude
The RecordMessage FIT message's altitude field.
quint32 depth
The RecordMessage FIT message's depth field.
quint8 heartRate
The RecordMessage FIT message's heartRate field.
DeviceIndex deviceIndex
The RecordMessage FIT message's deviceIndex field.
quint8 fractionalCadence
The RecordMessage FIT message's fractionalCadence field.
quint32 distance
The RecordMessage FIT message's distance field.
quint32 totalCycles
The RecordMessage FIT message's totalCycles field.
quint8 zone
The RecordMessage FIT message's zone field.
quint16 compressedAccumulatedPower
The RecordMessage FIT message's compressedAccumulatedPower field.
quint8 rightTorqueEffectiveness
The RecordMessage FIT message's rightTorqueEffectiveness field.
quint8 rightPowerPhase
The RecordMessage FIT message's rightPowerPhase field.
quint16 stanceTime
The RecordMessage FIT message's stanceTime field.
quint8 leftTorqueEffectiveness
The RecordMessage FIT message's leftTorqueEffectiveness field.
quint8 cycles
The RecordMessage FIT message's cycles field.
quint8 batterySoc
The RecordMessage FIT message's batterySoc field.
quint16 cadence256
The RecordMessage FIT message's cadence256 field.
quint16 coreTemperature
The RecordMessage FIT message's coreTemperature field.
quint32 accumulatedPower
The RecordMessage FIT message's accumulatedPower field.
qint8 leftPco
The RecordMessage FIT message's leftPco field.
quint8 rightPedalSmoothness
The RecordMessage FIT message's rightPedalSmoothness field.
quint16 totalHemoglobinConcMin
The RecordMessage FIT message's totalHemoglobinConcMin field.
quint16 stanceTimeBalance
The RecordMessage FIT message's stanceTimeBalance field.
qint32 timeFromCourse
The RecordMessage FIT message's timeFromCourse field.
quint32 enhancedAltitude
The RecordMessage FIT message's enhancedAltitude field.
quint16 ballSpeed
The RecordMessage FIT message's ballSpeed field.
qint16 verticalSpeed
The RecordMessage FIT message's verticalSpeed field.
quint16 stepLength
The RecordMessage FIT message's stepLength field.
qint32 positionLong
The RecordMessage FIT message's positionLong field.
quint8 combinedPedalSmoothness
The RecordMessage FIT message's combinedPedalSmoothness field.
float flow
The RecordMessage FIT message's flow field.
qint16 grade
The RecordMessage FIT message's grade field.
quint16 saturatedHemoglobinPercent
The RecordMessage FIT message's saturatedHemoglobinPercent field.
quint8 ebikeAssistMode
The RecordMessage FIT message's ebikeAssistMode field.
quint8 time128
The RecordMessage FIT message's time128 field.
StrokeType strokeType
The RecordMessage FIT message's strokeType field.
quint8 compressedSpeedDistance
The RecordMessage FIT message's compressedSpeedDistance field.
quint8 rightPowerPhasePeak
The RecordMessage FIT message's rightPowerPhasePeak field.
quint32 ndlTime
The RecordMessage FIT message's ndlTime field.
quint32 nextStopTime
The RecordMessage FIT message's nextStopTime field.
quint32 absolutePressure
The RecordMessage FIT message's absolutePressure field.
quint16 n2Load
The RecordMessage FIT message's n2Load field.
quint16 calories
The RecordMessage FIT message's calories field.
quint8 gpsAccuracy
The RecordMessage FIT message's gpsAccuracy field.
quint32 timeToSurface
The RecordMessage FIT message's timeToSurface field.
quint8 resistance
The RecordMessage FIT message's resistance field.
quint8 leftPowerPhase
The RecordMessage FIT message's leftPowerPhase field.
quint16 totalHemoglobinConc
The RecordMessage FIT message's totalHemoglobinConc field.
quint32 nextStopDepth
The RecordMessage FIT message's nextStopDepth field.
quint16 saturatedHemoglobinPercentMax
The RecordMessage FIT message's saturatedHemoglobinPercentMax field.
qint32 positionLat
The RecordMessage FIT message's positionLat field.
quint8 cadence
The RecordMessage FIT message's cadence field.
quint8 speed1s
The RecordMessage FIT message's speed1s field.
qint8 temperature
The RecordMessage FIT message's temperature field.
quint16 verticalOscillation
The RecordMessage FIT message's verticalOscillation field.
quint16 verticalRatio
The RecordMessage FIT message's verticalRatio field.
quint8 ebikeAssistLevelPercent
The RecordMessage FIT message's ebikeAssistLevelPercent field.
quint16 totalHemoglobinConcMax
The RecordMessage FIT message's totalHemoglobinConcMax field.
ActivityType activityType
The RecordMessage FIT message's activityType field.
quint16 power
The RecordMessage FIT message's power field.
quint8 cnsLoad
The RecordMessage FIT message's cnsLoad field.
quint8 leftPowerPhasePeak
The RecordMessage FIT message's leftPowerPhasePeak field.
quint8 cycleLength
The RecordMessage FIT message's cycleLength field.
quint16 saturatedHemoglobinPercentMin
The RecordMessage FIT message's saturatedHemoglobinPercentMin field.
quint32 enhancedSpeed
The RecordMessage FIT message's enhancedSpeed field.
quint16 stanceTimePercent
The RecordMessage FIT message's stanceTimePercent field.
quint8 leftPedalSmoothness
The RecordMessage FIT message's leftPedalSmoothness field.
quint16 motorPower
The RecordMessage FIT message's motorPower field.
float grit
The RecordMessage FIT message's grit field.
LeftRightBalance leftRightBalance
The RecordMessage FIT message's leftRightBalance field.
LeftRightBalance
Garmin FIT LeftRightBalance type.
Definition: types.h:2363
ActivityType
Garmin FIT ActivityType type.
Definition: types.h:2281
DeviceIndex
Garmin FIT DeviceIndex type.
Definition: types.h:278
StrokeType
Garmin FIT StrokeType type.
Definition: types.h:2653
DateTime
Seconds since UTC 00:00 Dec 31 1989.
Definition: types.h:237

References AbstractDataMessagePrivate::globalMessageNumber.

◆ ~RecordMessagePrivate()

RecordMessagePrivate::~RecordMessagePrivate ( )
virtual

Destroys the RecordMessagePrivate object.

Definition at line 1774 of file recordmessage.cpp.

1775 {
1776 
1777 }

Member Function Documentation

◆ setField()

bool RecordMessagePrivate::setField ( const int  fieldId,
const QByteArray &  data,
const FitBaseType  baseType,
const bool  bigEndian 
)
overrideprotectedvirtual

Sets the value of the fieldId field.

Derived classes must implement this method to extract the baseType value from data, and assign the extracted value the fieldId field.

Parameters
fieldIdThe field number within the given FIT data message.
dataThe raw data to extract the field value from.
baseTypeThe FIT base type for the field.
bigEndianWhether or not multibyte values in record are big-endian.
Returns
true if the field was set, or safely ignored; false otherwise.

Implements AbstractDataMessagePrivate.

Definition at line 1779 of file recordmessage.cpp.

1781 {
1782  switch (fieldId) {
1783  case 253: // See Profile.xlsx::Messages:record.timestamp
1784  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.timestamp")) return false;
1785  this->timestamp = static_cast<DateTime>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
1786  break;
1787  case 0: // See Profile.xlsx::Messages:record.positionLat
1788  if (!verify(data, baseType, 4, FitBaseType::Sint32, "record.positionLat")) return false;
1789  this->positionLat = static_cast<qint32>(bigEndian ? qFromBigEndian< qint32>(data) : qFromLittleEndian< qint32>(data));
1790  break;
1791  case 1: // See Profile.xlsx::Messages:record.positionLong
1792  if (!verify(data, baseType, 4, FitBaseType::Sint32, "record.positionLong")) return false;
1793  this->positionLong = static_cast<qint32>(bigEndian ? qFromBigEndian< qint32>(data) : qFromLittleEndian< qint32>(data));
1794  break;
1795  case 2: // See Profile.xlsx::Messages:record.altitude
1796  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.altitude")) return false;
1797  this->altitude = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1798  break;
1799  case 3: // See Profile.xlsx::Messages:record.heartRate
1800  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.heartRate")) return false;
1801  this->heartRate = static_cast<quint8>(data.at(0));
1802  break;
1803  case 4: // See Profile.xlsx::Messages:record.cadence
1804  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.cadence")) return false;
1805  this->cadence = static_cast<quint8>(data.at(0));
1806  break;
1807  case 5: // See Profile.xlsx::Messages:record.distance
1808  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.distance")) return false;
1809  this->distance = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
1810  break;
1811  case 6: // See Profile.xlsx::Messages:record.speed
1812  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.speed")) return false;
1813  this->speed = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1814  break;
1815  case 7: // See Profile.xlsx::Messages:record.power
1816  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.power")) return false;
1817  this->power = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1818  break;
1819  case 8: // See Profile.xlsx::Messages:record.compressedSpeedDistance
1820  if (!verify(data, baseType, 1, FitBaseType::Byte, "record.compressedSpeedDistance")) return false;
1821  this->compressedSpeedDistance = static_cast<quint8>(data.at(0));
1822  break;
1823  case 9: // See Profile.xlsx::Messages:record.grade
1824  if (!verify(data, baseType, 2, FitBaseType::Sint16, "record.grade")) return false;
1825  this->grade = static_cast<qint16>(bigEndian ? qFromBigEndian< qint16>(data) : qFromLittleEndian< qint16>(data));
1826  break;
1827  case 10: // See Profile.xlsx::Messages:record.resistance
1828  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.resistance")) return false;
1829  this->resistance = static_cast<quint8>(data.at(0));
1830  break;
1831  case 11: // See Profile.xlsx::Messages:record.timeFromCourse
1832  if (!verify(data, baseType, 4, FitBaseType::Sint32, "record.timeFromCourse")) return false;
1833  this->timeFromCourse = static_cast<qint32>(bigEndian ? qFromBigEndian< qint32>(data) : qFromLittleEndian< qint32>(data));
1834  break;
1835  case 12: // See Profile.xlsx::Messages:record.cycleLength
1836  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.cycleLength")) return false;
1837  this->cycleLength = static_cast<quint8>(data.at(0));
1838  break;
1839  case 13: // See Profile.xlsx::Messages:record.temperature
1840  if (!verify(data, baseType, 1, FitBaseType::Sint8, "record.temperature")) return false;
1841  this->temperature = static_cast<qint8>(data.at(0));
1842  break;
1843  case 17: // See Profile.xlsx::Messages:record.speed1s
1844  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.speed1s")) return false;
1845  this->speed1s = static_cast<quint8>(data.at(0));
1846  break;
1847  case 18: // See Profile.xlsx::Messages:record.cycles
1848  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.cycles")) return false;
1849  this->cycles = static_cast<quint8>(data.at(0));
1850  break;
1851  case 19: // See Profile.xlsx::Messages:record.totalCycles
1852  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.totalCycles")) return false;
1853  this->totalCycles = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
1854  break;
1855  case 28: // See Profile.xlsx::Messages:record.compressedAccumulatedPower
1856  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.compressedAccumulatedPower")) return false;
1857  this->compressedAccumulatedPower = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1858  break;
1859  case 29: // See Profile.xlsx::Messages:record.accumulatedPower
1860  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.accumulatedPower")) return false;
1861  this->accumulatedPower = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
1862  break;
1863  case 30: // See Profile.xlsx::Messages:record.leftRightBalance
1864  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.leftRightBalance")) return false;
1865  this->leftRightBalance = static_cast<LeftRightBalance>(data.at(0));
1866  break;
1867  case 31: // See Profile.xlsx::Messages:record.gpsAccuracy
1868  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.gpsAccuracy")) return false;
1869  this->gpsAccuracy = static_cast<quint8>(data.at(0));
1870  break;
1871  case 32: // See Profile.xlsx::Messages:record.verticalSpeed
1872  if (!verify(data, baseType, 2, FitBaseType::Sint16, "record.verticalSpeed")) return false;
1873  this->verticalSpeed = static_cast<qint16>(bigEndian ? qFromBigEndian< qint16>(data) : qFromLittleEndian< qint16>(data));
1874  break;
1875  case 33: // See Profile.xlsx::Messages:record.calories
1876  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.calories")) return false;
1877  this->calories = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1878  break;
1879  case 39: // See Profile.xlsx::Messages:record.verticalOscillation
1880  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.verticalOscillation")) return false;
1881  this->verticalOscillation = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1882  break;
1883  case 40: // See Profile.xlsx::Messages:record.stanceTimePercent
1884  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.stanceTimePercent")) return false;
1885  this->stanceTimePercent = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1886  break;
1887  case 41: // See Profile.xlsx::Messages:record.stanceTime
1888  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.stanceTime")) return false;
1889  this->stanceTime = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1890  break;
1891  case 42: // See Profile.xlsx::Messages:record.activityType
1892  if (!verify(data, baseType, 1, FitBaseType::Enum, "record.activityType")) return false;
1893  this->activityType = static_cast<ActivityType>(data.at(0));
1894  break;
1895  case 43: // See Profile.xlsx::Messages:record.leftTorqueEffectiveness
1896  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.leftTorqueEffectiveness")) return false;
1897  this->leftTorqueEffectiveness = static_cast<quint8>(data.at(0));
1898  break;
1899  case 44: // See Profile.xlsx::Messages:record.rightTorqueEffectiveness
1900  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.rightTorqueEffectiveness")) return false;
1901  this->rightTorqueEffectiveness = static_cast<quint8>(data.at(0));
1902  break;
1903  case 45: // See Profile.xlsx::Messages:record.leftPedalSmoothness
1904  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.leftPedalSmoothness")) return false;
1905  this->leftPedalSmoothness = static_cast<quint8>(data.at(0));
1906  break;
1907  case 46: // See Profile.xlsx::Messages:record.rightPedalSmoothness
1908  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.rightPedalSmoothness")) return false;
1909  this->rightPedalSmoothness = static_cast<quint8>(data.at(0));
1910  break;
1911  case 47: // See Profile.xlsx::Messages:record.combinedPedalSmoothness
1912  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.combinedPedalSmoothness")) return false;
1913  this->combinedPedalSmoothness = static_cast<quint8>(data.at(0));
1914  break;
1915  case 48: // See Profile.xlsx::Messages:record.time128
1916  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.time128")) return false;
1917  this->time128 = static_cast<quint8>(data.at(0));
1918  break;
1919  case 49: // See Profile.xlsx::Messages:record.strokeType
1920  if (!verify(data, baseType, 1, FitBaseType::Enum, "record.strokeType")) return false;
1921  this->strokeType = static_cast<StrokeType>(data.at(0));
1922  break;
1923  case 50: // See Profile.xlsx::Messages:record.zone
1924  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.zone")) return false;
1925  this->zone = static_cast<quint8>(data.at(0));
1926  break;
1927  case 51: // See Profile.xlsx::Messages:record.ballSpeed
1928  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.ballSpeed")) return false;
1929  this->ballSpeed = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1930  break;
1931  case 52: // See Profile.xlsx::Messages:record.cadence256
1932  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.cadence256")) return false;
1933  this->cadence256 = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1934  break;
1935  case 53: // See Profile.xlsx::Messages:record.fractionalCadence
1936  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.fractionalCadence")) return false;
1937  this->fractionalCadence = static_cast<quint8>(data.at(0));
1938  break;
1939  case 54: // See Profile.xlsx::Messages:record.totalHemoglobinConc
1940  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.totalHemoglobinConc")) return false;
1941  this->totalHemoglobinConc = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1942  break;
1943  case 55: // See Profile.xlsx::Messages:record.totalHemoglobinConcMin
1944  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.totalHemoglobinConcMin")) return false;
1945  this->totalHemoglobinConcMin = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1946  break;
1947  case 56: // See Profile.xlsx::Messages:record.totalHemoglobinConcMax
1948  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.totalHemoglobinConcMax")) return false;
1949  this->totalHemoglobinConcMax = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1950  break;
1951  case 57: // See Profile.xlsx::Messages:record.saturatedHemoglobinPercent
1952  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.saturatedHemoglobinPercent")) return false;
1953  this->saturatedHemoglobinPercent = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1954  break;
1955  case 58: // See Profile.xlsx::Messages:record.saturatedHemoglobinPercentMin
1956  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.saturatedHemoglobinPercentMin")) return false;
1957  this->saturatedHemoglobinPercentMin = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1958  break;
1959  case 59: // See Profile.xlsx::Messages:record.saturatedHemoglobinPercentMax
1960  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.saturatedHemoglobinPercentMax")) return false;
1961  this->saturatedHemoglobinPercentMax = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
1962  break;
1963  case 62: // See Profile.xlsx::Messages:record.deviceIndex
1964  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.deviceIndex")) return false;
1965  this->deviceIndex = static_cast<DeviceIndex>(data.at(0));
1966  break;
1967  case 67: // See Profile.xlsx::Messages:record.leftPco
1968  if (!verify(data, baseType, 1, FitBaseType::Sint8, "record.leftPco")) return false;
1969  this->leftPco = static_cast<qint8>(data.at(0));
1970  break;
1971  case 68: // See Profile.xlsx::Messages:record.rightPco
1972  if (!verify(data, baseType, 1, FitBaseType::Sint8, "record.rightPco")) return false;
1973  this->rightPco = static_cast<qint8>(data.at(0));
1974  break;
1975  case 69: // See Profile.xlsx::Messages:record.leftPowerPhase
1976  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.leftPowerPhase")) return false;
1977  this->leftPowerPhase = static_cast<quint8>(data.at(0));
1978  break;
1979  case 70: // See Profile.xlsx::Messages:record.leftPowerPhasePeak
1980  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.leftPowerPhasePeak")) return false;
1981  this->leftPowerPhasePeak = static_cast<quint8>(data.at(0));
1982  break;
1983  case 71: // See Profile.xlsx::Messages:record.rightPowerPhase
1984  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.rightPowerPhase")) return false;
1985  this->rightPowerPhase = static_cast<quint8>(data.at(0));
1986  break;
1987  case 72: // See Profile.xlsx::Messages:record.rightPowerPhasePeak
1988  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.rightPowerPhasePeak")) return false;
1989  this->rightPowerPhasePeak = static_cast<quint8>(data.at(0));
1990  break;
1991  case 73: // See Profile.xlsx::Messages:record.enhancedSpeed
1992  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.enhancedSpeed")) return false;
1993  this->enhancedSpeed = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
1994  break;
1995  case 78: // See Profile.xlsx::Messages:record.enhancedAltitude
1996  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.enhancedAltitude")) return false;
1997  this->enhancedAltitude = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
1998  break;
1999  case 81: // See Profile.xlsx::Messages:record.batterySoc
2000  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.batterySoc")) return false;
2001  this->batterySoc = static_cast<quint8>(data.at(0));
2002  break;
2003  case 82: // See Profile.xlsx::Messages:record.motorPower
2004  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.motorPower")) return false;
2005  this->motorPower = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
2006  break;
2007  case 83: // See Profile.xlsx::Messages:record.verticalRatio
2008  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.verticalRatio")) return false;
2009  this->verticalRatio = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
2010  break;
2011  case 84: // See Profile.xlsx::Messages:record.stanceTimeBalance
2012  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.stanceTimeBalance")) return false;
2013  this->stanceTimeBalance = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
2014  break;
2015  case 85: // See Profile.xlsx::Messages:record.stepLength
2016  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.stepLength")) return false;
2017  this->stepLength = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
2018  break;
2019  case 91: // See Profile.xlsx::Messages:record.absolutePressure
2020  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.absolutePressure")) return false;
2021  this->absolutePressure = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
2022  break;
2023  case 92: // See Profile.xlsx::Messages:record.depth
2024  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.depth")) return false;
2025  this->depth = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
2026  break;
2027  case 93: // See Profile.xlsx::Messages:record.nextStopDepth
2028  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.nextStopDepth")) return false;
2029  this->nextStopDepth = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
2030  break;
2031  case 94: // See Profile.xlsx::Messages:record.nextStopTime
2032  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.nextStopTime")) return false;
2033  this->nextStopTime = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
2034  break;
2035  case 95: // See Profile.xlsx::Messages:record.timeToSurface
2036  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.timeToSurface")) return false;
2037  this->timeToSurface = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
2038  break;
2039  case 96: // See Profile.xlsx::Messages:record.ndlTime
2040  if (!verify(data, baseType, 4, FitBaseType::Uint32, "record.ndlTime")) return false;
2041  this->ndlTime = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
2042  break;
2043  case 97: // See Profile.xlsx::Messages:record.cnsLoad
2044  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.cnsLoad")) return false;
2045  this->cnsLoad = static_cast<quint8>(data.at(0));
2046  break;
2047  case 98: // See Profile.xlsx::Messages:record.n2Load
2048  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.n2Load")) return false;
2049  this->n2Load = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
2050  break;
2051  case 114: // See Profile.xlsx::Messages:record.grit
2052  if (!verify(data, baseType, 4, FitBaseType::Float32, "record.grit")) return false;
2053  #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0)
2054  { // Qt's from-endian functions have no float/double specialisations prior to Qt 5.12.
2055  const quint32 localEndian = bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data);
2056  static_assert(sizeof(localEndian) == 4, "src not expected size");
2057  static_assert(sizeof(this->grit) == 4, "src and dst not the same size");
2058  memcpy(&this->grit, &localEndian, data.size());
2059  }
2060  #else
2061  this->grit = static_cast<float>(bigEndian ? qFromBigEndian<float>(data) : qFromLittleEndian<float>(data));
2062  #endif
2063  break;
2064  case 115: // See Profile.xlsx::Messages:record.flow
2065  if (!verify(data, baseType, 4, FitBaseType::Float32, "record.flow")) return false;
2066  #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0)
2067  { // Qt's from-endian functions have no float/double specialisations prior to Qt 5.12.
2068  const quint32 localEndian = bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data);
2069  static_assert(sizeof(localEndian) == 4, "src not expected size");
2070  static_assert(sizeof(this->flow) == 4, "src and dst not the same size");
2071  memcpy(&this->flow, &localEndian, data.size());
2072  }
2073  #else
2074  this->flow = static_cast<float>(bigEndian ? qFromBigEndian<float>(data) : qFromLittleEndian<float>(data));
2075  #endif
2076  break;
2077  case 117: // See Profile.xlsx::Messages:record.ebikeTravelRange
2078  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.ebikeTravelRange")) return false;
2079  this->ebikeTravelRange = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
2080  break;
2081  case 118: // See Profile.xlsx::Messages:record.ebikeBatteryLevel
2082  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.ebikeBatteryLevel")) return false;
2083  this->ebikeBatteryLevel = static_cast<quint8>(data.at(0));
2084  break;
2085  case 119: // See Profile.xlsx::Messages:record.ebikeAssistMode
2086  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.ebikeAssistMode")) return false;
2087  this->ebikeAssistMode = static_cast<quint8>(data.at(0));
2088  break;
2089  case 120: // See Profile.xlsx::Messages:record.ebikeAssistLevelPercent
2090  if (!verify(data, baseType, 1, FitBaseType::Uint8, "record.ebikeAssistLevelPercent")) return false;
2091  this->ebikeAssistLevelPercent = static_cast<quint8>(data.at(0));
2092  break;
2093  case 139: // See Profile.xlsx::Messages:record.coreTemperature
2094  if (!verify(data, baseType, 2, FitBaseType::Uint16, "record.coreTemperature")) return false;
2095  this->coreTemperature = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
2096  break;
2097  default:
2098  qWarning() << "ignoring unknown record message field number" << fieldId << bigEndian;
2099  // Fall through to return true, as its still 'safe' to continue parsing data messages.
2100  }
2101  return true;
2102 }
bool verify(const QByteArray &data, const FitBaseType actualType, const int expectedSize, const FitBaseType expectedType, const char *messageFieldName)

References AbstractDataMessagePrivate::verify().

Here is the call graph for this function:

Member Data Documentation

◆ absolutePressure

quint32 RecordMessagePrivate::absolutePressure

The RecordMessage FIT message's absolutePressure field.

Includes atmospheric pressure

Definition at line 375 of file recordmessage_p.h.

◆ batterySoc

quint8 RecordMessagePrivate::batterySoc

The RecordMessage FIT message's batterySoc field.

lev battery state of charge

Definition at line 346 of file recordmessage_p.h.

◆ cadence256

quint16 RecordMessagePrivate::cadence256

The RecordMessage FIT message's cadence256 field.

Log cadence and fractional cadence for backwards compatability

Definition at line 235 of file recordmessage_p.h.

◆ depth

quint32 RecordMessagePrivate::depth

The RecordMessage FIT message's depth field.

0 if above water

Definition at line 382 of file recordmessage_p.h.

◆ flow

float RecordMessagePrivate::flow

The RecordMessage FIT message's flow field.

The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals.

Definition at line 430 of file recordmessage_p.h.

◆ grit

float RecordMessagePrivate::grit

The RecordMessage FIT message's grit field.

The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes.

Definition at line 422 of file recordmessage_p.h.

◆ leftPco

qint8 RecordMessagePrivate::leftPco

The RecordMessage FIT message's leftPco field.

Left platform center offset

Definition at line 294 of file recordmessage_p.h.

◆ leftPowerPhase

quint8 RecordMessagePrivate::leftPowerPhase

The RecordMessage FIT message's leftPowerPhase field.

Left power phase angles. Data value indexes defined by power_phase_type.

Definition at line 308 of file recordmessage_p.h.

◆ leftPowerPhasePeak

quint8 RecordMessagePrivate::leftPowerPhasePeak

The RecordMessage FIT message's leftPowerPhasePeak field.

Left power phase peak angles. Data value indexes defined by power_phase_type.

Definition at line 315 of file recordmessage_p.h.

◆ motorPower

quint16 RecordMessagePrivate::motorPower

The RecordMessage FIT message's motorPower field.

lev motor power

Definition at line 353 of file recordmessage_p.h.

◆ nextStopDepth

quint32 RecordMessagePrivate::nextStopDepth

The RecordMessage FIT message's nextStopDepth field.

0 if above water

Definition at line 389 of file recordmessage_p.h.

◆ resistance

quint8 RecordMessagePrivate::resistance

The RecordMessage FIT message's resistance field.

Relative. 0 is none 254 is Max.

Definition at line 101 of file recordmessage_p.h.

◆ rightPco

qint8 RecordMessagePrivate::rightPco

The RecordMessage FIT message's rightPco field.

Right platform center offset

Definition at line 301 of file recordmessage_p.h.

◆ rightPowerPhase

quint8 RecordMessagePrivate::rightPowerPhase

The RecordMessage FIT message's rightPowerPhase field.

Right power phase angles. Data value indexes defined by power_phase_type.

Definition at line 322 of file recordmessage_p.h.

◆ rightPowerPhasePeak

quint8 RecordMessagePrivate::rightPowerPhasePeak

The RecordMessage FIT message's rightPowerPhasePeak field.

Right power phase peak angles. Data value indexes defined by power_phase_type.

Definition at line 329 of file recordmessage_p.h.

◆ saturatedHemoglobinPercent

quint16 RecordMessagePrivate::saturatedHemoglobinPercent

The RecordMessage FIT message's saturatedHemoglobinPercent field.

Percentage of hemoglobin saturated with oxygen

Definition at line 268 of file recordmessage_p.h.

◆ saturatedHemoglobinPercentMax

quint16 RecordMessagePrivate::saturatedHemoglobinPercentMax

The RecordMessage FIT message's saturatedHemoglobinPercentMax field.

Max percentage of hemoglobin saturated with oxygen

Definition at line 282 of file recordmessage_p.h.

◆ saturatedHemoglobinPercentMin

quint16 RecordMessagePrivate::saturatedHemoglobinPercentMin

The RecordMessage FIT message's saturatedHemoglobinPercentMin field.

Min percentage of hemoglobin saturated with oxygen

Definition at line 275 of file recordmessage_p.h.

◆ speed1s

quint8 RecordMessagePrivate::speed1s

The RecordMessage FIT message's speed1s field.

Speed at 1s intervals. Timestamp field indicates time of last array element.

Definition at line 123 of file recordmessage_p.h.

◆ totalHemoglobinConc

quint16 RecordMessagePrivate::totalHemoglobinConc

The RecordMessage FIT message's totalHemoglobinConc field.

Total saturated and unsaturated hemoglobin

Definition at line 247 of file recordmessage_p.h.

◆ totalHemoglobinConcMax

quint16 RecordMessagePrivate::totalHemoglobinConcMax

The RecordMessage FIT message's totalHemoglobinConcMax field.

Max saturated and unsaturated hemoglobin

Definition at line 261 of file recordmessage_p.h.

◆ totalHemoglobinConcMin

quint16 RecordMessagePrivate::totalHemoglobinConcMin

The RecordMessage FIT message's totalHemoglobinConcMin field.

Min saturated and unsaturated hemoglobin

Definition at line 254 of file recordmessage_p.h.


The documentation for this class was generated from the following files: