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

Public Member Functions

 AbstractDataMessagePrivate (AbstractDataMessage *const q)
 
virtual ~AbstractDataMessagePrivate ()
 
bool setFields (const DataDefinition *const defn, const QByteArray &record)
 

Public Attributes

MesgNum globalMessageNumber
 FIT Globla Message Number for this FIT Data Message.
 

Protected Member Functions

virtual bool setField (const int fieldId, const QByteArray &data, const FitBaseType baseType, const bool bigEndian)=0
 
bool verify (const QByteArray &data, const FitBaseType actualType, const int expectedSize, const FitBaseType expectedType, const char *messageFieldName)
 

Protected Attributes

AbstractDataMessage *const q_ptr
 Internal q-pointer.
 

Detailed Description

The AbstractDataMessagePrivate class provides private implementation for AbstractDataMessage.

See also
AbstractDataMessage

Definition at line 36 of file abstractdatamessage_p.h.

Constructor & Destructor Documentation

◆ AbstractDataMessagePrivate()

AbstractDataMessagePrivate::AbstractDataMessagePrivate ( AbstractDataMessage *const  q)
explicit

Constructs a AbstractDataMessagePrivate object with public implementation q.

Parameters
qPointer to public implementation.

Definition at line 88 of file abstractdatamessage.cpp.

89  : globalMessageNumber(static_cast<MesgNum>(0xFFFF)), q_ptr(q)
90 {
91 
92 }
MesgNum globalMessageNumber
FIT Globla Message Number for this FIT Data Message.
AbstractDataMessage *const q_ptr
Internal q-pointer.
MesgNum
Garmin FIT MesgNum type.
Definition: types.h:91

◆ ~AbstractDataMessagePrivate()

AbstractDataMessagePrivate::~AbstractDataMessagePrivate ( )
virtual

Destroys the AbstractDataMessagePrivate object.

Definition at line 99 of file abstractdatamessage.cpp.

100 {
101 
102 }

Member Function Documentation

◆ setField()

AbstractDataMessagePrivate::setField ( const int  fieldId,
const QByteArray &  data,
const FitBaseType  baseType,
const bool  bigEndian 
)
protectedpure virtual

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.

Implemented in ZonesTargetMessagePrivate, WorkoutStepMessagePrivate, WorkoutSessionMessagePrivate, WorkoutMessagePrivate, WeightScaleMessagePrivate, WeatherConditionsMessagePrivate, WeatherAlertMessagePrivate, WatchfaceSettingsMessagePrivate, VideoTitleMessagePrivate, VideoMessagePrivate, VideoFrameMessagePrivate, VideoDescriptionMessagePrivate, VideoClipMessagePrivate, UserProfileMessagePrivate, TrainingFileMessagePrivate, TotalsMessagePrivate, TimestampCorrelationMessagePrivate, ThreeDSensorCalibrationMessagePrivate, StressLevelMessagePrivate, SportMessagePrivate, SpeedZoneMessagePrivate, SoftwareMessagePrivate, SlaveDeviceMessagePrivate, SetMessagePrivate, SessionMessagePrivate, SegmentPointMessagePrivate, SegmentLeaderboardEntryMessagePrivate, SegmentLapMessagePrivate, SegmentIdMessagePrivate, SegmentFileMessagePrivate, SdmProfileMessagePrivate, ScheduleMessagePrivate, RecordMessagePrivate, PowerZoneMessagePrivate, OneDSensorCalibrationMessagePrivate, OhrSettingsMessagePrivate, ObdiiDataMessagePrivate, NmeaSentenceMessagePrivate, MonitoringMessagePrivate, MonitoringInfoMessagePrivate, MetZoneMessagePrivate, MesgCapabilitiesMessagePrivate, MemoGlobMessagePrivate, MagnetometerDataMessagePrivate, LengthMessagePrivate, LapMessagePrivate, JumpMessagePrivate, HrZoneMessagePrivate, HrvMessagePrivate, HrmProfileMessagePrivate, HrMessagePrivate, GyroscopeDataMessagePrivate, GpsMetadataMessagePrivate, GoalMessagePrivate, FileIdMessagePrivate, FileCreatorMessagePrivate, FileCapabilitiesMessagePrivate, FieldDescriptionMessagePrivate, FieldCapabilitiesMessagePrivate, ExerciseTitleMessagePrivate, ExdScreenConfigurationMessagePrivate, ExdDataFieldConfigurationMessagePrivate, ExdDataConceptConfigurationMessagePrivate, EventMessagePrivate, DiveSummaryMessagePrivate, DiveSettingsMessagePrivate, DiveGasMessagePrivate, DiveAlarmMessagePrivate, DeviceSettingsMessagePrivate, DeviceInfoMessagePrivate, DeveloperDataIdMessagePrivate, CoursePointMessagePrivate, CourseMessagePrivate, ConnectivityMessagePrivate, ClimbProMessagePrivate, CapabilitiesMessagePrivate, CameraEventMessagePrivate, CadenceZoneMessagePrivate, BloodPressureMessagePrivate, BikeProfileMessagePrivate, BarometerDataMessagePrivate, AviationAttitudeMessagePrivate, AntTxMessagePrivate, AntRxMessagePrivate, AntChannelIdMessagePrivate, ActivityMessagePrivate, and AccelerometerDataMessagePrivate.

