QtFit  0.1
Internal library development documentation
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
videoframemessage.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 VideoFrameMessage, and VideoFrameMessagePrivate classes.
28  */
29 
30 #include "videoframemessage.h"
31 #include "videoframemessage_p.h"
32 
33 #include <QDebug>
34 #include <QtEndian>
35 
37 
38 /*!
39  * \class VideoFrameMessage
40  *
41  * The VideoFrameMessage class represents a FIT VideoFrameMessage data message.
42  *
43  * \sa DataMessage
44  */
45 
46 /*!
47  * Constructs a VideoFrameMessage 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 VideoFrameMessage object with private implementation \a d.
61  *
62  * \param d Pointer to private implementation.
63  */
65 {
66 
67 }
68 
69 /*!
70  * Returns the VideoFrameMessage data message's \c timestamp field's current value.
71  *
72  * Whole second part of the timestamp
73  *
74  * \return the \c timestamp field value.
75  */
77 {
78  Q_D(const VideoFrameMessage);
79  return d->timestamp;
80 }
81 
82 /*!
83  * Returns the VideoFrameMessage data message's \c timestampMs field's current value.
84  *
85  * Millisecond part of the timestamp.
86  *
87  * \return the \c timestampMs field value.
88  */
90 {
91  Q_D(const VideoFrameMessage);
92  return d->timestampMs;
93 }
94 
95 /*!
96  * Returns the VideoFrameMessage data message's \c frameNumber field's current value.
97  *
98  * Number of the frame that the timestamp and timestamp_ms correlate to
99  *
100  * \return the \c frameNumber field value.
101  */
103 {
104  Q_D(const VideoFrameMessage);
105  return d->frameNumber;
106 }
107 
108 /*!
109  * Sets the \c timestamp field to \a timestamp.
110  *
111  * \param timestamp The field value to set.
112  */
114 {
115  Q_D(VideoFrameMessage);
116  d->timestamp = timestamp;
117 }
118 /*!
119  * Sets the \c timestampMs field to \a timestampMs.
120  *
121  * \param timestampMs The field value to set.
122  */
123 void VideoFrameMessage::setTimestampMs(const quint16 timestampMs)
124 {
125  Q_D(VideoFrameMessage);
126  d->timestampMs = timestampMs;
127 }
128 /*!
129  * Sets the \c frameNumber field to \a frameNumber.
130  *
131  * \param frameNumber The field value to set.
132  */
133 void VideoFrameMessage::setFrameNumber(const quint32 frameNumber)
134 {
135  Q_D(VideoFrameMessage);
136  d->frameNumber = frameNumber;
137 }
138 
139 /// \cond internal
140 
141 /*!
142  * \internal
143  *
144  * \class VideoFrameMessagePrivate
145  *
146  * The VideoFrameMessagePrivate class provides private implementation for the VideoFrameMessage.
147  *
148  * \sa VideoFrameMessage
149  */
150 
151 /*!
152  * \internal
153  *
154  * Constructs a VideoFrameMessagePrivate object with public implementation \a q.
155  *
156  * \param q Pointer to public implementaton.
157  */
158 VideoFrameMessagePrivate::VideoFrameMessagePrivate(VideoFrameMessage * const q)
160  , timestamp(static_cast<DateTime>(-1))
161  , timestampMs(0xFFFF)
162  , frameNumber(0xFFFFFFFF)
163 {
164  globalMessageNumber = MesgNum::VideoFrame;
165 }
166 
167 /*!
168  * \internal
169  *
170  * Destroys the VideoFrameMessagePrivate object.
171  */
173 {
174 
175 }
176 
178  const int fieldId, const QByteArray &data, const FitBaseType baseType, const bool bigEndian)
179 {
180  switch (fieldId) {
181  case 253: // See Profile.xlsx::Messages:video_frame.timestamp
182  if (!verify(data, baseType, 4, FitBaseType::Uint32, "video_frame.timestamp")) return false;
183  this->timestamp = static_cast<DateTime>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
184  break;
185  case 0: // See Profile.xlsx::Messages:video_frame.timestampMs
186  if (!verify(data, baseType, 2, FitBaseType::Uint16, "video_frame.timestampMs")) return false;
187  this->timestampMs = static_cast<quint16>(bigEndian ? qFromBigEndian<quint16>(data) : qFromLittleEndian<quint16>(data));
188  break;
189  case 1: // See Profile.xlsx::Messages:video_frame.frameNumber
190  if (!verify(data, baseType, 4, FitBaseType::Uint32, "video_frame.frameNumber")) return false;
191  this->frameNumber = static_cast<quint32>(bigEndian ? qFromBigEndian<quint32>(data) : qFromLittleEndian<quint32>(data));
192  break;
193  default:
194  qWarning() << "ignoring unknown video_frame message field number" << fieldId << bigEndian;
195  // Fall through to return true, as its still 'safe' to continue parsing data messages.
196  }
197  return true;
198 }
199 
200 /// \endcond
201 
#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
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.
quint16 timestampMs
The VideoFrameMessage FIT message's timestampMs field.
DateTime timestamp
The VideoFrameMessage FIT message's timestamp field.
bool setField(const int fieldId, const QByteArray &data, const FitBaseType baseType, const bool bigEndian) override
quint32 frameNumber
The VideoFrameMessage FIT message's frameNumber field.
The VideoFrameMessage class represents a FIT VideoFrameMessage data message.
quint16 timestampMs() const
Returns the VideoFrameMessage data message's timestampMs field's current value.
VideoFrameMessage()
Constructs a VideoFrameMessage object.
DateTime timestamp() const
Returns the VideoFrameMessage data message's timestamp field's current value.
void setTimestampMs(const quint16 timestampMs)
Sets the timestampMs field to timestampMs.
void setTimestamp(const DateTime timestamp)
Sets the timestamp field to timestamp.
void setFrameNumber(const quint32 frameNumber)
Sets the frameNumber field to frameNumber.
quint32 frameNumber() const
Returns the VideoFrameMessage data message's frameNumber field's current value.
FitBaseType
Garmin FIT FitBaseType type.
Definition: types.h:3388
DateTime
Seconds since UTC 00:00 Dec 31 1989.
Definition: types.h:237
Declares the VideoFrameMessage class.
Declares the VideoFrameMessagePrivate class.