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

Public Member Functions

 ClimbProMessagePrivate (ClimbProMessage *const q)
 
virtual ~ClimbProMessagePrivate ()
 
- 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 ClimbProMessage FIT message's timestamp field.
 
qint32 positionLat
 The ClimbProMessage FIT message's positionLat field.
 
qint32 positionLong
 The ClimbProMessage FIT message's positionLong field.
 
ClimbProEvent climbProEvent
 The ClimbProMessage FIT message's climbProEvent field.
 
quint16 climbNumber
 The ClimbProMessage FIT message's climbNumber field.
 
quint8 climbCategory
 The ClimbProMessage FIT message's climbCategory field.
 
float currentDist
 The ClimbProMessage FIT message's currentDist 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 ClimbProMessagePrivate class provides private implementation for the ClimbProMessage.

See also
ClimbProMessage

Definition at line 38 of file climbpromessage_p.h.

Constructor & Destructor Documentation

◆ ClimbProMessagePrivate()

ClimbProMessagePrivate::ClimbProMessagePrivate ( ClimbProMessage *const  q)
explicit

Constructs a ClimbProMessagePrivate object with public implementation q.

Parameters
qPointer to public implementaton.

Definition at line 236 of file climbpromessage.cpp.

238  , timestamp(static_cast<DateTime>(-1))
239  , positionLat(0x7FFFFFFF)
240  , positionLong(0x7FFFFFFF)
241  , climbProEvent(static_cast<ClimbProEvent>(-1))
242  , climbNumber(0xFFFF)
243  , climbCategory(0xFF)
244  , currentDist(static_cast<float>(-1))
245 {
246  globalMessageNumber = MesgNum::ClimbPro;
247 }
MesgNum globalMessageNumber
FIT Globla Message Number for this FIT Data Message.
quint16 climbNumber
The ClimbProMessage FIT message's climbNumber field.
qint32 positionLat
The ClimbProMessage FIT message's positionLat field.
quint8 climbCategory
The ClimbProMessage FIT message's climbCategory field.
qint32 positionLong
The ClimbProMessage FIT message's positionLong field.
float currentDist
The ClimbProMessage FIT message's currentDist field.
ClimbProEvent climbProEvent
The ClimbProMessage FIT message's climbProEvent field.
DateTime timestamp
The ClimbProMessage FIT message's timestamp field.
ClimbProEvent
Garmin FIT ClimbProEvent type.
Definition: types.h:5277
DateTime
Seconds since UTC 00:00 Dec 31 1989.
Definition: types.h:237

References AbstractDataMessagePrivate::globalMessageNumber.

◆ ~ClimbProMessagePrivate()

ClimbProMessagePrivate::~ClimbProMessagePrivate ( )
virtual

Destroys the ClimbProMessagePrivate object.

Definition at line 254 of file climbpromessage.cpp.

255 {
256 
257 }

Member Function Documentation

◆ setField()

bool ClimbProMessagePrivate::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 259 of file climbpromessage.cpp.

261 {
262  switch (fieldId) {
263  case 253: // See Profile.xlsx::Messages:climb_pro.timestamp
264  if (!verify(data, baseType, 4, FitBaseType::Uint32, "climb_pro.timestamp")) return false;
265  this->timestamp = static_cast<DateTime>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
266  break;
267  case 0: // See Profile.xlsx::Messages:climb_pro.positionLat
268  if (!verify(data, baseType, 4, FitBaseType::Sint32, "climb_pro.positionLat")) return false;
269  this->positionLat = static_cast<qint32>(bigEndian ? qFromBigEndian< qint32>(data) : qFromLittleEndian< qint32>(data));
270  break;
271  case 1: // See Profile.xlsx::Messages:climb_pro.positionLong
272  if (!verify(data, baseType, 4, FitBaseType::Sint32, "climb_pro.positionLong")) return false;
273  this->positionLong = static_cast<qint32>(bigEndian ? qFromBigEndian< qint32>(data) : qFromLittleEndian< qint32>(data));
274  break;
275  case 2: // See Profile.xlsx::Messages:climb_pro.climbProEvent
276  if (!verify(data, baseType, 1, FitBaseType::Enum, "climb_pro.climbProEvent")) return false;
277  this->climbProEvent = static_cast<ClimbProEvent>(data.at(0));
278  break;
279  case 3: // See Profile.xlsx::Messages:climb_pro.climbNumber
280  if (!verify(data, baseType, 2, FitBaseType::Uint16, "climb_pro.climbNumber")) return false;
281  this->climbNumber = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
282  break;
283  case 4: // See Profile.xlsx::Messages:climb_pro.climbCategory
284  if (!verify(data, baseType, 1, FitBaseType::Uint8, "climb_pro.climbCategory")) return false;
285  this->climbCategory = static_cast<quint8>(data.at(0));
286  break;
287  case 5: // See Profile.xlsx::Messages:climb_pro.currentDist
288  if (!verify(data, baseType, 4, FitBaseType::Float32, "climb_pro.currentDist")) return false;
289  #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0)
290  { // Qt's from-endian functions have no float/double specialisations prior to Qt 5.12.
291  const quint32 localEndian = bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data);
292  static_assert(sizeof(localEndian) == 4, "src not expected size");
293  static_assert(sizeof(this->currentDist) == 4, "src and dst not the same size");
294  memcpy(&this->currentDist, &localEndian, data.size());
295  }
296  #else
297  this->currentDist = static_cast<float>(bigEndian ? qFromBigEndian<float>(data) : qFromLittleEndian<float>(data));
298  #endif
299  break;
300  default:
301  qWarning() << "ignoring unknown climb_pro message field number" << fieldId << bigEndian;
302  // Fall through to return true, as its still 'safe' to continue parsing data messages.
303  }
304  return true;
305 }
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:

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