Referenced by setFields().

Here is the caller graph for this function:

◆ setFields()

bool AbstractDataMessagePrivate::setFields ( const DataDefinition *const  defn,
const QByteArray &  record 
)

Sets the current FIT data message's fields.

The method iterates through the record, invoking the virtual setField method to assign the extraced values to the relevant data message fields. Derived classes are expected to override setField to implement that field number to class member mapping.

Parameters
defnData field definition describing the record layout.
recordThe FIT data record to read fields from.
Returns
true if all fields were parsed safely.
See also
setField

Definition at line 120 of file abstractdatamessage.cpp.

121 {
122  Q_ASSERT(defn->globalMessageNumber == this->globalMessageNumber);
123  int dataOffset=0; // Next field's offset within dataRecord.
124  for (const FieldDefinition &field: defn->fieldDefinitions) {
125  if (!setField(field.number, record.mid(dataOffset,field.size), field.baseType,
127  return false;
128  dataOffset += field.size;
129  }
130  return true;
131 }
virtual bool setField(const int fieldId, const QByteArray &data, const FitBaseType baseType, const bool bigEndian)=0
QList< FieldDefinition > fieldDefinitions
Definitons list of all fields, if any, present in the described Data Message.
Definition: types_p.h:88
Architecture architecture
Architecture type for any multi-byte fields.
Definition: types_p.h:84
MesgNum globalMessageNumber
FIT Global Message Number the Data Message represents.
Definition: types_p.h:85
Field Definition for FIT Data Messages.
Definition: types_p.h:69
FitBaseType baseType
Base type for interpreting unknown fields.
Definition: types_p.h:72
quint8 number
Unique ID for the FIT field within a given FIT data message.
Definition: types_p.h:70
quint8 size
Size (in bytes) of the field.
Definition: types_p.h:71
@ BigEndian
Little-endian byte ordering.

References DataDefinition::architecture, FieldDefinition::baseType, BigEndian, DataDefinition::fieldDefinitions, DataDefinition::globalMessageNumber, FieldDefinition::number, setField(), and FieldDefinition::size.

Here is the call graph for this function:

◆ verify()

bool AbstractDataMessagePrivate::verify ( const QByteArray &  data,
const FitBaseType  actualType,
const int  expectedSize,
const FitBaseType  expectedType,
const char *  messageFieldName 
)
protected

Verifies the size and type of FIT Data Message fields.

Parameters
dataData to verify the size of.
actualTypeActual base type.
expectedSizeExpected size of data.
expectedTypeExpected base type.
messageFieldNameName of the field being verified.
Returns
true if the size and type match, false otherwise.

Definition at line 199 of file abstractdatamessage.cpp.

202 {
203  return (verifyBaseType(actualType, expectedType, messageFieldName) &&
204  verifyDataSize(data, expectedSize, messageFieldName));
205 }
bool verifyDataSize(const QByteArray &data, const int expectedSize, const char *name)
bool verifyBaseType(const FitBaseType actual, const FitBaseType expected, const char *name)

References verifyBaseType(), and verifyDataSize().

Referenced by AccelerometerDataMessagePrivate::setField(), ActivityMessagePrivate::setField(), AntChannelIdMessagePrivate::setField(), AntRxMessagePrivate::setField(), AntTxMessagePrivate::setField(), AviationAttitudeMessagePrivate::setField(), BarometerDataMessagePrivate::setField(), BikeProfileMessagePrivate::setField(), BloodPressureMessagePrivate::setField(), CadenceZoneMessagePrivate::setField(), CameraEventMessagePrivate::setField(), CapabilitiesMessagePrivate::setField(), ClimbProMessagePrivate::setField(), ConnectivityMessagePrivate::setField(), CourseMessagePrivate::setField(), CoursePointMessagePrivate::setField(), DeveloperDataIdMessagePrivate::setField(), DeviceInfoMessagePrivate::setField(), DeviceSettingsMessagePrivate::setField(), DiveAlarmMessagePrivate::setField(), DiveGasMessagePrivate::setField(), DiveSettingsMessagePrivate::setField(), DiveSummaryMessagePrivate::setField(), EventMessagePrivate::setField(), ExdDataConceptConfigurationMessagePrivate::setField(), ExdDataFieldConfigurationMessagePrivate::setField(), ExdScreenConfigurationMessagePrivate::setField(), ExerciseTitleMessagePrivate::setField(), FieldCapabilitiesMessagePrivate::setField(), FieldDescriptionMessagePrivate::setField(), FileCapabilitiesMessagePrivate::setField(), FileCreatorMessagePrivate::setField(), FileIdMessagePrivate::setField(), GoalMessagePrivate::setField(), GpsMetadataMessagePrivate::setField(), GyroscopeDataMessagePrivate::setField(), HrMessagePrivate::setField(), HrmProfileMessagePrivate::setField(), HrvMessagePrivate::setField(), HrZoneMessagePrivate::setField(), JumpMessagePrivate::setField(), LapMessagePrivate::setField(), LengthMessagePrivate::setField(), MagnetometerDataMessagePrivate::setField(), MemoGlobMessagePrivate::setField(), MesgCapabilitiesMessagePrivate::setField(), MetZoneMessagePrivate::setField(), MonitoringInfoMessagePrivate::setField(), MonitoringMessagePrivate::setField(), NmeaSentenceMessagePrivate::setField(), ObdiiDataMessagePrivate::setField(), OhrSettingsMessagePrivate::setField(), OneDSensorCalibrationMessagePrivate::setField(), PowerZoneMessagePrivate::setField(), RecordMessagePrivate::setField(), ScheduleMessagePrivate::setField(), SdmProfileMessagePrivate::setField(), SegmentFileMessagePrivate::setField(), SegmentIdMessagePrivate::setField(), SegmentLapMessagePrivate::setField(), SegmentLeaderboardEntryMessagePrivate::setField(), SegmentPointMessagePrivate::setField(), SessionMessagePrivate::setField(), SetMessagePrivate::setField(), SlaveDeviceMessagePrivate::setField(), SoftwareMessagePrivate::setField(), SpeedZoneMessagePrivate::setField(), SportMessagePrivate::setField(), StressLevelMessagePrivate::setField(), ThreeDSensorCalibrationMessagePrivate::setField(), TimestampCorrelationMessagePrivate::setField(), TotalsMessagePrivate::setField(), TrainingFileMessagePrivate::setField(), UserProfileMessagePrivate::setField(), VideoClipMessagePrivate::setField(), VideoDescriptionMessagePrivate::setField(), VideoFrameMessagePrivate::setField(), VideoMessagePrivate::setField(), VideoTitleMessagePrivate::setField(), WatchfaceSettingsMessagePrivate::setField(), WeatherAlertMessagePrivate::setField(), WeatherConditionsMessagePrivate::setField(), WeightScaleMessagePrivate::setField(), WorkoutMessagePrivate::setField(), WorkoutSessionMessagePrivate::setField(), WorkoutStepMessagePrivate::setField(), and ZonesTargetMessagePrivate::setField().

Here is the call graph for this function:
Here is the caller graph for this function:

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