QtFit  0.1
Internal library development documentation
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
bloodpressuremessage.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  * Defines the BloodPressureMessage, and BloodPressureMessagePrivate classes.
28  */
29 
30 #include "bloodpressuremessage.h"
31 #include "bloodpressuremessage_p.h"
32 
33 #include <QDebug>
34 #include <QtEndian>
35 
37 
38 /*!
39  * \class BloodPressureMessage
40  *
41  * The BloodPressureMessage class represents a FIT BloodPressureMessage data message.
42  *
43  * \sa DataMessage
44  */
45 
46 /*!
47  * Constructs a BloodPressureMessage object.
48  *
49  * Typically, instances of this class will be returned by FitStreamReader::readNext, but this
50  * constructor may be used, along with the relevant setter methods, to create a valid message.
51  */
53 {
54 
55 }
56 
57 /*!
58  * \internal
59  *
60  * Constructs a BloodPressureMessage object with private implementation \a d.
61  *
62  * \param d Pointer to private implementation.
63  */
65 {
66 
67 }
68 
69 /*!
70  * Returns the BloodPressureMessage data message's \c timestamp field's current value.
71  *
72  * \return the \c timestamp field value.
73  */
75 {
76  Q_D(const BloodPressureMessage);
77  return d->timestamp;
78 }
79 
80 /*!
81  * Returns the BloodPressureMessage data message's \c systolicPressure field's current value.
82  *
83  * \return the \c systolicPressure field value.
84  */
86 {
87  Q_D(const BloodPressureMessage);
88  return d->systolicPressure;
89 }
90 
91 /*!
92  * Returns the BloodPressureMessage data message's \c diastolicPressure field's current value.
93  *
94  * \return the \c diastolicPressure field value.
95  */
97 {
98  Q_D(const BloodPressureMessage);
99  return d->diastolicPressure;
100 }
101 
102 /*!
103  * Returns the BloodPressureMessage data message's \c meanArterialPressure field's current value.
104  *
105  * \return the \c meanArterialPressure field value.
106  */
108 {
109  Q_D(const BloodPressureMessage);
110  return d->meanArterialPressure;
111 }
112 
113 /*!
114  * Returns the BloodPressureMessage data message's \c map3SampleMean field's current value.
115  *
116  * \return the \c map3SampleMean field value.
117  */
119 {
120  Q_D(const BloodPressureMessage);
121  return d->map3SampleMean;
122 }
123 
124 /*!
125  * Returns the BloodPressureMessage data message's \c mapMorningValues field's current value.
126  *
127  * \return the \c mapMorningValues field value.
128  */
130 {
131  Q_D(const BloodPressureMessage);
132  return d->mapMorningValues;
133 }
134 
135 /*!
136  * Returns the BloodPressureMessage data message's \c mapEveningValues field's current value.
137  *
138  * \return the \c mapEveningValues field value.
139  */
141 {
142  Q_D(const BloodPressureMessage);
143  return d->mapEveningValues;
144 }
145 
146 /*!
147  * Returns the BloodPressureMessage data message's \c heartRate field's current value.
148  *
149  * \return the \c heartRate field value.
150  */
152 {
153  Q_D(const BloodPressureMessage);
154  return d->heartRate;
155 }
156 
157 /*!
158  * Returns the BloodPressureMessage data message's \c heartRateType field's current value.
159  *
160  * \return the \c heartRateType field value.
161  */
163 {
164  Q_D(const BloodPressureMessage);
165  return d->heartRateType;
166 }
167 
168 /*!
169  * Returns the BloodPressureMessage data message's \c status field's current value.
170  *
171  * \return the \c status field value.
172  */
174 {
175  Q_D(const BloodPressureMessage);
176  return d->status;
177 }
178 
179 /*!
180  * Returns the BloodPressureMessage data message's \c userProfileIndex field's current value.
181  *
182  * Associates this blood pressure message to a user. This corresponds to the index of the user
183  * profile message in the blood pressure file.
184  *
185  * \return the \c userProfileIndex field value.
186  */
188 {
189  Q_D(const BloodPressureMessage);
190  return d->userProfileIndex;
191 }
192 
193 /*!
194  * Sets the \c timestamp field to \a timestamp.
195  *
196  * \param timestamp The field value to set.
197  */
199 {
201  d->timestamp = timestamp;
202 }
203 /*!
204  * Sets the \c systolicPressure field to \a systolicPressure.
205  *
206  * \param systolicPressure The field value to set.
207  */
208 void BloodPressureMessage::setSystolicPressure(const quint16 systolicPressure)
209 {
211  d->systolicPressure = systolicPressure;
212 }
213 /*!
214  * Sets the \c diastolicPressure field to \a diastolicPressure.
215  *
216  * \param diastolicPressure The field value to set.
217  */
218 void BloodPressureMessage::setDiastolicPressure(const quint16 diastolicPressure)
219 {
221  d->diastolicPressure = diastolicPressure;
222 }
223 /*!
224  * Sets the \c meanArterialPressure field to \a meanArterialPressure.
225  *
226  * \param meanArterialPressure The field value to set.
227  */
228 void BloodPressureMessage::setMeanArterialPressure(const quint16 meanArterialPressure)
229 {
231  d->meanArterialPressure = meanArterialPressure;
232 }
233 /*!
234  * Sets the \c map3SampleMean field to \a map3SampleMean.
235  *
236  * \param map3SampleMean The field value to set.
237  */
238 void BloodPressureMessage::setMap3SampleMean(const quint16 map3SampleMean)
239 {
241  d->map3SampleMean = map3SampleMean;
242 }
243 /*!
244  * Sets the \c mapMorningValues field to \a mapMorningValues.
245  *
246  * \param mapMorningValues The field value to set.
247  */
248 void BloodPressureMessage::setMapMorningValues(const quint16 mapMorningValues)
249 {
251  d->mapMorningValues = mapMorningValues;
252 }
253 /*!
254  * Sets the \c mapEveningValues field to \a mapEveningValues.
255  *
256  * \param mapEveningValues The field value to set.
257  */
258 void BloodPressureMessage::setMapEveningValues(const quint16 mapEveningValues)
259 {
261  d->mapEveningValues = mapEveningValues;
262 }
263 /*!
264  * Sets the \c heartRate field to \a heartRate.
265  *
266  * \param heartRate The field value to set.
267  */
268 void BloodPressureMessage::setHeartRate(const quint8 heartRate)
269 {
271  d->heartRate = heartRate;
272 }
273 /*!
274  * Sets the \c heartRateType field to \a heartRateType.
275  *
276  * \param heartRateType The field value to set.
277  */
279 {
281  d->heartRateType = heartRateType;
282 }
283 /*!
284  * Sets the \c status field to \a status.
285  *
286  * \param status The field value to set.
287  */
289 {
291  d->status = status;
292 }
293 /*!
294  * Sets the \c userProfileIndex field to \a userProfileIndex.
295  *
296  * \param userProfileIndex The field value to set.
297  */
299 {
301  d->userProfileIndex = userProfileIndex;
302 }
303 
304 /// \cond internal
305 
306 /*!
307  * \internal
308  *
309  * \class BloodPressureMessagePrivate
310  *
311  * The BloodPressureMessagePrivate class provides private implementation for the BloodPressureMessage.
312  *
313  * \sa BloodPressureMessage
314  */
315 
316 /*!
317  * \internal
318  *
319  * Constructs a BloodPressureMessagePrivate object with public implementation \a q.
320  *
321  * \param q Pointer to public implementaton.
322  */
323 BloodPressureMessagePrivate::BloodPressureMessagePrivate(BloodPressureMessage * const q)
325  , timestamp(static_cast<DateTime>(-1))
326  , systolicPressure(0xFFFF)
327  , diastolicPressure(0xFFFF)
328  , meanArterialPressure(0xFFFF)
329  , map3SampleMean(0xFFFF)
330  , mapMorningValues(0xFFFF)
331  , mapEveningValues(0xFFFF)
332  , heartRate(0xFF)
333  , heartRateType(static_cast<HrType>(-1))
334  , status(static_cast<BpStatus>(-1))
335  , userProfileIndex(static_cast<MessageIndex>(-1))
336 {
337  globalMessageNumber = MesgNum::BloodPressure;
338 }
339 
340 /*!
341  * \internal
342  *
343  * Destroys the BloodPressureMessagePrivate object.
344  */
346 {
347 
348 }
349 
351  const int fieldId, const QByteArray &data, const FitBaseType baseType, const bool bigEndian)
352 {
353  switch (fieldId) {
354  case 253: // See Profile.xlsx::Messages:blood_pressure.timestamp
355  if (!verify(data, baseType, 4, FitBaseType::Uint32, "blood_pressure.timestamp")) return false;
356  this->timestamp = static_cast<DateTime>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
357  break;
358  case 0: // See Profile.xlsx::Messages:blood_pressure.systolicPressure
359  if (!verify(data, baseType, 2, FitBaseType::Uint16, "blood_pressure.systolicPressure")) return false;
360  this->systolicPressure = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
361  break;
362  case 1: // See Profile.xlsx::Messages:blood_pressure.diastolicPressure
363  if (!verify(data, baseType, 2, FitBaseType::Uint16, "blood_pressure.diastolicPressure")) return false;
364  this->diastolicPressure = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
365  break;
366  case 2: // See Profile.xlsx::Messages:blood_pressure.meanArterialPressure
367  if (!verify(data, baseType, 2, FitBaseType::Uint16, "blood_pressure.meanArterialPressure")) return false;
368  this->meanArterialPressure = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
369  break;
370  case 3: // See Profile.xlsx::Messages:blood_pressure.map3SampleMean
371  if (!verify(data, baseType, 2, FitBaseType::Uint16, "blood_pressure.map3SampleMean")) return false;
372  this->map3SampleMean = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
373  break;
374  case 4: // See Profile.xlsx::Messages:blood_pressure.mapMorningValues
375  if (!verify(data, baseType, 2, FitBaseType::Uint16, "blood_pressure.mapMorningValues")) return false;
376  this->mapMorningValues = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
377  break;
378  case 5: // See Profile.xlsx::Messages:blood_pressure.mapEveningValues
379  if (!verify(data, baseType, 2, FitBaseType::Uint16, "blood_pressure.mapEveningValues")) return false;
380  this->mapEveningValues = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
381  break;
382  case 6: // See Profile.xlsx::Messages:blood_pressure.heartRate
383  if (!verify(data, baseType, 1, FitBaseType::Uint8, "blood_pressure.heartRate")) return false;
384  this->heartRate = static_cast<quint8>(data.at(0));
385  break;
386  case 7: // See Profile.xlsx::Messages:blood_pressure.heartRateType
387  if (!verify(data, baseType, 1, FitBaseType::Enum, "blood_pressure.heartRateType")) return false;
388  this->heartRateType = static_cast<HrType>(data.at(0));
389  break;
390  case 8: // See Profile.xlsx::Messages:blood_pressure.status
391  if (!verify(data, baseType, 1, FitBaseType::Enum, "blood_pressure.status")) return false;
392  this->status = static_cast<BpStatus>(data.at(0));
393  break;
394  case 9: // See Profile.xlsx::Messages:blood_pressure.userProfileIndex
395  if (!verify(data, baseType, 2, FitBaseType::Uint16, "blood_pressure.userProfileIndex")) return false;
396  this->userProfileIndex = static_cast<MessageIndex>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
397  break;
398  default:
399  qWarning() << "ignoring unknown blood_pressure message field number" << fieldId << bigEndian;
400  // Fall through to return true, as its still 'safe' to continue parsing data messages.
401  }
402  return true;
403 }
404 
405 /// \endcond
406 
#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 BloodPressureMessage class.
Declares the BloodPressureMessagePrivate class.
MesgNum globalMessageNumber
FIT Globla Message Number for this FIT Data Message.
bool verify(const QByteArray &data, const FitBaseType actualType, const int expectedSize, const FitBaseType expectedType, const char *messageFieldName)
The AbstractDataMessage class is the polymorphic base class for all FIT Data Message classes.
DateTime timestamp
The BloodPressureMessage FIT message's timestamp field.
quint16 mapEveningValues
The BloodPressureMessage FIT message's mapEveningValues field.
quint16 meanArterialPressure
The BloodPressureMessage FIT message's meanArterialPressure field.
quint16 map3SampleMean
The BloodPressureMessage FIT message's map3SampleMean field.
bool setField(const int fieldId, const QByteArray &data, const FitBaseType baseType, const bool bigEndian) override
MessageIndex userProfileIndex
The BloodPressureMessage FIT message's userProfileIndex field.
quint16 mapMorningValues
The BloodPressureMessage FIT message's mapMorningValues field.
quint8 heartRate
The BloodPressureMessage FIT message's heartRate field.
BpStatus status
The BloodPressureMessage FIT message's status field.
quint16 diastolicPressure
The BloodPressureMessage FIT message's diastolicPressure field.
quint16 systolicPressure
The BloodPressureMessage FIT message's systolicPressure field.
HrType heartRateType
The BloodPressureMessage FIT message's heartRateType field.
The BloodPressureMessage class represents a FIT BloodPressureMessage data message.
quint16 meanArterialPressure() const
Returns the BloodPressureMessage data message's meanArterialPressure field's current value.
void setStatus(const BpStatus status)
Sets the status field to status.
quint16 mapEveningValues() const
Returns the BloodPressureMessage data message's mapEveningValues field's current value.
DateTime timestamp() const
Returns the BloodPressureMessage data message's timestamp field's current value.
MessageIndex userProfileIndex() const
Returns the BloodPressureMessage data message's userProfileIndex field's current value.
quint16 map3SampleMean() const
Returns the BloodPressureMessage data message's map3SampleMean field's current value.
quint16 diastolicPressure() const
Returns the BloodPressureMessage data message's diastolicPressure field's current value.
HrType heartRateType() const
Returns the BloodPressureMessage data message's heartRateType field's current value.
void setSystolicPressure(const quint16 systolicPressure)
Sets the systolicPressure field to systolicPressure.
void setUserProfileIndex(const MessageIndex userProfileIndex)
Sets the userProfileIndex field to userProfileIndex.
quint8 heartRate() const
Returns the BloodPressureMessage data message's heartRate field's current value.
void setMap3SampleMean(const quint16 map3SampleMean)
Sets the map3SampleMean field to map3SampleMean.
void setDiastolicPressure(const quint16 diastolicPressure)
Sets the diastolicPressure field to diastolicPressure.
void setHeartRate(const quint8 heartRate)
Sets the heartRate field to heartRate.
void setTimestamp(const DateTime timestamp)
Sets the timestamp field to timestamp.
void setHeartRateType(const HrType heartRateType)
Sets the heartRateType field to heartRateType.
void setMapEveningValues(const quint16 mapEveningValues)
Sets the mapEveningValues field to mapEveningValues.
void setMapMorningValues(const quint16 mapMorningValues)
Sets the mapMorningValues field to mapMorningValues.
quint16 mapMorningValues() const
Returns the BloodPressureMessage data message's mapMorningValues field's current value.
BpStatus status() const
Returns the BloodPressureMessage data message's status field's current value.
void setMeanArterialPressure(const quint16 meanArterialPressure)
Sets the meanArterialPressure field to meanArterialPressure.
quint16 systolicPressure() const
Returns the BloodPressureMessage data message's systolicPressure field's current value.
BloodPressureMessage()
Constructs a BloodPressureMessage object.
HrType
Garmin FIT HrType type.
Definition: types.h:2151
FitBaseType
Garmin FIT FitBaseType type.
Definition: types.h:3388
MessageIndex
Garmin FIT MessageIndex type.
Definition: types.h:263
BpStatus
Garmin FIT BpStatus type.
Definition: types.h:2227
DateTime
Seconds since UTC 00:00 Dec 31 1989.
Definition: types.h:237