QtFit  0.1
Internal library development documentation
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
fitdatamessages.cpp
Go to the documentation of this file.
1 /*
2  Copyright 2021 Paul Colby
3 
4  This file is part of QtFit.
5 
6  QtFit is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  QtFit is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with QtFit. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 /*!
21  * \file
22  * \note This file is automatcially generated. Any changes here are likely to be overwritten.
23  */
24 
25 /*!
26  * \file
27  *
28  * Provides the AbstractDataMessage::fromData implementation.
29  *
30  * This is kept in a separate file so it can be safely code-generated. And also to avoid polluting
31  * the abstractdatamessage.cpp file with \c \#includes for the ~100 or so AbstractDataMessage
32  * descendants.
33  */
34 
35 #include "abstractdatamessage.h"
36 #include "abstractdatamessage_p.h"
37 
39 #include "activitymessage.h"
40 #include "antchannelidmessage.h"
41 #include "antrxmessage.h"
42 #include "anttxmessage.h"
44 #include "barometerdatamessage.h"
45 #include "bikeprofilemessage.h"
46 #include "bloodpressuremessage.h"
47 #include "cadencezonemessage.h"
48 #include "cameraeventmessage.h"
49 #include "capabilitiesmessage.h"
50 #include "climbpromessage.h"
51 #include "connectivitymessage.h"
52 #include "coursemessage.h"
53 #include "coursepointmessage.h"
54 #include "developerdataidmessage.h"
55 #include "deviceinfomessage.h"
56 #include "devicesettingsmessage.h"
57 #include "divealarmmessage.h"
58 #include "divegasmessage.h"
59 #include "divesettingsmessage.h"
60 #include "divesummarymessage.h"
61 #include "eventmessage.h"
65 #include "exercisetitlemessage.h"
69 #include "filecreatormessage.h"
70 #include "fileidmessage.h"
71 #include "goalmessage.h"
72 #include "gpsmetadatamessage.h"
73 #include "gyroscopedatamessage.h"
74 #include "hrmessage.h"
75 #include "hrzonemessage.h"
76 #include "hrmprofilemessage.h"
77 #include "hrvmessage.h"
78 #include "jumpmessage.h"
79 #include "lapmessage.h"
80 #include "lengthmessage.h"
82 #include "memoglobmessage.h"
84 #include "metzonemessage.h"
85 //#include "mfgrangemaxmessage.h"
86 //#include "mfgrangeminmessage.h"
87 #include "monitoringmessage.h"
88 #include "monitoringinfomessage.h"
89 #include "nmeasentencemessage.h"
90 #include "obdiidatamessage.h"
91 #include "ohrsettingsmessage.h"
93 //#include "padmessage.h"
94 #include "powerzonemessage.h"
95 #include "recordmessage.h"
96 #include "schedulemessage.h"
97 #include "sdmprofilemessage.h"
98 #include "segmentfilemessage.h"
99 #include "segmentidmessage.h"
100 #include "segmentlapmessage.h"
102 #include "segmentpointmessage.h"
103 #include "sessionmessage.h"
104 #include "setmessage.h"
105 #include "slavedevicemessage.h"
106 #include "softwaremessage.h"
107 #include "speedzonemessage.h"
108 #include "sportmessage.h"
109 #include "stresslevelmessage.h"
112 #include "totalsmessage.h"
113 #include "trainingfilemessage.h"
114 #include "userprofilemessage.h"
115 #include "videomessage.h"
116 #include "videoclipmessage.h"
117 #include "videodescriptionmessage.h"
118 #include "videoframemessage.h"
119 #include "videotitlemessage.h"
121 #include "weatheralertmessage.h"
123 #include "weightscalemessage.h"
124 #include "workoutmessage.h"
125 #include "workoutsessionmessage.h"
126 #include "workoutstepmessage.h"
127 #include "zonestargetmessage.h"
128 
130 
131 /*!
132  * Constructs the relevant AbstractDataMessage-derived class to parse \a record according to \a defn.
133  *
134  * \param defn Definition data describing the FIT \a record.
135  * \param record FIT data record to parse.
136  *
137  * \return an instance of a AbstractDataMessage-derived class, or \c nullptr if \a record could not be parsed.
138  */
139 AbstractDataMessage * AbstractDataMessage::fromData(const DataDefinition * const defn, const QByteArray &record)
140 {
141  Q_ASSERT(defn);
142  AbstractDataMessage * message = nullptr;
143  switch (defn->globalMessageNumber) {
144  case MesgNum::FileId : message = new FileIdMessage ; break;
145  case MesgNum::Capabilities : message = new CapabilitiesMessage ; break;
146  case MesgNum::DeviceSettings : message = new DeviceSettingsMessage ; break;
147  case MesgNum::UserProfile : message = new UserProfileMessage ; break;
148  case MesgNum::HrmProfile : message = new HrmProfileMessage ; break;
149  case MesgNum::SdmProfile : message = new SdmProfileMessage ; break;
150  case MesgNum::BikeProfile : message = new BikeProfileMessage ; break;
151  case MesgNum::ZonesTarget : message = new ZonesTargetMessage ; break;
152  case MesgNum::HrZone : message = new HrZoneMessage ; break;
153  case MesgNum::PowerZone : message = new PowerZoneMessage ; break;
154  case MesgNum::MetZone : message = new MetZoneMessage ; break;
155  case MesgNum::Sport : message = new SportMessage ; break;
156  case MesgNum::Goal : message = new GoalMessage ; break;
157  case MesgNum::Session : message = new SessionMessage ; break;
158  case MesgNum::Lap : message = new LapMessage ; break;
159  case MesgNum::Record : message = new RecordMessage ; break;
160  case MesgNum::Event : message = new EventMessage ; break;
161  case MesgNum::DeviceInfo : message = new DeviceInfoMessage ; break;
162  case MesgNum::Workout : message = new WorkoutMessage ; break;
163  case MesgNum::WorkoutStep : message = new WorkoutStepMessage ; break;
164  case MesgNum::Schedule : message = new ScheduleMessage ; break;
165  case MesgNum::WeightScale : message = new WeightScaleMessage ; break;
166  case MesgNum::Course : message = new CourseMessage ; break;
167  case MesgNum::CoursePoint : message = new CoursePointMessage ; break;
168  case MesgNum::Totals : message = new TotalsMessage ; break;
169  case MesgNum::Activity : message = new ActivityMessage ; break;
170  case MesgNum::Software : message = new SoftwareMessage ; break;
171  case MesgNum::FileCapabilities : message = new FileCapabilitiesMessage ; break;
172  case MesgNum::MesgCapabilities : message = new MesgCapabilitiesMessage ; break;
173  case MesgNum::FieldCapabilities : message = new FieldCapabilitiesMessage ; break;
174  case MesgNum::FileCreator : message = new FileCreatorMessage ; break;
175  case MesgNum::BloodPressure : message = new BloodPressureMessage ; break;
176  case MesgNum::SpeedZone : message = new SpeedZoneMessage ; break;
177  case MesgNum::Monitoring : message = new MonitoringMessage ; break;
178  case MesgNum::TrainingFile : message = new TrainingFileMessage ; break;
179  case MesgNum::Hrv : message = new HrvMessage ; break;
180  case MesgNum::AntRx : message = new AntRxMessage ; break;
181  case MesgNum::AntTx : message = new AntTxMessage ; break;
182  case MesgNum::AntChannelId : message = new AntChannelIdMessage ; break;
183  case MesgNum::Length : message = new LengthMessage ; break;
184  case MesgNum::MonitoringInfo : message = new MonitoringInfoMessage ; break;
185  case MesgNum::Pad : message = nullptr; break;
186  case MesgNum::SlaveDevice : message = new SlaveDeviceMessage ; break;
187  case MesgNum::Connectivity : message = new ConnectivityMessage ; break;
188  case MesgNum::WeatherConditions : message = new WeatherConditionsMessage ; break;
189  case MesgNum::WeatherAlert : message = new WeatherAlertMessage ; break;
190  case MesgNum::CadenceZone : message = new CadenceZoneMessage ; break;
191  case MesgNum::Hr : message = new HrMessage ; break;
192  case MesgNum::SegmentLap : message = new SegmentLapMessage ; break;
193  case MesgNum::MemoGlob : message = new MemoGlobMessage ; break;
194  case MesgNum::SegmentId : message = new SegmentIdMessage ; break;
195  case MesgNum::SegmentLeaderboardEntry : message = new SegmentLeaderboardEntryMessage; break;
196  case MesgNum::SegmentPoint : message = new SegmentPointMessage ; break;
197  case MesgNum::SegmentFile : message = new SegmentFileMessage ; break;
198  case MesgNum::WorkoutSession : message = new WorkoutSessionMessage ; break;
199  case MesgNum::WatchfaceSettings : message = new WatchfaceSettingsMessage ; break;
200  case MesgNum::GpsMetadata : message = new GpsMetadataMessage ; break;
201  case MesgNum::CameraEvent : message = new CameraEventMessage ; break;
202  case MesgNum::TimestampCorrelation : message = new TimestampCorrelationMessage; break;
203  case MesgNum::GyroscopeData : message = new GyroscopeDataMessage ; break;
204  case MesgNum::AccelerometerData : message = new AccelerometerDataMessage ; break;
205  case MesgNum::ThreeDSensorCalibration : message = new ThreeDSensorCalibrationMessage; break;
206  case MesgNum::VideoFrame : message = new VideoFrameMessage ; break;
207  case MesgNum::ObdiiData : message = new ObdiiDataMessage ; break;
208  case MesgNum::NmeaSentence : message = new NmeaSentenceMessage ; break;
209  case MesgNum::AviationAttitude : message = new AviationAttitudeMessage ; break;
210  case MesgNum::Video : message = new VideoMessage ; break;
211  case MesgNum::VideoTitle : message = new VideoTitleMessage ; break;
212  case MesgNum::VideoDescription : message = new VideoDescriptionMessage ; break;
213  case MesgNum::VideoClip : message = new VideoClipMessage ; break;
214  case MesgNum::OhrSettings : message = new OhrSettingsMessage ; break;
215  case MesgNum::ExdScreenConfiguration : message = new ExdScreenConfigurationMessage; break;
216  case MesgNum::ExdDataFieldConfiguration : message = new ExdDataFieldConfigurationMessage; break;
217  case MesgNum::ExdDataConceptConfiguration: message = new ExdDataConceptConfigurationMessage; break;
218  case MesgNum::FieldDescription : message = new FieldDescriptionMessage ; break;
219  case MesgNum::DeveloperDataId : message = new DeveloperDataIdMessage ; break;
220  case MesgNum::MagnetometerData : message = new MagnetometerDataMessage ; break;
221  case MesgNum::BarometerData : message = new BarometerDataMessage ; break;
222  case MesgNum::OneDSensorCalibration : message = new OneDSensorCalibrationMessage; break;
223  case MesgNum::Set : message = new SetMessage ; break;
224  case MesgNum::StressLevel : message = new StressLevelMessage ; break;
225  case MesgNum::DiveSettings : message = new DiveSettingsMessage ; break;
226  case MesgNum::DiveGas : message = new DiveGasMessage ; break;
227  case MesgNum::DiveAlarm : message = new DiveAlarmMessage ; break;
228  case MesgNum::ExerciseTitle : message = new ExerciseTitleMessage ; break;
229  case MesgNum::DiveSummary : message = new DiveSummaryMessage ; break;
230  case MesgNum::Jump : message = new JumpMessage ; break;
231  case MesgNum::ClimbPro : message = new ClimbProMessage ; break;
232  case MesgNum::MfgRangeMin : message = nullptr; break;
233  case MesgNum::MfgRangeMax : message = nullptr; break;
234  }
235  if (message) {
236  message->d_ptr->setFields(defn, record);
237  }
238  return message;
239 }
240 
#define QTFIT_END_NAMESPACE
Macro for ending the QtFit library's top-most namespace (if one is defined).
Definition: QtFit_global.h:78
#define QTFIT_BEGIN_NAMESPACE
Macro for starting the QtFit library's top-most namespace (if one is defined).
Definition: QtFit_global.h:77
Declares the AbstractDataMessage class.
Declares the AbstractDataMessagePrivate class.
Declares the AccelerometerDataMessage class.
Declares the ActivityMessage class.
Declares the AntChannelIdMessage class.
Declares the AntRxMessage class.
Declares the AntTxMessage class.
Declares the AviationAttitudeMessage class.
Declares the BarometerDataMessage class.
Declares the BikeProfileMessage class.
Declares the BloodPressureMessage class.
Declares the CadenceZoneMessage class.
Declares the CameraEventMessage class.
Declares the CapabilitiesMessage class.
bool setFields(const DataDefinition *const defn, const QByteArray &record)
The AbstractDataMessage class is the polymorphic base class for all FIT Data Message classes.
AbstractDataMessagePrivate *const d_ptr
Internal d-pointer.
static AbstractDataMessage * fromData(const DataDefinition *const defn, const QByteArray &record)
Constructs the relevant AbstractDataMessage-derived class to parse record according to defn.
The AccelerometerDataMessage class represents a FIT AccelerometerDataMessage data message.
The ActivityMessage class represents a FIT ActivityMessage data message.
The AntChannelIdMessage class represents a FIT AntChannelIdMessage data message.
The AntRxMessage class represents a FIT AntRxMessage data message.
Definition: antrxmessage.h:39
The AntTxMessage class represents a FIT AntTxMessage data message.
Definition: anttxmessage.h:39
The AviationAttitudeMessage class represents a FIT AviationAttitudeMessage data message.
The BarometerDataMessage class represents a FIT BarometerDataMessage data message.
The BikeProfileMessage class represents a FIT BikeProfileMessage data message.
The BloodPressureMessage class represents a FIT BloodPressureMessage data message.
The CadenceZoneMessage class represents a FIT CadenceZoneMessage data message.
The CameraEventMessage class represents a FIT CameraEventMessage data message.
The CapabilitiesMessage class represents a FIT CapabilitiesMessage data message.
The ClimbProMessage class represents a FIT ClimbProMessage data message.
The ConnectivityMessage class represents a FIT ConnectivityMessage data message.
The CourseMessage class represents a FIT CourseMessage data message.
Definition: coursemessage.h:39
The CoursePointMessage class represents a FIT CoursePointMessage data message.
The DeveloperDataIdMessage class represents a FIT DeveloperDataIdMessage data message.
The DeviceInfoMessage class represents a FIT DeviceInfoMessage data message.
The DeviceSettingsMessage class represents a FIT DeviceSettingsMessage data message.
The DiveAlarmMessage class represents a FIT DiveAlarmMessage data message.
The DiveGasMessage class represents a FIT DiveGasMessage data message.
The DiveSettingsMessage class represents a FIT DiveSettingsMessage data message.
The DiveSummaryMessage class represents a FIT DiveSummaryMessage data message.
The EventMessage class represents a FIT EventMessage data message.
Definition: eventmessage.h:39
The ExdDataConceptConfigurationMessage class represents a FIT ExdDataConceptConfigurationMessage data...
The ExdDataFieldConfigurationMessage class represents a FIT ExdDataFieldConfigurationMessage data mes...
The ExdScreenConfigurationMessage class represents a FIT ExdScreenConfigurationMessage data message.
The ExerciseTitleMessage class represents a FIT ExerciseTitleMessage data message.
The FieldCapabilitiesMessage class represents a FIT FieldCapabilitiesMessage data message.
The FieldDescriptionMessage class represents a FIT FieldDescriptionMessage data message.
The FileCapabilitiesMessage class represents a FIT FileCapabilitiesMessage data message.
The FileCreatorMessage class represents a FIT FileCreatorMessage data message.
The FileIdMessage class represents a FIT FileIdMessage data message.
Definition: fileidmessage.h:39
The GoalMessage class represents a FIT GoalMessage data message.
Definition: goalmessage.h:39
The GpsMetadataMessage class represents a FIT GpsMetadataMessage data message.
The GyroscopeDataMessage class represents a FIT GyroscopeDataMessage data message.
The HrMessage class represents a FIT HrMessage data message.
Definition: hrmessage.h:39
The HrZoneMessage class represents a FIT HrZoneMessage data message.
Definition: hrzonemessage.h:39
The HrmProfileMessage class represents a FIT HrmProfileMessage data message.
The HrvMessage class represents a FIT HrvMessage data message.
Definition: hrvmessage.h:39
The JumpMessage class represents a FIT JumpMessage data message.
Definition: jumpmessage.h:39
The LapMessage class represents a FIT LapMessage data message.
Definition: lapmessage.h:39
The LengthMessage class represents a FIT LengthMessage data message.
Definition: lengthmessage.h:39
The MagnetometerDataMessage class represents a FIT MagnetometerDataMessage data message.
The MemoGlobMessage class represents a FIT MemoGlobMessage data message.
The MesgCapabilitiesMessage class represents a FIT MesgCapabilitiesMessage data message.
The MetZoneMessage class represents a FIT MetZoneMessage data message.
The MonitoringInfoMessage class represents a FIT MonitoringInfoMessage data message.
The MonitoringMessage class represents a FIT MonitoringMessage data message.
The NmeaSentenceMessage class represents a FIT NmeaSentenceMessage data message.
The ObdiiDataMessage class represents a FIT ObdiiDataMessage data message.
The OhrSettingsMessage class represents a FIT OhrSettingsMessage data message.
The OneDSensorCalibrationMessage class represents a FIT OneDSensorCalibrationMessage data message.
The PowerZoneMessage class represents a FIT PowerZoneMessage data message.
The RecordMessage class represents a FIT RecordMessage data message.
Definition: recordmessage.h:39
The ScheduleMessage class represents a FIT ScheduleMessage data message.
The SdmProfileMessage class represents a FIT SdmProfileMessage data message.
The SegmentFileMessage class represents a FIT SegmentFileMessage data message.
The SegmentIdMessage class represents a FIT SegmentIdMessage data message.
The SegmentLapMessage class represents a FIT SegmentLapMessage data message.
The SegmentLeaderboardEntryMessage class represents a FIT SegmentLeaderboardEntryMessage data message...
The SegmentPointMessage class represents a FIT SegmentPointMessage data message.
The SessionMessage class represents a FIT SessionMessage data message.
The SetMessage class represents a FIT SetMessage data message.
Definition: setmessage.h:39
The SlaveDeviceMessage class represents a FIT SlaveDeviceMessage data message.
The SoftwareMessage class represents a FIT SoftwareMessage data message.
The SpeedZoneMessage class represents a FIT SpeedZoneMessage data message.
The SportMessage class represents a FIT SportMessage data message.
Definition: sportmessage.h:39
The StressLevelMessage class represents a FIT StressLevelMessage data message.
The ThreeDSensorCalibrationMessage class represents a FIT ThreeDSensorCalibrationMessage data message...
The TimestampCorrelationMessage class represents a FIT TimestampCorrelationMessage data message.
The TotalsMessage class represents a FIT TotalsMessage data message.
Definition: totalsmessage.h:39
The TrainingFileMessage class represents a FIT TrainingFileMessage data message.
The UserProfileMessage class represents a FIT UserProfileMessage data message.
The VideoClipMessage class represents a FIT VideoClipMessage data message.
The VideoDescriptionMessage class represents a FIT VideoDescriptionMessage data message.
The VideoFrameMessage class represents a FIT VideoFrameMessage data message.
The VideoMessage class represents a FIT VideoMessage data message.
Definition: videomessage.h:39
The VideoTitleMessage class represents a FIT VideoTitleMessage data message.
The WatchfaceSettingsMessage class represents a FIT WatchfaceSettingsMessage data message.
The WeatherAlertMessage class represents a FIT WeatherAlertMessage data message.
The WeatherConditionsMessage class represents a FIT WeatherConditionsMessage data message.
The WeightScaleMessage class represents a FIT WeightScaleMessage data message.
The WorkoutMessage class represents a FIT WorkoutMessage data message.
The WorkoutSessionMessage class represents a FIT WorkoutSessionMessage data message.
The WorkoutStepMessage class represents a FIT WorkoutStepMessage data message.
The ZonesTargetMessage class represents a FIT ZonesTargetMessage data message.
Declares the ClimbProMessage class.
Declares the ConnectivityMessage class.
Declares the CourseMessage class.
Declares the CoursePointMessage class.
Declares the DeveloperDataIdMessage class.
Declares the DeviceInfoMessage class.
Declares the DeviceSettingsMessage class.
Declares the DiveAlarmMessage class.
Declares the DiveGasMessage class.
Declares the DiveSettingsMessage class.
Declares the DiveSummaryMessage class.
Declares the EventMessage class.
Declares the ExdDataConceptConfigurationMessage class.
Declares the ExdDataFieldConfigurationMessage class.
Declares the ExdScreenConfigurationMessage class.
Declares the ExerciseTitleMessage class.
Declares the FieldCapabilitiesMessage class.
Declares the FieldDescriptionMessage class.
Declares the FileCapabilitiesMessage class.
Declares the FileCreatorMessage class.
Declares the FileIdMessage class.
Declares the GoalMessage class.
Declares the GpsMetadataMessage class.
Declares the GyroscopeDataMessage class.
Declares the HrMessage class.
Declares the HrmProfileMessage class.
Declares the HrvMessage class.
Declares the HrZoneMessage class.
Declares the JumpMessage class.
Declares the LapMessage class.
Declares the LengthMessage class.
Declares the MagnetometerDataMessage class.
Declares the MemoGlobMessage class.
Declares the MesgCapabilitiesMessage class.
Declares the MetZoneMessage class.
Declares the MonitoringInfoMessage class.
Declares the MonitoringMessage class.
Declares the NmeaSentenceMessage class.
Declares the ObdiiDataMessage class.
Declares the OhrSettingsMessage class.
Declares the OneDSensorCalibrationMessage class.
Declares the PowerZoneMessage class.
Declares the RecordMessage class.
Declares the ScheduleMessage class.
Declares the SdmProfileMessage class.
Declares the SegmentFileMessage class.
Declares the SegmentIdMessage class.
Declares the SegmentLapMessage class.
Declares the SegmentLeaderboardEntryMessage class.
Declares the SegmentPointMessage class.
Declares the SessionMessage class.
Declares the SetMessage class.
Declares the SlaveDeviceMessage class.
Declares the SoftwareMessage class.
Declares the SpeedZoneMessage class.
Declares the SportMessage class.
Declares the StressLevelMessage class.
Data Message definition.
Definition: types_p.h:83
MesgNum globalMessageNumber
FIT Global Message Number the Data Message represents.
Definition: types_p.h:85
Declares the ThreeDSensorCalibrationMessage class.
Declares the TimestampCorrelationMessage class.
Declares the TotalsMessage class.
Declares the TrainingFileMessage class.
@ MfgRangeMin
0xFF00 - 0xFFFE reserved for manufacturer specific messages
@ MfgRangeMax
0xFF00 - 0xFFFE reserved for manufacturer specific messages
Declares the UserProfileMessage class.
Declares the VideoClipMessage class.
Declares the VideoDescriptionMessage class.
Declares the VideoFrameMessage class.
Declares the VideoMessage class.
Declares the VideoTitleMessage class.
Declares the WatchfaceSettingsMessage class.
Declares the WeatherAlertMessage class.
Declares the WeatherConditionsMessage class.
Declares the WeightScaleMessage class.
Declares the WorkoutMessage class.
Declares the WorkoutSessionMessage class.
Declares the WorkoutStepMessage class.
Declares the ZonesTargetMessage class.