Cosmetics
[GPXSee.git] / src / fitparser.h
blob8da65c63eb81b6cae01f5b3ff49e2ecee105577e
1 #ifndef FITPARSER_H
2 #define FITPARSER_H
4 #include "parser.h"
6 class FITParser : public Parser
8 public:
9 FITParser(QList<TrackData> &tracks, QList<RouteData> &routes,
10 QList<Waypoint> &waypoints);
11 ~FITParser() {}
13 bool loadFile(QFile *file);
14 QString errorString() const {return _errorString;}
15 int errorLine() const {return 0;}
17 private:
18 typedef struct {
19 quint8 headerSize;
20 quint8 protocolVersion;
21 quint16 profileVersion;
22 quint32 dataSize;
23 quint32 magic;
24 } FileHeader;
26 typedef struct {
27 quint8 id;
28 quint8 size;
29 quint8 type;
30 } Field;
32 typedef struct {
33 quint8 endian;
34 quint16 globalId;
35 quint8 numFields;
36 Field *fields;
37 quint8 numDevFields;
38 Field *devFields;
39 } MessageDefinition;
42 void warning(const char *text) const;
43 void clearDefinitions();
45 bool readData(char *data, size_t size);
46 template<class T> bool readValue(T &val);
47 bool skipValue(size_t size);
49 bool parseHeader();
50 bool parseRecord();
51 bool parseDefinitionMessage(quint8 header);
52 bool parseCompressedMessage(quint8 header);
53 bool parseDataMessage(quint8 header);
54 bool parseData(MessageDefinition *def, quint8 offset);
55 bool readField(Field *f, quint32 &val);
57 QIODevice *_device;
58 QString _errorString;
60 quint32 _len;
61 quint8 _endian;
62 quint32 _timestamp;
63 MessageDefinition _defs[16];
66 #endif // FITPARSER_H